@vkontakte/vkui 6.6.0 → 6.7.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 (551) hide show
  1. package/dist/cjs/components/Alert/Alert.js +1 -1
  2. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  3. package/dist/cjs/components/AspectRatio/AspectRatio.js +1 -1
  4. package/dist/cjs/components/AspectRatio/AspectRatio.js.map +1 -1
  5. package/dist/cjs/components/Badge/Badge.js +1 -1
  6. package/dist/cjs/components/Badge/Badge.js.map +1 -1
  7. package/dist/cjs/components/Button/Button.js +1 -1
  8. package/dist/cjs/components/Button/Button.js.map +1 -1
  9. package/dist/cjs/components/Calendar/Calendar.d.ts +2 -2
  10. package/dist/cjs/components/Calendar/Calendar.d.ts.map +1 -1
  11. package/dist/cjs/components/Calendar/Calendar.js +4 -2
  12. package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
  13. package/dist/cjs/components/CalendarDay/CalendarDay.d.ts +1 -0
  14. package/dist/cjs/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  15. package/dist/cjs/components/CalendarDay/CalendarDay.js +26 -14
  16. package/dist/cjs/components/CalendarDay/CalendarDay.js.map +1 -1
  17. package/dist/cjs/components/CalendarDays/CalendarDays.d.ts +3 -3
  18. package/dist/cjs/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  19. package/dist/cjs/components/CalendarDays/CalendarDays.js +5 -3
  20. package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
  21. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +2 -2
  22. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  23. package/dist/cjs/components/CalendarRange/CalendarRange.js +5 -2
  24. package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
  25. package/dist/cjs/components/CardGrid/CardGrid.js +1 -1
  26. package/dist/cjs/components/CardGrid/CardGrid.js.map +1 -1
  27. package/dist/cjs/components/Clickable/Clickable.d.ts +1 -0
  28. package/dist/cjs/components/Clickable/Clickable.d.ts.map +1 -1
  29. package/dist/cjs/components/Clickable/Clickable.js +21 -6
  30. package/dist/cjs/components/Clickable/Clickable.js.map +1 -1
  31. package/dist/cjs/components/Clickable/useState.d.ts +39 -3
  32. package/dist/cjs/components/Clickable/useState.d.ts.map +1 -1
  33. package/dist/cjs/components/Clickable/useState.js +110 -37
  34. package/dist/cjs/components/Clickable/useState.js.map +1 -1
  35. package/dist/cjs/components/Clickable/useStateWithDelay.d.ts +19 -1
  36. package/dist/cjs/components/Clickable/useStateWithDelay.d.ts.map +1 -1
  37. package/dist/cjs/components/Clickable/useStateWithDelay.js +20 -4
  38. package/dist/cjs/components/Clickable/useStateWithDelay.js.map +1 -1
  39. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +3 -2
  40. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  41. package/dist/cjs/components/CustomSelect/CustomSelect.js +7 -7
  42. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  43. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +1 -1
  44. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  45. package/dist/cjs/components/DateInput/DateInput.d.ts +2 -2
  46. package/dist/cjs/components/DateInput/DateInput.d.ts.map +1 -1
  47. package/dist/cjs/components/DateInput/DateInput.js +5 -3
  48. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  49. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  50. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  51. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +6 -4
  52. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  53. package/dist/cjs/components/FormField/FormField.js +1 -1
  54. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  55. package/dist/cjs/components/FormItem/FormItem.js +1 -1
  56. package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
  57. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -1
  58. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  59. package/dist/cjs/components/Input/Input.js +1 -1
  60. package/dist/cjs/components/Input/Input.js.map +1 -1
  61. package/dist/cjs/components/ModalRoot/ModalRoot.js +4 -14
  62. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  63. package/dist/cjs/components/ModalRoot/ModalRootDesktop.d.ts.map +1 -1
  64. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +9 -1
  65. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  66. package/dist/cjs/components/NativeSelect/NativeSelect.js +1 -1
  67. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  68. package/dist/cjs/components/Panel/Panel.js +2 -2
  69. package/dist/cjs/components/Panel/Panel.js.map +1 -1
  70. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
  71. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
  72. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  73. package/dist/cjs/components/RichCell/RichCell.js +1 -1
  74. package/dist/cjs/components/RichCell/RichCell.js.map +1 -1
  75. package/dist/cjs/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
  76. package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js +4 -2
  77. package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  78. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +1 -1
  79. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
  80. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.js +23 -6
  81. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
  82. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerLoader.d.ts.map +1 -1
  83. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerLoader.js +8 -3
  84. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerLoader.js.map +1 -1
  85. package/dist/cjs/components/ScreenSpinner/context.d.ts +1 -0
  86. package/dist/cjs/components/ScreenSpinner/context.d.ts.map +1 -1
  87. package/dist/cjs/components/ScreenSpinner/context.js +2 -1
  88. package/dist/cjs/components/ScreenSpinner/context.js.map +1 -1
  89. package/dist/cjs/components/ScreenSpinner/types.d.ts +5 -0
  90. package/dist/cjs/components/ScreenSpinner/types.d.ts.map +1 -1
  91. package/dist/cjs/components/Search/Search.d.ts.map +1 -1
  92. package/dist/cjs/components/Search/Search.js +16 -11
  93. package/dist/cjs/components/Search/Search.js.map +1 -1
  94. package/dist/cjs/components/SegmentedControl/SegmentedControl.js +1 -1
  95. package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
  96. package/dist/cjs/components/Select/Select.d.ts.map +1 -1
  97. package/dist/cjs/components/Select/Select.js +5 -1
  98. package/dist/cjs/components/Select/Select.js.map +1 -1
  99. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +1 -1
  100. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  101. package/dist/cjs/components/SimpleCell/SimpleCell.js +1 -1
  102. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  103. package/dist/cjs/components/Skeleton/Skeleton.d.ts +1 -1
  104. package/dist/cjs/components/Skeleton/Skeleton.d.ts.map +1 -1
  105. package/dist/cjs/components/Skeleton/Skeleton.js +85 -4
  106. package/dist/cjs/components/Skeleton/Skeleton.js.map +1 -1
  107. package/dist/cjs/components/Slider/Slider.js +1 -1
  108. package/dist/cjs/components/Slider/Slider.js.map +1 -1
  109. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js +1 -1
  110. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  111. package/dist/cjs/components/TabsItem/TabsItem.js +1 -1
  112. package/dist/cjs/components/TabsItem/TabsItem.js.map +1 -1
  113. package/dist/cjs/components/Textarea/Textarea.js +1 -1
  114. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  115. package/dist/cjs/components/ToolButton/ToolButton.d.ts +2 -1
  116. package/dist/cjs/components/ToolButton/ToolButton.d.ts.map +1 -1
  117. package/dist/cjs/components/ToolButton/ToolButton.js +20 -4
  118. package/dist/cjs/components/ToolButton/ToolButton.js.map +1 -1
  119. package/dist/cjs/components/Typography/Caption/Caption.d.ts.map +1 -1
  120. package/dist/cjs/components/Typography/Caption/Caption.js +7 -1
  121. package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
  122. package/dist/cjs/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
  123. package/dist/cjs/components/Typography/DisplayTitle/DisplayTitle.js +7 -1
  124. package/dist/cjs/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
  125. package/dist/cjs/components/Typography/Footnote/Footnote.d.ts.map +1 -1
  126. package/dist/cjs/components/Typography/Footnote/Footnote.js +7 -1
  127. package/dist/cjs/components/Typography/Footnote/Footnote.js.map +1 -1
  128. package/dist/cjs/components/Typography/Headline/Headline.d.ts +1 -1
  129. package/dist/cjs/components/Typography/Headline/Headline.d.ts.map +1 -1
  130. package/dist/cjs/components/Typography/Headline/Headline.js +2 -4
  131. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  132. package/dist/cjs/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
  133. package/dist/cjs/components/Typography/Paragraph/Paragraph.js +7 -1
  134. package/dist/cjs/components/Typography/Paragraph/Paragraph.js.map +1 -1
  135. package/dist/cjs/components/Typography/Subhead/Subhead.js +1 -1
  136. package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
  137. package/dist/cjs/components/Typography/Text/Text.js +1 -1
  138. package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
  139. package/dist/cjs/components/Typography/Title/Title.d.ts.map +1 -1
  140. package/dist/cjs/components/Typography/Title/Title.js +7 -1
  141. package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
  142. package/dist/cjs/components/Typography/Typography.d.ts +7 -1
  143. package/dist/cjs/components/Typography/Typography.d.ts.map +1 -1
  144. package/dist/cjs/components/Typography/Typography.js +4 -2
  145. package/dist/cjs/components/Typography/Typography.js.map +1 -1
  146. package/dist/cjs/components/View/ViewInfinite.js +5 -16
  147. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  148. package/dist/cjs/components/WriteBar/WriteBar.js +3 -1
  149. package/dist/cjs/components/WriteBar/WriteBar.js.map +1 -1
  150. package/dist/cjs/hooks/useAdaptivityConditionalRender/constants.js +4 -4
  151. package/dist/cjs/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
  152. package/dist/cjs/hooks/useWaitTransitionFinish.d.ts +1 -1
  153. package/dist/cjs/hooks/useWaitTransitionFinish.d.ts.map +1 -1
  154. package/dist/cjs/hooks/useWaitTransitionFinish.js.map +1 -1
  155. package/dist/components/Alert/Alert.js +1 -1
  156. package/dist/components/Alert/Alert.js.map +1 -1
  157. package/dist/components/AspectRatio/AspectRatio.js +1 -1
  158. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  159. package/dist/components/Badge/Badge.js +1 -1
  160. package/dist/components/Badge/Badge.js.map +1 -1
  161. package/dist/components/Button/Button.js +1 -1
  162. package/dist/components/Button/Button.js.map +1 -1
  163. package/dist/components/Calendar/Calendar.d.ts +2 -2
  164. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  165. package/dist/components/Calendar/Calendar.js +4 -2
  166. package/dist/components/Calendar/Calendar.js.map +1 -1
  167. package/dist/components/CalendarDay/CalendarDay.d.ts +1 -0
  168. package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  169. package/dist/components/CalendarDay/CalendarDay.js +26 -14
  170. package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
  171. package/dist/components/CalendarDays/CalendarDays.d.ts +3 -3
  172. package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  173. package/dist/components/CalendarDays/CalendarDays.js +5 -3
  174. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  175. package/dist/components/CalendarRange/CalendarRange.d.ts +2 -2
  176. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  177. package/dist/components/CalendarRange/CalendarRange.js +5 -2
  178. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  179. package/dist/components/CardGrid/CardGrid.js +1 -1
  180. package/dist/components/CardGrid/CardGrid.js.map +1 -1
  181. package/dist/components/Clickable/Clickable.d.ts +1 -0
  182. package/dist/components/Clickable/Clickable.d.ts.map +1 -1
  183. package/dist/components/Clickable/Clickable.js +21 -7
  184. package/dist/components/Clickable/Clickable.js.map +1 -1
  185. package/dist/components/Clickable/useState.d.ts +39 -3
  186. package/dist/components/Clickable/useState.d.ts.map +1 -1
  187. package/dist/components/Clickable/useState.js +110 -37
  188. package/dist/components/Clickable/useState.js.map +1 -1
  189. package/dist/components/Clickable/useStateWithDelay.d.ts +19 -1
  190. package/dist/components/Clickable/useStateWithDelay.d.ts.map +1 -1
  191. package/dist/components/Clickable/useStateWithDelay.js +38 -4
  192. package/dist/components/Clickable/useStateWithDelay.js.map +1 -1
  193. package/dist/components/CustomSelect/CustomSelect.d.ts +3 -2
  194. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  195. package/dist/components/CustomSelect/CustomSelect.js +7 -7
  196. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  197. package/dist/components/CustomSelectOption/CustomSelectOption.js +1 -1
  198. package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  199. package/dist/components/DateInput/DateInput.d.ts +2 -2
  200. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  201. package/dist/components/DateInput/DateInput.js +5 -3
  202. package/dist/components/DateInput/DateInput.js.map +1 -1
  203. package/dist/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  204. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  205. package/dist/components/DateRangeInput/DateRangeInput.js +6 -4
  206. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  207. package/dist/components/FormField/FormField.js +1 -1
  208. package/dist/components/FormField/FormField.js.map +1 -1
  209. package/dist/components/FormItem/FormItem.js +1 -1
  210. package/dist/components/FormItem/FormItem.js.map +1 -1
  211. package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -1
  212. package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  213. package/dist/components/Input/Input.js +1 -1
  214. package/dist/components/Input/Input.js.map +1 -1
  215. package/dist/components/ModalRoot/ModalRoot.js +4 -14
  216. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  217. package/dist/components/ModalRoot/ModalRootDesktop.d.ts.map +1 -1
  218. package/dist/components/ModalRoot/ModalRootDesktop.js +9 -1
  219. package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  220. package/dist/components/NativeSelect/NativeSelect.js +1 -1
  221. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  222. package/dist/components/Panel/Panel.js +2 -2
  223. package/dist/components/Panel/Panel.js.map +1 -1
  224. package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
  225. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
  226. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  227. package/dist/components/RichCell/RichCell.js +1 -1
  228. package/dist/components/RichCell/RichCell.js.map +1 -1
  229. package/dist/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
  230. package/dist/components/ScreenSpinner/ScreenSpinner.js +4 -2
  231. package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  232. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +1 -1
  233. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
  234. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js +25 -8
  235. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
  236. package/dist/components/ScreenSpinner/ScreenSpinnerLoader.d.ts.map +1 -1
  237. package/dist/components/ScreenSpinner/ScreenSpinnerLoader.js +8 -3
  238. package/dist/components/ScreenSpinner/ScreenSpinnerLoader.js.map +1 -1
  239. package/dist/components/ScreenSpinner/context.d.ts +1 -0
  240. package/dist/components/ScreenSpinner/context.d.ts.map +1 -1
  241. package/dist/components/ScreenSpinner/context.js +2 -1
  242. package/dist/components/ScreenSpinner/context.js.map +1 -1
  243. package/dist/components/ScreenSpinner/types.d.ts +5 -0
  244. package/dist/components/ScreenSpinner/types.d.ts.map +1 -1
  245. package/dist/components/ScreenSpinner/types.js.map +1 -1
  246. package/dist/components/Search/Search.d.ts.map +1 -1
  247. package/dist/components/Search/Search.js +17 -12
  248. package/dist/components/Search/Search.js.map +1 -1
  249. package/dist/components/SegmentedControl/SegmentedControl.js +1 -1
  250. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  251. package/dist/components/Select/Select.d.ts.map +1 -1
  252. package/dist/components/Select/Select.js +5 -1
  253. package/dist/components/Select/Select.js.map +1 -1
  254. package/dist/components/SelectMimicry/SelectMimicry.js +1 -1
  255. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  256. package/dist/components/SimpleCell/SimpleCell.js +1 -1
  257. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  258. package/dist/components/Skeleton/Skeleton.d.ts +1 -1
  259. package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
  260. package/dist/components/Skeleton/Skeleton.js +85 -4
  261. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  262. package/dist/components/Slider/Slider.js +1 -1
  263. package/dist/components/Slider/Slider.js.map +1 -1
  264. package/dist/components/SubnavigationButton/SubnavigationButton.js +1 -1
  265. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  266. package/dist/components/TabsItem/TabsItem.js +1 -1
  267. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  268. package/dist/components/Textarea/Textarea.js +1 -1
  269. package/dist/components/Textarea/Textarea.js.map +1 -1
  270. package/dist/components/ToolButton/ToolButton.d.ts +2 -1
  271. package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
  272. package/dist/components/ToolButton/ToolButton.js +9 -1
  273. package/dist/components/ToolButton/ToolButton.js.map +1 -1
  274. package/dist/components/Typography/Caption/Caption.d.ts.map +1 -1
  275. package/dist/components/Typography/Caption/Caption.js +7 -1
  276. package/dist/components/Typography/Caption/Caption.js.map +1 -1
  277. package/dist/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
  278. package/dist/components/Typography/DisplayTitle/DisplayTitle.js +7 -1
  279. package/dist/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
  280. package/dist/components/Typography/Footnote/Footnote.d.ts.map +1 -1
  281. package/dist/components/Typography/Footnote/Footnote.js +7 -1
  282. package/dist/components/Typography/Footnote/Footnote.js.map +1 -1
  283. package/dist/components/Typography/Headline/Headline.d.ts +1 -1
  284. package/dist/components/Typography/Headline/Headline.d.ts.map +1 -1
  285. package/dist/components/Typography/Headline/Headline.js +2 -4
  286. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  287. package/dist/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
  288. package/dist/components/Typography/Paragraph/Paragraph.js +7 -1
  289. package/dist/components/Typography/Paragraph/Paragraph.js.map +1 -1
  290. package/dist/components/Typography/Subhead/Subhead.js +1 -1
  291. package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
  292. package/dist/components/Typography/Text/Text.js +1 -1
  293. package/dist/components/Typography/Text/Text.js.map +1 -1
  294. package/dist/components/Typography/Title/Title.d.ts.map +1 -1
  295. package/dist/components/Typography/Title/Title.js +7 -1
  296. package/dist/components/Typography/Title/Title.js.map +1 -1
  297. package/dist/components/Typography/Typography.d.ts +7 -1
  298. package/dist/components/Typography/Typography.d.ts.map +1 -1
  299. package/dist/components/Typography/Typography.js +4 -2
  300. package/dist/components/Typography/Typography.js.map +1 -1
  301. package/dist/components/View/ViewInfinite.js +5 -16
  302. package/dist/components/View/ViewInfinite.js.map +1 -1
  303. package/dist/components/WriteBar/WriteBar.js +3 -1
  304. package/dist/components/WriteBar/WriteBar.js.map +1 -1
  305. package/dist/components.css +313 -3
  306. package/dist/components.css.map +1 -1
  307. package/dist/components.js.tmp +647 -301
  308. package/dist/cssm/components/Alert/Alert.js +1 -1
  309. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  310. package/dist/cssm/components/AspectRatio/AspectRatio.js +1 -1
  311. package/dist/cssm/components/AspectRatio/AspectRatio.js.map +1 -1
  312. package/dist/cssm/components/Badge/Badge.js +1 -1
  313. package/dist/cssm/components/Badge/Badge.js.map +1 -1
  314. package/dist/cssm/components/Button/Button.js +1 -1
  315. package/dist/cssm/components/Button/Button.js.map +1 -1
  316. package/dist/cssm/components/Calendar/Calendar.d.ts +2 -2
  317. package/dist/cssm/components/Calendar/Calendar.d.ts.map +1 -1
  318. package/dist/cssm/components/Calendar/Calendar.js +3 -2
  319. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  320. package/dist/cssm/components/CalendarDay/CalendarDay.d.ts +1 -0
  321. package/dist/cssm/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  322. package/dist/cssm/components/CalendarDay/CalendarDay.js +24 -13
  323. package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
  324. package/dist/cssm/components/CalendarDays/CalendarDays.d.ts +3 -3
  325. package/dist/cssm/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  326. package/dist/cssm/components/CalendarDays/CalendarDays.js +2 -1
  327. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  328. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +2 -2
  329. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  330. package/dist/cssm/components/CalendarRange/CalendarRange.js +3 -1
  331. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  332. package/dist/cssm/components/CardGrid/CardGrid.js +1 -1
  333. package/dist/cssm/components/CardGrid/CardGrid.js.map +1 -1
  334. package/dist/cssm/components/Clickable/Clickable.d.ts +1 -0
  335. package/dist/cssm/components/Clickable/Clickable.d.ts.map +1 -1
  336. package/dist/cssm/components/Clickable/Clickable.js +16 -6
  337. package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
  338. package/dist/cssm/components/Clickable/useState.d.ts +39 -3
  339. package/dist/cssm/components/Clickable/useState.d.ts.map +1 -1
  340. package/dist/cssm/components/Clickable/useState.js +104 -36
  341. package/dist/cssm/components/Clickable/useState.js.map +1 -1
  342. package/dist/cssm/components/Clickable/useStateWithDelay.d.ts +19 -1
  343. package/dist/cssm/components/Clickable/useStateWithDelay.d.ts.map +1 -1
  344. package/dist/cssm/components/Clickable/useStateWithDelay.js +38 -4
  345. package/dist/cssm/components/Clickable/useStateWithDelay.js.map +1 -1
  346. package/dist/cssm/components/Counter/Counter.module.css +0 -14
  347. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +3 -2
  348. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  349. package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -3
  350. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  351. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +1 -1
  352. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  353. package/dist/cssm/components/DateInput/DateInput.d.ts +2 -2
  354. package/dist/cssm/components/DateInput/DateInput.d.ts.map +1 -1
  355. package/dist/cssm/components/DateInput/DateInput.js +3 -2
  356. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  357. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  358. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  359. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -3
  360. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  361. package/dist/cssm/components/FormField/FormField.js +1 -1
  362. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  363. package/dist/cssm/components/FormItem/FormItem.js +1 -1
  364. package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
  365. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -1
  366. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  367. package/dist/cssm/components/Input/Input.js +1 -1
  368. package/dist/cssm/components/Input/Input.js.map +1 -1
  369. package/dist/cssm/components/ModalRoot/ModalRootDesktop.d.ts.map +1 -1
  370. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +9 -1
  371. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  372. package/dist/cssm/components/NativeSelect/NativeSelect.js +1 -1
  373. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  374. package/dist/cssm/components/Panel/Panel.js +2 -2
  375. package/dist/cssm/components/Panel/Panel.js.map +1 -1
  376. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
  377. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
  378. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  379. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.module.css +48 -3
  380. package/dist/cssm/components/RichCell/RichCell.js +1 -1
  381. package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
  382. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
  383. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +2 -1
  384. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  385. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +40 -0
  386. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +1 -1
  387. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
  388. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js +20 -7
  389. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
  390. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerLoader.d.ts.map +1 -1
  391. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerLoader.js +8 -3
  392. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerLoader.js.map +1 -1
  393. package/dist/cssm/components/ScreenSpinner/context.d.ts +1 -0
  394. package/dist/cssm/components/ScreenSpinner/context.d.ts.map +1 -1
  395. package/dist/cssm/components/ScreenSpinner/context.js +2 -1
  396. package/dist/cssm/components/ScreenSpinner/context.js.map +1 -1
  397. package/dist/cssm/components/ScreenSpinner/types.d.ts +5 -0
  398. package/dist/cssm/components/ScreenSpinner/types.d.ts.map +1 -1
  399. package/dist/cssm/components/ScreenSpinner/types.js.map +1 -1
  400. package/dist/cssm/components/Search/Search.d.ts.map +1 -1
  401. package/dist/cssm/components/Search/Search.js +17 -12
  402. package/dist/cssm/components/Search/Search.js.map +1 -1
  403. package/dist/cssm/components/Search/Search.module.css +25 -13
  404. package/dist/cssm/components/SegmentedControl/SegmentedControl.js +1 -1
  405. package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
  406. package/dist/cssm/components/Select/Select.d.ts.map +1 -1
  407. package/dist/cssm/components/Select/Select.js +1 -1
  408. package/dist/cssm/components/Select/Select.js.map +1 -1
  409. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +1 -1
  410. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  411. package/dist/cssm/components/SimpleCell/SimpleCell.js +1 -1
  412. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  413. package/dist/cssm/components/Skeleton/Skeleton.d.ts +1 -1
  414. package/dist/cssm/components/Skeleton/Skeleton.d.ts.map +1 -1
  415. package/dist/cssm/components/Skeleton/Skeleton.js +83 -3
  416. package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
  417. package/dist/cssm/components/Skeleton/Skeleton.module.css +30 -32
  418. package/dist/cssm/components/Slider/Slider.js +1 -1
  419. package/dist/cssm/components/Slider/Slider.js.map +1 -1
  420. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js +1 -1
  421. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  422. package/dist/cssm/components/TabsItem/TabsItem.js +1 -1
  423. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  424. package/dist/cssm/components/Textarea/Textarea.js +1 -1
  425. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  426. package/dist/cssm/components/ToolButton/ToolButton.d.ts +2 -1
  427. package/dist/cssm/components/ToolButton/ToolButton.d.ts.map +1 -1
  428. package/dist/cssm/components/ToolButton/ToolButton.js +9 -1
  429. package/dist/cssm/components/ToolButton/ToolButton.js.map +1 -1
  430. package/dist/cssm/components/ToolButton/ToolButton.module.css +13 -6
  431. package/dist/cssm/components/Typography/Caption/Caption.d.ts.map +1 -1
  432. package/dist/cssm/components/Typography/Caption/Caption.js +7 -1
  433. package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
  434. package/dist/cssm/components/Typography/Caption/Caption.module.css +240 -0
  435. package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
  436. package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.js +7 -1
  437. package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
  438. package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.module.css +160 -0
  439. package/dist/cssm/components/Typography/Footnote/Footnote.d.ts.map +1 -1
  440. package/dist/cssm/components/Typography/Footnote/Footnote.js +10 -2
  441. package/dist/cssm/components/Typography/Footnote/Footnote.js.map +1 -1
  442. package/dist/cssm/components/Typography/Footnote/Footnote.module.css +80 -0
  443. package/dist/cssm/components/Typography/Headline/Headline.d.ts +1 -1
  444. package/dist/cssm/components/Typography/Headline/Headline.d.ts.map +1 -1
  445. package/dist/cssm/components/Typography/Headline/Headline.js +2 -3
  446. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  447. package/dist/cssm/components/Typography/Headline/Headline.module.css +48 -8
  448. package/dist/cssm/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
  449. package/dist/cssm/components/Typography/Paragraph/Paragraph.js +7 -1
  450. package/dist/cssm/components/Typography/Paragraph/Paragraph.js.map +1 -1
  451. package/dist/cssm/components/Typography/Paragraph/Paragraph.module.css +40 -0
  452. package/dist/cssm/components/Typography/Subhead/Subhead.js +1 -1
  453. package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
  454. package/dist/cssm/components/Typography/Subhead/Subhead.module.css +32 -4
  455. package/dist/cssm/components/Typography/Text/Text.js +1 -1
  456. package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
  457. package/dist/cssm/components/Typography/Text/Text.module.css +29 -4
  458. package/dist/cssm/components/Typography/Title/Title.d.ts.map +1 -1
  459. package/dist/cssm/components/Typography/Title/Title.js +7 -1
  460. package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
  461. package/dist/cssm/components/Typography/Title/Title.module.css +120 -0
  462. package/dist/cssm/components/Typography/Typography.d.ts +7 -1
  463. package/dist/cssm/components/Typography/Typography.d.ts.map +1 -1
  464. package/dist/cssm/components/Typography/Typography.js +3 -2
  465. package/dist/cssm/components/Typography/Typography.js.map +1 -1
  466. package/dist/cssm/components/Typography/Typography.module.css +21 -3
  467. package/dist/cssm/components/WriteBar/WriteBar.js +1 -0
  468. package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
  469. package/dist/cssm/hooks/useAdaptivityConditionalRender/constants.js +4 -4
  470. package/dist/cssm/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
  471. package/dist/cssm/hooks/useWaitTransitionFinish.d.ts +1 -1
  472. package/dist/cssm/hooks/useWaitTransitionFinish.d.ts.map +1 -1
  473. package/dist/cssm/hooks/useWaitTransitionFinish.js.map +1 -1
  474. package/dist/cssm/styles/missedThemeTokens.css +22 -0
  475. package/dist/hooks/useAdaptivityConditionalRender/constants.js +4 -4
  476. package/dist/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
  477. package/dist/hooks/useWaitTransitionFinish.d.ts +1 -1
  478. package/dist/hooks/useWaitTransitionFinish.d.ts.map +1 -1
  479. package/dist/hooks/useWaitTransitionFinish.js.map +1 -1
  480. package/dist/vkui.css +313 -3
  481. package/dist/vkui.css.map +1 -1
  482. package/dist/vkui.js.tmp +647 -301
  483. package/package.json +3 -2
  484. package/src/components/Alert/Alert.tsx +1 -1
  485. package/src/components/AspectRatio/AspectRatio.tsx +1 -1
  486. package/src/components/Badge/Badge.tsx +1 -1
  487. package/src/components/Button/Button.tsx +1 -1
  488. package/src/components/Calendar/Calendar.tsx +3 -1
  489. package/src/components/CalendarDay/CalendarDay.tsx +16 -4
  490. package/src/components/CalendarDays/CalendarDays.tsx +9 -2
  491. package/src/components/CalendarRange/CalendarRange.tsx +4 -1
  492. package/src/components/CardGrid/CardGrid.tsx +1 -1
  493. package/src/components/Clickable/Clickable.tsx +21 -3
  494. package/src/components/Clickable/useState.tsx +195 -42
  495. package/src/components/Clickable/useStateWithDelay.tsx +40 -3
  496. package/src/components/Counter/Counter.module.css +0 -12
  497. package/src/components/CustomSelect/CustomSelect.tsx +11 -10
  498. package/src/components/CustomSelectOption/CustomSelectOption.tsx +1 -1
  499. package/src/components/DateInput/DateInput.tsx +4 -1
  500. package/src/components/DateRangeInput/DateRangeInput.tsx +4 -1
  501. package/src/components/FormField/FormField.tsx +1 -1
  502. package/src/components/FormItem/FormItem.tsx +1 -1
  503. package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +1 -1
  504. package/src/components/Input/Input.tsx +1 -1
  505. package/src/components/ModalRoot/ModalRootDesktop.tsx +13 -1
  506. package/src/components/NativeSelect/NativeSelect.tsx +1 -1
  507. package/src/components/Panel/Panel.tsx +2 -2
  508. package/src/components/PanelHeaderButton/PanelHeaderButton.module.css +44 -3
  509. package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +1 -1
  510. package/src/components/RichCell/RichCell.tsx +1 -1
  511. package/src/components/ScreenSpinner/ScreenSpinner.module.css +35 -0
  512. package/src/components/ScreenSpinner/ScreenSpinner.tsx +2 -1
  513. package/src/components/ScreenSpinner/ScreenSpinnerContainer.tsx +15 -4
  514. package/src/components/ScreenSpinner/ScreenSpinnerLoader.tsx +16 -3
  515. package/src/components/ScreenSpinner/context.ts +2 -0
  516. package/src/components/ScreenSpinner/types.tsx +5 -0
  517. package/src/components/Search/Search.module.css +24 -13
  518. package/src/components/Search/Search.tsx +19 -14
  519. package/src/components/SegmentedControl/SegmentedControl.tsx +1 -1
  520. package/src/components/Select/Select.tsx +4 -0
  521. package/src/components/SelectMimicry/SelectMimicry.tsx +1 -1
  522. package/src/components/SimpleCell/SimpleCell.tsx +1 -1
  523. package/src/components/Skeleton/Skeleton.module.css +30 -32
  524. package/src/components/Skeleton/Skeleton.tsx +90 -2
  525. package/src/components/Slider/Slider.tsx +1 -1
  526. package/src/components/SubnavigationButton/SubnavigationButton.tsx +1 -1
  527. package/src/components/TabsItem/TabsItem.tsx +1 -1
  528. package/src/components/Textarea/Textarea.tsx +1 -1
  529. package/src/components/ToolButton/ToolButton.module.css +12 -6
  530. package/src/components/ToolButton/ToolButton.tsx +15 -2
  531. package/src/components/Typography/Caption/Caption.module.css +240 -0
  532. package/src/components/Typography/Caption/Caption.tsx +14 -1
  533. package/src/components/Typography/DisplayTitle/DisplayTitle.module.css +160 -0
  534. package/src/components/Typography/DisplayTitle/DisplayTitle.tsx +13 -1
  535. package/src/components/Typography/Footnote/Footnote.module.css +80 -0
  536. package/src/components/Typography/Footnote/Footnote.tsx +24 -9
  537. package/src/components/Typography/Headline/Headline.module.css +48 -8
  538. package/src/components/Typography/Headline/Headline.tsx +1 -3
  539. package/src/components/Typography/Paragraph/Paragraph.module.css +40 -0
  540. package/src/components/Typography/Paragraph/Paragraph.tsx +13 -1
  541. package/src/components/Typography/Subhead/Subhead.module.css +32 -4
  542. package/src/components/Typography/Subhead/Subhead.tsx +1 -1
  543. package/src/components/Typography/Text/Text.module.css +29 -4
  544. package/src/components/Typography/Text/Text.tsx +1 -1
  545. package/src/components/Typography/Title/Title.module.css +120 -0
  546. package/src/components/Typography/Title/Title.tsx +13 -1
  547. package/src/components/Typography/Typography.module.css +20 -3
  548. package/src/components/Typography/Typography.tsx +10 -0
  549. package/src/components/WriteBar/WriteBar.tsx +1 -1
  550. package/src/hooks/useAdaptivityConditionalRender/constants.ts +4 -4
  551. package/src/hooks/useWaitTransitionFinish.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { useDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalRootContext, type ModalRootContextInterface } from './ModalRootContext';\nimport type { ModalRootWithDOMProps, ModalsStateEntry } from './types';\nimport { useModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nexport const ModalRootDesktop = ({\n activeModal: activeModalProp,\n children,\n noFocusToDialog = false,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n modalOverlayTestId,\n}: ModalRootWithDOMProps): React.ReactNode => {\n const maskElementRef = React.useRef<HTMLDivElement>(null);\n const maskAnimationFrame = React.useRef<number | undefined>(undefined);\n const restoreFocusTo = React.useRef<HTMLElement | undefined>(undefined);\n\n const { document } = useDOM();\n const { hasCustomPanelHeaderAfter, platform } = useConfigProvider();\n const {\n activeModal,\n exitingModal,\n onExit,\n getModalState,\n enteringModal,\n onEnter,\n onEntered: onEnteredProp,\n onExited,\n history,\n delayEnter,\n } = useModalManager(activeModalProp, children, onOpen, onOpened, onClose, onClosed, noop);\n\n const waitTransitionFinish = useWaitTransitionFinish();\n const prevProps = usePrevious({\n exitingModal,\n enteringModal,\n activeModal,\n });\n const modalRootContext: ModalRootContextInterface = useObjectMemo({\n updateModalHeight: () => undefined,\n registerModal: ({ id, ...data }) => Object.assign(getModalState(id) ?? {}, data),\n onClose: onExit,\n isInsideModal: true,\n });\n\n const timeout = platform === 'ios' ? 400 : 320;\n const modals = React.Children.toArray(children) as React.ReactElement[];\n\n /* Анимирует сдвиг модального окна */\n const animateModalOpacity = (modalState: ModalsStateEntry | undefined, display: boolean) => {\n if (modalState?.innerElement) {\n modalState.innerElement.style.transition = '';\n modalState.innerElement.style.transitionDelay = display && delayEnter ? `${timeout}ms` : '';\n modalState.innerElement.style.opacity = display ? '1' : '0';\n }\n };\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n const setMaskOpacity = (modalState: ModalsStateEntry, forceOpacity: number | null = null) => {\n if (forceOpacity === null && history?.[0] !== modalState.id) {\n return;\n }\n\n if (maskAnimationFrame.current) {\n cancelAnimationFrame(maskAnimationFrame.current);\n }\n maskAnimationFrame.current = requestAnimationFrame(() => {\n if (maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n };\n\n const onEntered = ({ id, modalElement }: ModalsStateEntry) => {\n if (!noFocusToDialog && modalElement && !modalElement.contains(document!.activeElement)) {\n modalElement.focus();\n }\n\n onEnteredProp(id);\n };\n\n const openModal = () => {\n if (!enteringModal || !prevProps) {\n return;\n }\n\n const enteringState = getModalState(enteringModal);\n onEnter();\n\n // Анимация открытия модального окна\n if (!prevProps.exitingModal) {\n requestAnimationFrame(() => {\n if (enteringModal === enteringModal && enteringState) {\n waitTransitionFinish(enteringState.innerElement, () => onEntered(enteringState), timeout);\n animateModalOpacity(enteringState, true);\n setMaskOpacity(enteringState, 1);\n }\n });\n\n return;\n }\n\n // Переход между модальными окнами без анимации\n requestAnimationFrame(() => {\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transition = 'none';\n enteringState.innerElement.style.opacity = '1';\n setMaskOpacity(enteringState, 1);\n }\n });\n\n if (enteringState) {\n onEntered(enteringState);\n }\n };\n\n const closeModal = (id: string) => {\n const prevModalState = getModalState(id);\n if (!prevModalState) {\n return;\n }\n\n // Анимация закрытия модального окна\n if (!activeModal) {\n requestAnimationFrame(() => {\n waitTransitionFinish(prevModalState?.innerElement, () => onExited(id), timeout);\n animateModalOpacity(prevModalState, false);\n setMaskOpacity(prevModalState, 0);\n });\n\n return;\n }\n\n // Переход между модальными окнами без анимации\n onExited(id);\n };\n\n React.useEffect(() => {\n if (!prevProps) {\n return;\n }\n\n // transition phase 2: animate exiting modal\n if (exitingModal && exitingModal !== prevProps.exitingModal) {\n closeModal(exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (enteringModal && enteringModal !== prevProps.enteringModal) {\n openModal();\n }\n\n // focus restoration\n if (activeModal && !prevProps.activeModal) {\n restoreFocusTo.current = (document?.activeElement ?? undefined) as HTMLElement | undefined;\n }\n if (!activeModal && !exitingModal && restoreFocusTo.current) {\n restoreFocusTo.current.focus();\n restoreFocusTo.current = undefined;\n }\n });\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <ModalRootContext.Provider value={modalRootContext}>\n <div\n className={classNames(\n styles['ModalRoot'],\n hasCustomPanelHeaderAfter && styles['ModalRoot--hasCustomPanelHeaderAfterSlot'],\n styles['ModalRoot--desktop'],\n )}\n >\n <div\n data-testid={modalOverlayTestId}\n className={styles['ModalRoot__mask']}\n ref={maskElementRef}\n onClick={onExit}\n />\n <div className={styles['ModalRoot__viewport']}>\n {modals.map((Modal: React.ReactElement) => {\n const modalId = getNavId(Modal.props, warn);\n if (modalId !== activeModal && modalId !== exitingModal) {\n return null;\n }\n\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n autoFocus={false}\n restoreFocus={false}\n onClose={onExit}\n timeout={timeout}\n key={key}\n className={styles['ModalRoot__modal']}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </div>\n </ModalRootContext.Provider>\n );\n};\n"],"names":["React","classNames","noop","clamp","useObjectMemo","usePrevious","useWaitTransitionFinish","useDOM","getNavId","warnOnce","useConfigProvider","FocusTrap","ModalRootContext","useModalManager","warn","ModalRootDesktop","activeModal","activeModalProp","children","noFocusToDialog","onOpen","onOpened","onClose","onClosed","modalOverlayTestId","maskElementRef","useRef","maskAnimationFrame","undefined","restoreFocusTo","document","hasCustomPanelHeaderAfter","platform","exitingModal","onExit","getModalState","enteringModal","onEnter","onEntered","onEnteredProp","onExited","history","delayEnter","waitTransitionFinish","prevProps","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","isInsideModal","timeout","modals","Children","toArray","animateModalOpacity","modalState","display","innerElement","style","transition","transitionDelay","opacity","setMaskOpacity","forceOpacity","current","cancelAnimationFrame","requestAnimationFrame","translateY","translateYCurrent","toString","modalElement","contains","activeElement","focus","openModal","enteringState","closeModal","prevModalState","useEffect","Provider","value","div","className","data-testid","ref","onClick","map","Modal","modalId","props","key","autoFocus","restoreFocus"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { useObjectMemo } from '../../hooks/useObjectMemo';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { useDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalRootContext, type ModalRootContextInterface } from './ModalRootContext';\nimport type { ModalRootWithDOMProps, ModalsStateEntry } from './types';\nimport { useModalManager } from './useModalManager';\nimport styles from './ModalRoot.module.css';\n\nconst warn = warnOnce('ModalRoot');\n\nexport const ModalRootDesktop = ({\n activeModal: activeModalProp,\n children,\n noFocusToDialog = false,\n onOpen,\n onOpened,\n onClose,\n onClosed,\n modalOverlayTestId,\n}: ModalRootWithDOMProps): React.ReactNode => {\n const maskElementRef = React.useRef<HTMLDivElement>(null);\n const maskAnimationFrame = React.useRef<number | undefined>(undefined);\n const restoreFocusTo = React.useRef<HTMLElement | undefined>(undefined);\n\n const { document } = useDOM();\n const { hasCustomPanelHeaderAfter, platform } = useConfigProvider();\n const {\n activeModal,\n exitingModal,\n onExit,\n getModalState,\n enteringModal,\n onEnter,\n onEntered: onEnteredProp,\n onExited,\n history,\n delayEnter,\n } = useModalManager(activeModalProp, children, onOpen, onOpened, onClose, onClosed, noop);\n\n const waitTransitionFinish = useWaitTransitionFinish();\n const prevProps = usePrevious({\n exitingModal,\n enteringModal,\n activeModal,\n });\n const modalRootContext: ModalRootContextInterface = useObjectMemo({\n updateModalHeight: () => undefined,\n registerModal: ({ id, ...data }) => Object.assign(getModalState(id) ?? {}, data),\n onClose: onExit,\n isInsideModal: true,\n });\n\n const timeout = platform === 'ios' ? 400 : 320;\n const modals = React.Children.toArray(children) as React.ReactElement[];\n\n /* Анимирует сдвиг модального окна */\n const animateModalOpacity = (modalState: ModalsStateEntry | undefined, display: boolean) => {\n if (modalState?.innerElement) {\n modalState.innerElement.style.transition = '';\n modalState.innerElement.style.transitionDelay = display && delayEnter ? `${timeout}ms` : '';\n modalState.innerElement.style.opacity = display ? '1' : '0';\n }\n };\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n const setMaskOpacity = (modalState: ModalsStateEntry, forceOpacity: number | null = null) => {\n if (forceOpacity === null && history?.[0] !== modalState.id) {\n return;\n }\n\n if (maskAnimationFrame.current) {\n cancelAnimationFrame(maskAnimationFrame.current);\n }\n maskAnimationFrame.current = requestAnimationFrame(() => {\n if (maskElementRef.current) {\n const { translateY = 0, translateYCurrent = 0 } = modalState;\n\n const opacity =\n forceOpacity === null\n ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0\n : forceOpacity;\n maskElementRef.current.style.opacity = clamp(opacity, 0, 100).toString();\n }\n });\n };\n\n const onEntered = ({ id, modalElement }: ModalsStateEntry) => {\n if (!noFocusToDialog && modalElement && !modalElement.contains(document!.activeElement)) {\n modalElement.focus();\n }\n\n onEnteredProp(id);\n };\n\n const openModal = () => {\n if (!enteringModal || !prevProps) {\n return;\n }\n\n const enteringState = getModalState(enteringModal);\n onEnter();\n\n // Анимация открытия модального окна\n if (!prevProps.exitingModal) {\n requestAnimationFrame(() => {\n if (enteringModal === enteringModal && enteringState) {\n waitTransitionFinish(enteringState.innerElement, () => onEntered(enteringState), timeout);\n animateModalOpacity(enteringState, true);\n setMaskOpacity(enteringState, 1);\n }\n });\n\n return;\n }\n\n // Переход между модальными окнами без анимации\n requestAnimationFrame(() => {\n if (enteringState?.innerElement) {\n enteringState.innerElement.style.transition = 'none';\n enteringState.innerElement.style.opacity = '1';\n setMaskOpacity(enteringState, 1);\n }\n });\n\n if (enteringState) {\n onEntered(enteringState);\n }\n };\n\n const closeModal = (id: string) => {\n const prevModalState = getModalState(id);\n if (!prevModalState) {\n return;\n }\n\n // Анимация закрытия модального окна\n if (!activeModal) {\n requestAnimationFrame(() => {\n waitTransitionFinish(\n prevModalState?.innerElement,\n (event) => {\n // Исключаем дочерние элементы\n if (event && event.target === prevModalState?.innerElement) {\n onExited(id);\n } else if (!event) {\n // Вызвался по тайм-ауту\n onExited(id);\n }\n },\n timeout,\n );\n animateModalOpacity(prevModalState, false);\n setMaskOpacity(prevModalState, 0);\n });\n\n return;\n }\n\n // Переход между модальными окнами без анимации\n onExited(id);\n };\n\n React.useEffect(() => {\n if (!prevProps) {\n return;\n }\n\n // transition phase 2: animate exiting modal\n if (exitingModal && exitingModal !== prevProps.exitingModal) {\n closeModal(exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (enteringModal && enteringModal !== prevProps.enteringModal) {\n openModal();\n }\n\n // focus restoration\n if (activeModal && !prevProps.activeModal) {\n restoreFocusTo.current = (document?.activeElement ?? undefined) as HTMLElement | undefined;\n }\n if (!activeModal && !exitingModal && restoreFocusTo.current) {\n restoreFocusTo.current.focus();\n restoreFocusTo.current = undefined;\n }\n });\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <ModalRootContext.Provider value={modalRootContext}>\n <div\n className={classNames(\n styles['ModalRoot'],\n hasCustomPanelHeaderAfter && styles['ModalRoot--hasCustomPanelHeaderAfterSlot'],\n styles['ModalRoot--desktop'],\n )}\n >\n <div\n data-testid={modalOverlayTestId}\n className={styles['ModalRoot__mask']}\n ref={maskElementRef}\n onClick={onExit}\n />\n <div className={styles['ModalRoot__viewport']}>\n {modals.map((Modal: React.ReactElement) => {\n const modalId = getNavId(Modal.props, warn);\n if (modalId !== activeModal && modalId !== exitingModal) {\n return null;\n }\n\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n autoFocus={false}\n restoreFocus={false}\n onClose={onExit}\n timeout={timeout}\n key={key}\n className={styles['ModalRoot__modal']}\n >\n {Modal}\n </FocusTrap>\n );\n })}\n </div>\n </div>\n </ModalRootContext.Provider>\n );\n};\n"],"names":["React","classNames","noop","clamp","useObjectMemo","usePrevious","useWaitTransitionFinish","useDOM","getNavId","warnOnce","useConfigProvider","FocusTrap","ModalRootContext","useModalManager","warn","ModalRootDesktop","activeModal","activeModalProp","children","noFocusToDialog","onOpen","onOpened","onClose","onClosed","modalOverlayTestId","maskElementRef","useRef","maskAnimationFrame","undefined","restoreFocusTo","document","hasCustomPanelHeaderAfter","platform","exitingModal","onExit","getModalState","enteringModal","onEnter","onEntered","onEnteredProp","onExited","history","delayEnter","waitTransitionFinish","prevProps","modalRootContext","updateModalHeight","registerModal","id","data","Object","assign","isInsideModal","timeout","modals","Children","toArray","animateModalOpacity","modalState","display","innerElement","style","transition","transitionDelay","opacity","setMaskOpacity","forceOpacity","current","cancelAnimationFrame","requestAnimationFrame","translateY","translateYCurrent","toString","modalElement","contains","activeElement","focus","openModal","enteringState","closeModal","prevModalState","event","target","useEffect","Provider","value","div","className","data-testid","ref","onClick","map","Modal","modalId","props","key","autoFocus","restoreFocus"],"mappings":"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"}
@@ -14,7 +14,7 @@ import { FormField } from '../FormField/FormField';
14
14
  import { SelectTypography } from '../SelectTypography/SelectTypography';
15
15
  const sizeYClassNames = {
16
16
  none: "vkuiSelect--sizeY-none",
17
- ['compact']: "vkuiSelect--sizeY-compact"
17
+ compact: "vkuiSelect--sizeY-compact"
18
18
  };
19
19
  /**
20
20
  * @see https://vkcom.github.io/VKUI/#/NativeSelect
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/NativeSelect/NativeSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { getFormFieldModeFromSelectType } from '../../lib/select';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport type { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, type FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles['Select--sizeY-none'],\n ['compact']: styles['Select--sizeY-compact'],\n};\n\nexport interface NativeSelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'multiple'>,\n HasRef<HTMLSelectElement>,\n HasRootRef<HTMLDivElement>,\n HasAlign,\n Pick<FormFieldProps, 'before' | 'status'> {\n placeholder?: string;\n multiline?: boolean;\n selectType?: SelectType;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n}\n\nexport interface SelectState {\n value?: React.SelectHTMLAttributes<HTMLSelectElement>['value'];\n title?: string;\n notSelected?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/NativeSelect\n */\nconst NativeSelect = ({\n style,\n align,\n placeholder,\n children,\n className,\n getRef,\n getRootRef,\n disabled,\n multiline,\n selectType = 'default',\n status,\n icon = <DropdownIcon />,\n before,\n onChange,\n ...restProps\n}: NativeSelectProps): React.ReactNode => {\n const [title, setTitle] = React.useState('');\n const [empty, setEmpty] = React.useState(false);\n const selectRef = useExternRef(getRef);\n const { sizeY = 'none' } = useAdaptivity();\n\n const checkSelectedOption = () => {\n const selectedOption = selectRef.current?.options[selectRef.current.selectedIndex];\n if (selectedOption) {\n setTitle(selectedOption.text);\n setEmpty(selectedOption.value === '' && placeholder != null);\n }\n };\n useIsomorphicLayoutEffect(checkSelectedOption, [children]);\n\n return (\n <FormField\n Component=\"div\"\n className={classNames(\n styles['Select'],\n 'vkuiInternalNativeSelect',\n before && styles['Select--hasBefore'],\n empty && styles['Select--empty'],\n multiline && styles['Select--multiline'],\n align === 'center' && styles['Select--align-center'],\n align === 'right' && styles['Select--align-right'],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n className,\n )}\n style={style}\n getRootRef={getRootRef}\n disabled={disabled}\n before={before}\n after={icon}\n status={status}\n mode={getFormFieldModeFromSelectType(selectType)}\n >\n <select\n {...restProps}\n disabled={disabled}\n className={styles['Select__el']}\n onChange={callMultiple(onChange, checkSelectedOption)}\n ref={selectRef}\n >\n {placeholder && <option value=\"\">{placeholder}</option>}\n {children}\n </select>\n <div className={styles['Select__container']} aria-hidden>\n <SelectTypography className={styles['Select__title']} selectType={selectType}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n\nexport { NativeSelect };\n"],"names":["React","classNames","useAdaptivity","useExternRef","callMultiple","getFormFieldModeFromSelectType","useIsomorphicLayoutEffect","DropdownIcon","FormField","SelectTypography","sizeYClassNames","none","NativeSelect","style","align","placeholder","children","className","getRef","getRootRef","disabled","multiline","selectType","status","icon","before","onChange","restProps","title","setTitle","useState","empty","setEmpty","selectRef","sizeY","checkSelectedOption","selectedOption","current","options","selectedIndex","text","value","Component","after","mode","select","ref","option","div","aria-hidden"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,8BAA8B,QAAQ,mBAAmB;AAClE,SAASC,yBAAyB,QAAQ,sCAAsC;AAEhF,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAA6B,yBAAyB;AAExE,SAASC,gBAAgB,QAAQ,uCAAuC;AAGxE,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;AACb;AAuBA;;CAEC,GACD,MAAMC,eAAe;QAAC,EACpBC,KAAK,EACLC,KAAK,EACLC,WAAW,EACXC,QAAQ,EACRC,SAAS,EACTC,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,aAAa,SAAS,EACtBC,MAAM,EACNC,qBAAO,KAACjB,iBAAe,EACvBkB,MAAM,EACNC,QAAQ,EAEU,WADfC;QAdHd;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAM,CAACE,OAAOC,SAAS,GAAG7B,MAAM8B,QAAQ,CAAC;IACzC,MAAM,CAACC,OAAOC,SAAS,GAAGhC,MAAM8B,QAAQ,CAAC;IACzC,MAAMG,YAAY9B,aAAae;IAC/B,MAAM,EAAEgB,QAAQ,MAAM,EAAE,GAAGhC;IAE3B,MAAMiC,sBAAsB;YACHF;QAAvB,MAAMG,kBAAiBH,qBAAAA,UAAUI,OAAO,cAAjBJ,yCAAAA,mBAAmBK,OAAO,CAACL,UAAUI,OAAO,CAACE,aAAa,CAAC;QAClF,IAAIH,gBAAgB;YAClBP,SAASO,eAAeI,IAAI;YAC5BR,SAASI,eAAeK,KAAK,KAAK,MAAM1B,eAAe;QACzD;IACF;IACAT,0BAA0B6B,qBAAqB;QAACnB;KAAS;IAEzD,qBACE,MAACR;QACCkC,WAAU;QACVzB,WAAWhB,yBAET,4BACAwB,mCACAM,8BACAV,sCACAP,UAAU,wCACVA,UAAU,sCACVoB,UAAU,aAAaxB,eAAe,CAACwB,MAAM,EAC7CjB;QAEFJ,OAAOA;QACPM,YAAYA;QACZC,UAAUA;QACVK,QAAQA;QACRkB,OAAOnB;QACPD,QAAQA;QACRqB,MAAMvC,+BAA+BiB;;0BAErC,MAACuB,kDACKlB;gBACJP,UAAUA;gBACVH,SAAS;gBACTS,UAAUtB,aAAasB,UAAUS;gBACjCW,KAAKb;;oBAEJlB,6BAAe,KAACgC;wBAAON,OAAM;kCAAI1B;;oBACjCC;;;0BAEH,KAACgC;gBAAI/B,SAAS;gBAA+BgC,aAAW;0BACtD,cAAA,KAACxC;oBAAiBQ,SAAS;oBAA2BK,YAAYA;8BAC/DM;;;;;AAKX;AAEA,SAAShB,YAAY,GAAG"}
1
+ {"version":3,"sources":["../../../src/components/NativeSelect/NativeSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { getFormFieldModeFromSelectType } from '../../lib/select';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport type { HasAlign, HasRef, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, type FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles['Select--sizeY-none'],\n compact: styles['Select--sizeY-compact'],\n};\n\nexport interface NativeSelectProps\n extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'multiple'>,\n HasRef<HTMLSelectElement>,\n HasRootRef<HTMLDivElement>,\n HasAlign,\n Pick<FormFieldProps, 'before' | 'status'> {\n placeholder?: string;\n multiline?: boolean;\n selectType?: SelectType;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n}\n\nexport interface SelectState {\n value?: React.SelectHTMLAttributes<HTMLSelectElement>['value'];\n title?: string;\n notSelected?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/NativeSelect\n */\nconst NativeSelect = ({\n style,\n align,\n placeholder,\n children,\n className,\n getRef,\n getRootRef,\n disabled,\n multiline,\n selectType = 'default',\n status,\n icon = <DropdownIcon />,\n before,\n onChange,\n ...restProps\n}: NativeSelectProps): React.ReactNode => {\n const [title, setTitle] = React.useState('');\n const [empty, setEmpty] = React.useState(false);\n const selectRef = useExternRef(getRef);\n const { sizeY = 'none' } = useAdaptivity();\n\n const checkSelectedOption = () => {\n const selectedOption = selectRef.current?.options[selectRef.current.selectedIndex];\n if (selectedOption) {\n setTitle(selectedOption.text);\n setEmpty(selectedOption.value === '' && placeholder != null);\n }\n };\n useIsomorphicLayoutEffect(checkSelectedOption, [children]);\n\n return (\n <FormField\n Component=\"div\"\n className={classNames(\n styles['Select'],\n 'vkuiInternalNativeSelect',\n before && styles['Select--hasBefore'],\n empty && styles['Select--empty'],\n multiline && styles['Select--multiline'],\n align === 'center' && styles['Select--align-center'],\n align === 'right' && styles['Select--align-right'],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n className,\n )}\n style={style}\n getRootRef={getRootRef}\n disabled={disabled}\n before={before}\n after={icon}\n status={status}\n mode={getFormFieldModeFromSelectType(selectType)}\n >\n <select\n {...restProps}\n disabled={disabled}\n className={styles['Select__el']}\n onChange={callMultiple(onChange, checkSelectedOption)}\n ref={selectRef}\n >\n {placeholder && <option value=\"\">{placeholder}</option>}\n {children}\n </select>\n <div className={styles['Select__container']} aria-hidden>\n <SelectTypography className={styles['Select__title']} selectType={selectType}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n\nexport { NativeSelect };\n"],"names":["React","classNames","useAdaptivity","useExternRef","callMultiple","getFormFieldModeFromSelectType","useIsomorphicLayoutEffect","DropdownIcon","FormField","SelectTypography","sizeYClassNames","none","compact","NativeSelect","style","align","placeholder","children","className","getRef","getRootRef","disabled","multiline","selectType","status","icon","before","onChange","restProps","title","setTitle","useState","empty","setEmpty","selectRef","sizeY","checkSelectedOption","selectedOption","current","options","selectedIndex","text","value","Component","after","mode","select","ref","option","div","aria-hidden"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,8BAA8B,QAAQ,mBAAmB;AAClE,SAASC,yBAAyB,QAAQ,sCAAsC;AAEhF,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAA6B,yBAAyB;AAExE,SAASC,gBAAgB,QAAQ,uCAAuC;AAGxE,MAAMC,kBAAkB;IACtBC,IAAI;IACJC,OAAO;AACT;AAuBA;;CAEC,GACD,MAAMC,eAAe;QAAC,EACpBC,KAAK,EACLC,KAAK,EACLC,WAAW,EACXC,QAAQ,EACRC,SAAS,EACTC,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,aAAa,SAAS,EACtBC,MAAM,EACNC,qBAAO,KAAClB,iBAAe,EACvBmB,MAAM,EACNC,QAAQ,EAEU,WADfC;QAdHd;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAM,CAACE,OAAOC,SAAS,GAAG9B,MAAM+B,QAAQ,CAAC;IACzC,MAAM,CAACC,OAAOC,SAAS,GAAGjC,MAAM+B,QAAQ,CAAC;IACzC,MAAMG,YAAY/B,aAAagB;IAC/B,MAAM,EAAEgB,QAAQ,MAAM,EAAE,GAAGjC;IAE3B,MAAMkC,sBAAsB;YACHF;QAAvB,MAAMG,kBAAiBH,qBAAAA,UAAUI,OAAO,cAAjBJ,yCAAAA,mBAAmBK,OAAO,CAACL,UAAUI,OAAO,CAACE,aAAa,CAAC;QAClF,IAAIH,gBAAgB;YAClBP,SAASO,eAAeI,IAAI;YAC5BR,SAASI,eAAeK,KAAK,KAAK,MAAM1B,eAAe;QACzD;IACF;IACAV,0BAA0B8B,qBAAqB;QAACnB;KAAS;IAEzD,qBACE,MAACT;QACCmC,WAAU;QACVzB,WAAWjB,yBAET,4BACAyB,mCACAM,8BACAV,sCACAP,UAAU,wCACVA,UAAU,sCACVoB,UAAU,aAAazB,eAAe,CAACyB,MAAM,EAC7CjB;QAEFJ,OAAOA;QACPM,YAAYA;QACZC,UAAUA;QACVK,QAAQA;QACRkB,OAAOnB;QACPD,QAAQA;QACRqB,MAAMxC,+BAA+BkB;;0BAErC,MAACuB,kDACKlB;gBACJP,UAAUA;gBACVH,SAAS;gBACTS,UAAUvB,aAAauB,UAAUS;gBACjCW,KAAKb;;oBAEJlB,6BAAe,KAACgC;wBAAON,OAAM;kCAAI1B;;oBACjCC;;;0BAEH,KAACgC;gBAAI/B,SAAS;gBAA+BgC,aAAW;0BACtD,cAAA,KAACzC;oBAAiBS,SAAS;oBAA2BK,YAAYA;8BAC/DM;;;;;AAKX;AAEA,SAAShB,YAAY,GAAG"}
@@ -12,8 +12,8 @@ import { RootComponent } from '../RootComponent/RootComponent';
12
12
  import { Touch } from '../Touch/Touch';
13
13
  const sizeXClassNames = {
14
14
  none: "vkuiPanel--sizeX-none",
15
- ['compact']: "vkuiPanel--sizeX-compact",
16
- ['regular']: "vkuiPanel--sizeX-regular"
15
+ compact: "vkuiPanel--sizeX-compact",
16
+ regular: "vkuiPanel--sizeX-regular"
17
17
  };
18
18
  const stylesMode = {
19
19
  none: "vkuiPanel--mode-none",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Panel/Panel.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport type { SizeTypeValues } from '../../lib/adaptivity';\nimport type { NavIdProps } from '../../lib/getNavId';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { AppRootContext } from '../AppRoot/AppRootContext';\nimport { NavPanelIdContext } from '../NavIdContext/NavIdContext';\nimport { OnboardingTooltipContainer } from '../OnboardingTooltip/OnboardingTooltipContainer';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Touch } from '../Touch/Touch';\nimport styles from './Panel.module.css';\n\nconst sizeXClassNames = {\n none: styles['Panel--sizeX-none'],\n ['compact']: styles['Panel--sizeX-compact'],\n ['regular']: styles['Panel--sizeX-regular'],\n};\n\nconst stylesMode = {\n none: styles['Panel--mode-none'],\n plain: styles['Panel--mode-plain'],\n card: styles['Panel--mode-card'],\n};\n\nexport interface PanelProps extends HTMLAttributesWithRootRef<HTMLDivElement>, NavIdProps {\n centered?: boolean;\n /**\n * Тип оформления панели.\n *\n * Позволяет переопределить тип оформления панели,\n * заданный через адаптивность или свойство layout у [AppRoot](https://vkcom.github.io/VKUI/#/AppRoot),\n * глобально задающим тип оформления макета.\n *\n * Если установлен `card` - Panel имеет фон отличный от фона контента.\n * Позволяет компоненту [Group](https://vkcom.github.io/VKUI/#/Group) со свойством mode='card' точечно выглядеть как карточка.\n * Тип `plain` — соответствует фону по умолчанию.\n */\n mode?: 'plain' | 'card';\n /**\n * Отключает задний фон\n */\n disableBackground?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Panel\n */\nexport const Panel = ({\n centered = false,\n children,\n nav,\n mode: modeProp,\n disableBackground,\n ...restProps\n}: PanelProps): React.ReactNode => {\n const { sizeX = 'none' } = useAdaptivity();\n\n const mode = usePanelMode(modeProp, sizeX);\n\n return (\n <NavPanelIdContext.Provider value={restProps.id || nav}>\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n styles['Panel'],\n sizeXClassNames[sizeX],\n centered && 'vkuiInternalPanel--centered',\n disableBackground && styles['Panel--disableBackground'],\n stylesMode[mode],\n )}\n >\n <Touch\n Component={OnboardingTooltipContainer}\n className={classNames(styles['Panel__in'], 'vkuiInternalPanel__in')}\n >\n <div className={styles['Panel__in-before']} />\n {centered ? <div className={styles['Panel__centered']}>{children}</div> : children}\n <div className={styles['Panel__in-after']} />\n </Touch>\n </RootComponent>\n </NavPanelIdContext.Provider>\n );\n};\n\nfunction usePanelMode(\n modeProp: PanelProps['mode'],\n sizeX: SizeTypeValues | 'none',\n): 'plain' | 'card' | 'none' {\n const { layout } = React.useContext(AppRootContext);\n\n if (modeProp) {\n return modeProp;\n }\n\n if (layout) {\n return layout;\n }\n\n if (sizeX !== 'none') {\n return sizeX === 'regular' ? 'card' : 'plain';\n }\n\n return 'none';\n}\n"],"names":["React","classNames","useAdaptivity","AppRootContext","NavPanelIdContext","OnboardingTooltipContainer","RootComponent","Touch","sizeXClassNames","none","stylesMode","plain","card","Panel","centered","children","nav","mode","modeProp","disableBackground","restProps","sizeX","usePanelMode","Provider","value","id","baseClassName","Component","className","div","layout","useContext"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAI1D,SAASC,cAAc,QAAQ,4BAA4B;AAC3D,SAASC,iBAAiB,QAAQ,+BAA+B;AACjE,SAASC,0BAA0B,QAAQ,kDAAkD;AAC7F,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,KAAK,QAAQ,iBAAiB;AAGvC,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;IACX,CAAC,UAAU;AACb;AAEA,MAAMC,aAAa;IACjBD,IAAI;IACJE,KAAK;IACLC,IAAI;AACN;AAsBA;;CAEC,GACD,OAAO,MAAMC,QAAQ;QAAC,EACpBC,WAAW,KAAK,EAChBC,QAAQ,EACRC,GAAG,EACHC,MAAMC,QAAQ,EACdC,iBAAiB,EAEN,WADRC;QALHN;QACAC;QACAC;QACAC;QACAE;;IAGA,MAAM,EAAEE,QAAQ,MAAM,EAAE,GAAGnB;IAE3B,MAAMe,OAAOK,aAAaJ,UAAUG;IAEpC,qBACE,KAACjB,kBAAkBmB,QAAQ;QAACC,OAAOJ,UAAUK,EAAE,IAAIT;kBACjD,cAAA,KAACV,uDACKc;YACJM,eAAezB,wBAEbO,eAAe,CAACa,MAAM,EACtBP,YAAY,+BACZK,qDACAT,UAAU,CAACO,KAAK;sBAGlB,cAAA,MAACV;gBACCoB,WAAWtB;gBACXuB,WAAW3B,4BAAgC;;kCAE3C,KAAC4B;wBAAID,SAAS;;oBACbd,yBAAW,KAACe;wBAAID,SAAS;kCAA8Bb;yBAAkBA;kCAC1E,KAACc;wBAAID,SAAS;;;;;;AAKxB,EAAE;AAEF,SAASN,aACPJ,QAA4B,EAC5BG,KAA8B;IAE9B,MAAM,EAAES,MAAM,EAAE,GAAG9B,MAAM+B,UAAU,CAAC5B;IAEpC,IAAIe,UAAU;QACZ,OAAOA;IACT;IAEA,IAAIY,QAAQ;QACV,OAAOA;IACT;IAEA,IAAIT,UAAU,QAAQ;QACpB,OAAOA,UAAU,YAAY,SAAS;IACxC;IAEA,OAAO;AACT"}
1
+ {"version":3,"sources":["../../../src/components/Panel/Panel.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport type { SizeTypeValues } from '../../lib/adaptivity';\nimport type { NavIdProps } from '../../lib/getNavId';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { AppRootContext } from '../AppRoot/AppRootContext';\nimport { NavPanelIdContext } from '../NavIdContext/NavIdContext';\nimport { OnboardingTooltipContainer } from '../OnboardingTooltip/OnboardingTooltipContainer';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Touch } from '../Touch/Touch';\nimport styles from './Panel.module.css';\n\nconst sizeXClassNames = {\n none: styles['Panel--sizeX-none'],\n compact: styles['Panel--sizeX-compact'],\n regular: styles['Panel--sizeX-regular'],\n};\n\nconst stylesMode = {\n none: styles['Panel--mode-none'],\n plain: styles['Panel--mode-plain'],\n card: styles['Panel--mode-card'],\n};\n\nexport interface PanelProps extends HTMLAttributesWithRootRef<HTMLDivElement>, NavIdProps {\n centered?: boolean;\n /**\n * Тип оформления панели.\n *\n * Позволяет переопределить тип оформления панели,\n * заданный через адаптивность или свойство layout у [AppRoot](https://vkcom.github.io/VKUI/#/AppRoot),\n * глобально задающим тип оформления макета.\n *\n * Если установлен `card` - Panel имеет фон отличный от фона контента.\n * Позволяет компоненту [Group](https://vkcom.github.io/VKUI/#/Group) со свойством mode='card' точечно выглядеть как карточка.\n * Тип `plain` — соответствует фону по умолчанию.\n */\n mode?: 'plain' | 'card';\n /**\n * Отключает задний фон\n */\n disableBackground?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Panel\n */\nexport const Panel = ({\n centered = false,\n children,\n nav,\n mode: modeProp,\n disableBackground,\n ...restProps\n}: PanelProps): React.ReactNode => {\n const { sizeX = 'none' } = useAdaptivity();\n\n const mode = usePanelMode(modeProp, sizeX);\n\n return (\n <NavPanelIdContext.Provider value={restProps.id || nav}>\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n styles['Panel'],\n sizeXClassNames[sizeX],\n centered && 'vkuiInternalPanel--centered',\n disableBackground && styles['Panel--disableBackground'],\n stylesMode[mode],\n )}\n >\n <Touch\n Component={OnboardingTooltipContainer}\n className={classNames(styles['Panel__in'], 'vkuiInternalPanel__in')}\n >\n <div className={styles['Panel__in-before']} />\n {centered ? <div className={styles['Panel__centered']}>{children}</div> : children}\n <div className={styles['Panel__in-after']} />\n </Touch>\n </RootComponent>\n </NavPanelIdContext.Provider>\n );\n};\n\nfunction usePanelMode(\n modeProp: PanelProps['mode'],\n sizeX: SizeTypeValues | 'none',\n): 'plain' | 'card' | 'none' {\n const { layout } = React.useContext(AppRootContext);\n\n if (modeProp) {\n return modeProp;\n }\n\n if (layout) {\n return layout;\n }\n\n if (sizeX !== 'none') {\n return sizeX === 'regular' ? 'card' : 'plain';\n }\n\n return 'none';\n}\n"],"names":["React","classNames","useAdaptivity","AppRootContext","NavPanelIdContext","OnboardingTooltipContainer","RootComponent","Touch","sizeXClassNames","none","compact","regular","stylesMode","plain","card","Panel","centered","children","nav","mode","modeProp","disableBackground","restProps","sizeX","usePanelMode","Provider","value","id","baseClassName","Component","className","div","layout","useContext"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAI1D,SAASC,cAAc,QAAQ,4BAA4B;AAC3D,SAASC,iBAAiB,QAAQ,+BAA+B;AACjE,SAASC,0BAA0B,QAAQ,kDAAkD;AAC7F,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,KAAK,QAAQ,iBAAiB;AAGvC,MAAMC,kBAAkB;IACtBC,IAAI;IACJC,OAAO;IACPC,OAAO;AACT;AAEA,MAAMC,aAAa;IACjBH,IAAI;IACJI,KAAK;IACLC,IAAI;AACN;AAsBA;;CAEC,GACD,OAAO,MAAMC,QAAQ;QAAC,EACpBC,WAAW,KAAK,EAChBC,QAAQ,EACRC,GAAG,EACHC,MAAMC,QAAQ,EACdC,iBAAiB,EAEN,WADRC;QALHN;QACAC;QACAC;QACAC;QACAE;;IAGA,MAAM,EAAEE,QAAQ,MAAM,EAAE,GAAGrB;IAE3B,MAAMiB,OAAOK,aAAaJ,UAAUG;IAEpC,qBACE,KAACnB,kBAAkBqB,QAAQ;QAACC,OAAOJ,UAAUK,EAAE,IAAIT;kBACjD,cAAA,KAACZ,uDACKgB;YACJM,eAAe3B,wBAEbO,eAAe,CAACe,MAAM,EACtBP,YAAY,+BACZK,qDACAT,UAAU,CAACO,KAAK;sBAGlB,cAAA,MAACZ;gBACCsB,WAAWxB;gBACXyB,WAAW7B,4BAAgC;;kCAE3C,KAAC8B;wBAAID,SAAS;;oBACbd,yBAAW,KAACe;wBAAID,SAAS;kCAA8Bb;yBAAkBA;kCAC1E,KAACc;wBAAID,SAAS;;;;;;AAKxB,EAAE;AAEF,SAASN,aACPJ,QAA4B,EAC5BG,KAA8B;IAE9B,MAAM,EAAES,MAAM,EAAE,GAAGhC,MAAMiC,UAAU,CAAC9B;IAEpC,IAAIiB,UAAU;QACZ,OAAOA;IACT;IAEA,IAAIY,QAAQ;QACV,OAAOA;IACT;IAEA,IAAIT,UAAU,QAAQ;QACpB,OAAOA,UAAU,YAAY,SAAS;IACxC;IAEA,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"PanelHeaderButton.d.ts","sourceRoot":"","sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAWpE,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAsBD;;GAEG;AACH,eAAO,MAAM,iBAAiB,0DAM3B,sBAAsB,KAAG,KAAK,CAAC,SA8DjC,CAAC"}
1
+ {"version":3,"file":"PanelHeaderButton.d.ts","sourceRoot":"","sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAWpE,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAsBD;;GAEG;AACH,eAAO,MAAM,iBAAiB,0DAM3B,sBAAsB,KAAG,KAAK,CAAC,SA6DjC,CAAC"}
@@ -75,7 +75,7 @@ const warn = warnOnce('PanelHeaderButton');
75
75
  hoverMode: hoverMode,
76
76
  activeEffectDelay: 200,
77
77
  activeMode: activeMode,
78
- className: classNames('vkuiInternalPanelHeaderButton', "vkuiPanelHeaderButton", platformClassNames.hasOwnProperty(platform) ? platformClassNames[platform] : platformClassNames.android, isPrimitive && "vkuiPanelHeaderButton--primitive", !isPrimitive && !isPrimitiveLabel && "vkuiPanelHeaderButton--notPrimitive", className),
78
+ className: classNames("vkuiPanelHeaderButton", platformClassNames.hasOwnProperty(platform) ? platformClassNames[platform] : platformClassNames.android, isPrimitive && "vkuiPanelHeaderButton--primitive", !isPrimitive && !isPrimitiveLabel && "vkuiPanelHeaderButton--notPrimitive", className),
79
79
  children: [
80
80
  isPrimitive ? /*#__PURE__*/ _jsx(ButtonTypography, {
81
81
  primary: primary,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, isPrimitiveReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasAccessibleName } from '../../lib/accessibility';\nimport { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';\nimport { Tappable, type TappableProps } from '../Tappable/Tappable';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './PanelHeaderButton.module.css';\n\nconst platformClassNames = {\n ios: styles['PanelHeaderButton--ios'],\n android: styles['PanelHeaderButton--android'],\n vkcom: styles['PanelHeaderButton--vkcom'],\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 === '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 === '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): React.ReactNode => {\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 'ios':\n hoverMode = 'background';\n activeMode = 'opacity';\n break;\n case '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 /* istanbul ignore next: проверка в dev mode, тест на hasAccessibleName() есть в lib/accessibility.test.tsx */\n const isAccessible = hasAccessibleName({\n children: [children, label],\n ...restProps,\n });\n\n if (!isAccessible) {\n warn(COMMON_WARNINGS.a11y[restProps.href ? 'link-name' : 'button-name'], 'error');\n }\n }\n\n return (\n <Tappable\n Component={restProps.href ? 'a' : 'button'}\n {...restProps}\n hoverMode={hoverMode}\n activeEffectDelay={200}\n activeMode={activeMode}\n className={classNames(\n 'vkuiInternalPanelHeaderButton',\n styles['PanelHeaderButton'],\n platformClassNames.hasOwnProperty(platform)\n ? platformClassNames[platform]\n : platformClassNames.android,\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"],"names":["React","classNames","isPrimitiveReactNode","usePlatform","hasAccessibleName","COMMON_WARNINGS","warnOnce","Tappable","Text","Title","platformClassNames","ios","android","vkcom","ButtonTypography","primary","children","platform","Component","level","weight","undefined","warn","PanelHeaderButton","label","className","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","isAccessible","a11y","href","activeEffectDelay","hasOwnProperty"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,oBAAoB,QAAQ,kBAAkB;AACnE,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SAASC,eAAe,EAAEC,QAAQ,QAAQ,qBAAqB;AAC/D,SAASC,QAAQ,QAA4B,uBAAuB;AACpE,SAASC,IAAI,QAAQ,0BAA0B;AAC/C,SAASC,KAAK,QAAQ,4BAA4B;AAGlD,MAAMC,qBAAqB;IACzBC,GAAG;IACHC,OAAO;IACPC,KAAK;AACP;AAWA,MAAMC,mBAAmB,CAAC,EAAEC,OAAO,EAAEC,QAAQ,EAAyB;IACpE,MAAMC,WAAWd;IAEjB,IAAIc,aAAa,OAAO;QACtB,qBACE,KAACR;YAAMS,WAAU;YAAOC,OAAM;YAAIC,QAAQL,UAAU,MAAM;sBACvDC;;IAGP;IAEA,qBAAO,KAACR;QAAKY,QAAQH,aAAa,UAAUI,YAAY;kBAAML;;AAChE;AAEA,MAAMM,OAAOhB,SAAS;AAEtB;;CAEC,GACD,OAAO,MAAMiB,oBAAoB;QAAC,EAChCP,QAAQ,EACRD,UAAU,KAAK,EACfS,KAAK,EACLC,SAAS,EAEc,WADpBC;QAJHV;QACAD;QACAS;QACAC;;IAGA,MAAME,cAAczB,qBAAqBc;IACzC,MAAMY,mBAAmB1B,qBAAqBsB;IAC9C,MAAMP,WAAWd;IAEjB,IAAI0B;IACJ,IAAIC;IAEJ,OAAQb;QACN,KAAK;YACHY,YAAY;YACZC,aAAa;YACb;QACF,KAAK;YACHD;YACAC;YACA;QACF;YACED,YAAY;YACZC,aAAa;IACjB;IAEA,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C,4GAA4G,GAC5G,MAAMC,eAAe9B,kBAAkB;YACrCY,UAAU;gBAACA;gBAAUQ;aAAM;WACxBE;QAGL,IAAI,CAACQ,cAAc;YACjBZ,KAAKjB,gBAAgB8B,IAAI,CAACT,UAAUU,IAAI,GAAG,cAAc,cAAc,EAAE;QAC3E;IACF;IAEA,qBACE,MAAC7B;QACCW,WAAWQ,UAAUU,IAAI,GAAG,MAAM;OAC9BV;QACJG,WAAWA;QACXQ,mBAAmB;QACnBP,YAAYA;QACZL,WAAWxB,WACT,0DAEAS,mBAAmB4B,cAAc,CAACrB,YAC9BP,kBAAkB,CAACO,SAAS,GAC5BP,mBAAmBE,OAAO,EAC9Be,mDACA,CAACA,eAAe,CAACC,2DACjBH;;YAGDE,4BAAc,KAACb;gBAAiBC,SAASA;0BAAUC;iBAA+BA;YAClFY,iCACC,KAACd;gBAAiBC,SAASA;gBAASU,SAAS;0BAC1CD;iBAGHA;;;AAIR,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, isPrimitiveReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasAccessibleName } from '../../lib/accessibility';\nimport { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';\nimport { Tappable, type TappableProps } from '../Tappable/Tappable';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './PanelHeaderButton.module.css';\n\nconst platformClassNames = {\n ios: styles['PanelHeaderButton--ios'],\n android: styles['PanelHeaderButton--android'],\n vkcom: styles['PanelHeaderButton--vkcom'],\n};\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, 'label'> {\n primary?: boolean;\n // TODO [>=7]: добавить св-во `indicator`, чтобы разграничить кейсы\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 === '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 === '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): React.ReactNode => {\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 'ios':\n hoverMode = 'background';\n activeMode = 'opacity';\n break;\n case '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 /* istanbul ignore next: проверка в dev mode, тест на hasAccessibleName() есть в lib/accessibility.test.tsx */\n const isAccessible = hasAccessibleName({\n children: [children, label],\n ...restProps,\n });\n\n if (!isAccessible) {\n warn(COMMON_WARNINGS.a11y[restProps.href ? 'link-name' : 'button-name'], 'error');\n }\n }\n\n return (\n <Tappable\n Component={restProps.href ? 'a' : 'button'}\n {...restProps}\n hoverMode={hoverMode}\n activeEffectDelay={200}\n activeMode={activeMode}\n className={classNames(\n styles['PanelHeaderButton'],\n platformClassNames.hasOwnProperty(platform)\n ? platformClassNames[platform]\n : platformClassNames.android,\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"],"names":["React","classNames","isPrimitiveReactNode","usePlatform","hasAccessibleName","COMMON_WARNINGS","warnOnce","Tappable","Text","Title","platformClassNames","ios","android","vkcom","ButtonTypography","primary","children","platform","Component","level","weight","undefined","warn","PanelHeaderButton","label","className","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","isAccessible","a11y","href","activeEffectDelay","hasOwnProperty"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,oBAAoB,QAAQ,kBAAkB;AACnE,SAASC,WAAW,QAAQ,0BAA0B;AACtD,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SAASC,eAAe,EAAEC,QAAQ,QAAQ,qBAAqB;AAC/D,SAASC,QAAQ,QAA4B,uBAAuB;AACpE,SAASC,IAAI,QAAQ,0BAA0B;AAC/C,SAASC,KAAK,QAAQ,4BAA4B;AAGlD,MAAMC,qBAAqB;IACzBC,GAAG;IACHC,OAAO;IACPC,KAAK;AACP;AAYA,MAAMC,mBAAmB,CAAC,EAAEC,OAAO,EAAEC,QAAQ,EAAyB;IACpE,MAAMC,WAAWd;IAEjB,IAAIc,aAAa,OAAO;QACtB,qBACE,KAACR;YAAMS,WAAU;YAAOC,OAAM;YAAIC,QAAQL,UAAU,MAAM;sBACvDC;;IAGP;IAEA,qBAAO,KAACR;QAAKY,QAAQH,aAAa,UAAUI,YAAY;kBAAML;;AAChE;AAEA,MAAMM,OAAOhB,SAAS;AAEtB;;CAEC,GACD,OAAO,MAAMiB,oBAAoB;QAAC,EAChCP,QAAQ,EACRD,UAAU,KAAK,EACfS,KAAK,EACLC,SAAS,EAEc,WADpBC;QAJHV;QACAD;QACAS;QACAC;;IAGA,MAAME,cAAczB,qBAAqBc;IACzC,MAAMY,mBAAmB1B,qBAAqBsB;IAC9C,MAAMP,WAAWd;IAEjB,IAAI0B;IACJ,IAAIC;IAEJ,OAAQb;QACN,KAAK;YACHY,YAAY;YACZC,aAAa;YACb;QACF,KAAK;YACHD;YACAC;YACA;QACF;YACED,YAAY;YACZC,aAAa;IACjB;IAEA,IAAIC,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C,4GAA4G,GAC5G,MAAMC,eAAe9B,kBAAkB;YACrCY,UAAU;gBAACA;gBAAUQ;aAAM;WACxBE;QAGL,IAAI,CAACQ,cAAc;YACjBZ,KAAKjB,gBAAgB8B,IAAI,CAACT,UAAUU,IAAI,GAAG,cAAc,cAAc,EAAE;QAC3E;IACF;IAEA,qBACE,MAAC7B;QACCW,WAAWQ,UAAUU,IAAI,GAAG,MAAM;OAC9BV;QACJG,WAAWA;QACXQ,mBAAmB;QACnBP,YAAYA;QACZL,WAAWxB,oCAETS,mBAAmB4B,cAAc,CAACrB,YAC9BP,kBAAkB,CAACO,SAAS,GAC5BP,mBAAmBE,OAAO,EAC9Be,mDACA,CAACA,eAAe,CAACC,2DACjBH;;YAGDE,4BAAc,KAACb;gBAAiBC,SAASA;0BAAUC;iBAA+BA;YAClFY,iCACC,KAACd;gBAAiBC,SAASA;gBAASU,SAAS;0BAC1CD;iBAGHA;;;AAIR,EAAE"}
@@ -10,7 +10,7 @@ import { Subhead } from '../Typography/Subhead/Subhead';
10
10
  import { RichCellIcon } from './RichCellIcon/RichCellIcon';
11
11
  const sizeYClassNames = {
12
12
  none: "vkuiRichCell--sizeY-none",
13
- ['compact']: "vkuiRichCell--sizeY-compact"
13
+ compact: "vkuiRichCell--sizeY-compact"
14
14
  };
15
15
  const alignAfterClassNames = {
16
16
  start: "vkuiRichCell__content-after--align-start",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/RichCell/RichCell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { Tappable, type TappableProps } from '../Tappable/Tappable';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { RichCellIcon } from './RichCellIcon/RichCellIcon';\nimport styles from './RichCell.module.css';\n\nconst sizeYClassNames = {\n none: styles['RichCell--sizeY-none'],\n ['compact']: styles['RichCell--sizeY-compact'],\n};\n\nconst alignAfterClassNames = {\n start: styles['RichCell__content-after--align-start'],\n center: styles['RichCell__content-after--align-center'],\n end: styles['RichCell__content-after--align-end'],\n};\n\nexport interface RichCellProps extends TappableProps {\n /**\n * Контейнер для текста над `children`.\n */\n subhead?: React.ReactNode;\n /**\n * Контейнер для текста под `children`.\n */\n text?: React.ReactNode;\n /**\n * Контейнер для текста под `text`.\n */\n caption?: React.ReactNode;\n /**\n * Контейнер для контента под `caption`. Например `<UsersStack size=\"m\" />`.\n */\n bottom?: React.ReactNode;\n /**\n * Кнопки-действия. Принимает [`Button`](https://vkcom.github.io/VKUI/#/Button) с параметрами:\n *\n * - `mode=\"primary\" size=\"s\"`\n * - `mode=\"secondary\" size=\"s\"`\n *\n * Для набора кнопок используйте [`ButtonGroup`](https://vkcom.github.io/VKUI/#/ButtonGroup) с параметрами:\n *\n * - `mode=\"horizontal\" gap=\"s\" stretched`\n */\n actions?: React.ReactNode;\n /**\n * `<Avatar size={40|48|72} />`.\n */\n before?: React.ReactNode;\n /**\n * Иконка 28 или текст.\n */\n after?: React.ReactNode;\n /**\n * Текст под `after`.\n */\n afterCaption?: React.ReactNode;\n /**\n * Выравнивание after компонента по вертикали\n */\n afterAlign?: 'start' | 'center' | 'end';\n /**\n * Убирает анимацию нажатия.\n */\n disabled?: boolean;\n /**\n * Включает многострочный режим для `subhead`, `children`, `text` и `caption`.\n */\n multiline?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/RichCell\n */\nexport const RichCell: React.FC<RichCellProps> & {\n Icon: typeof RichCellIcon;\n} = ({\n subhead,\n children,\n text,\n caption,\n before,\n after,\n afterCaption,\n bottom,\n actions,\n multiline,\n className,\n afterAlign = 'start',\n ...restProps\n}: RichCellProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n\n const afterRender = () => {\n if (!after && !afterCaption) {\n return;\n }\n return (\n <div\n className={classNames(styles['RichCell__content-after'], alignAfterClassNames[afterAlign])}\n >\n {after && <div className={styles['RichCell__after-children']}>{after}</div>}\n {afterCaption && <div className={styles['RichCell__after-caption']}>{afterCaption}</div>}\n </div>\n );\n };\n\n return (\n <Tappable\n {...restProps}\n className={classNames(\n styles['RichCell'],\n !multiline && styles['RichCell--text-ellipsis'],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n className,\n )}\n >\n {before && <div className={styles['RichCell__before']}>{before}</div>}\n <div className={styles['RichCell__in']}>\n <div className={styles['RichCell__content']}>\n <div className={styles['RichCell__content-before']}>\n {subhead && (\n <Subhead Component=\"div\" className={styles['RichCell__subhead']}>\n {subhead}\n </Subhead>\n )}\n <div className={styles['RichCell__children']}>{children}</div>\n {text && <div className={styles['RichCell__text']}>{text}</div>}\n {caption && (\n <Subhead Component=\"div\" className={styles['RichCell__caption']}>\n {caption}\n </Subhead>\n )}\n </div>\n {afterAlign === 'start' && afterRender()}\n </div>\n {bottom && <div className={styles['RichCell__bottom']}>{bottom}</div>}\n {actions && <div className={styles['RichCell__actions']}>{actions}</div>}\n </div>\n {afterAlign !== 'start' && afterRender()}\n </Tappable>\n );\n};\n\nRichCell.Icon = RichCellIcon;\n"],"names":["React","classNames","useAdaptivity","Tappable","Subhead","RichCellIcon","sizeYClassNames","none","alignAfterClassNames","start","center","end","RichCell","subhead","children","text","caption","before","after","afterCaption","bottom","actions","multiline","className","afterAlign","restProps","sizeY","afterRender","div","Component","Icon"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,QAAQ,QAA4B,uBAAuB;AACpE,SAASC,OAAO,QAAQ,gCAAgC;AACxD,SAASC,YAAY,QAAQ,8BAA8B;AAG3D,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;AACb;AAEA,MAAMC,uBAAuB;IAC3BC,KAAK;IACLC,MAAM;IACNC,GAAG;AACL;AAwDA;;CAEC,GACD,OAAO,MAAMC,WAET;QAAC,EACHC,OAAO,EACPC,QAAQ,EACRC,IAAI,EACJC,OAAO,EACPC,MAAM,EACNC,KAAK,EACLC,YAAY,EACZC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,aAAa,OAAO,EAEN,WADXC;QAZHZ;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAM,EAAEE,QAAQ,MAAM,EAAE,GAAGxB;IAE3B,MAAMyB,cAAc;QAClB,IAAI,CAACT,SAAS,CAACC,cAAc;YAC3B;QACF;QACA,qBACE,MAACS;YACCL,WAAWtB,0CAA8CO,oBAAoB,CAACgB,WAAW;;gBAExFN,uBAAS,KAACU;oBAAIL,SAAS;8BAAuCL;;gBAC9DC,8BAAgB,KAACS;oBAAIL,SAAS;8BAAsCJ;;;;IAG3E;IAEA,qBACE,MAAChB,kDACKsB;QACJF,WAAWtB,2BAET,CAACqB,4CACDI,UAAU,aAAapB,eAAe,CAACoB,MAAM,EAC7CH;;YAGDN,wBAAU,KAACW;gBAAIL,SAAS;0BAA+BN;;0BACxD,MAACW;gBAAIL,SAAS;;kCACZ,MAACK;wBAAIL,SAAS;;0CACZ,MAACK;gCAAIL,SAAS;;oCACXV,yBACC,KAACT;wCAAQyB,WAAU;wCAAMN,SAAS;kDAC/BV;;kDAGL,KAACe;wCAAIL,SAAS;kDAAiCT;;oCAC9CC,sBAAQ,KAACa;wCAAIL,SAAS;kDAA6BR;;oCACnDC,yBACC,KAACZ;wCAAQyB,WAAU;wCAAMN,SAAS;kDAC/BP;;;;4BAINQ,eAAe,WAAWG;;;oBAE5BP,wBAAU,KAACQ;wBAAIL,SAAS;kCAA+BH;;oBACvDC,yBAAW,KAACO;wBAAIL,SAAS;kCAAgCF;;;;YAE3DG,eAAe,WAAWG;;;AAGjC,EAAE;AAEFf,SAASkB,IAAI,GAAGzB"}
1
+ {"version":3,"sources":["../../../src/components/RichCell/RichCell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { Tappable, type TappableProps } from '../Tappable/Tappable';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { RichCellIcon } from './RichCellIcon/RichCellIcon';\nimport styles from './RichCell.module.css';\n\nconst sizeYClassNames = {\n none: styles['RichCell--sizeY-none'],\n compact: styles['RichCell--sizeY-compact'],\n};\n\nconst alignAfterClassNames = {\n start: styles['RichCell__content-after--align-start'],\n center: styles['RichCell__content-after--align-center'],\n end: styles['RichCell__content-after--align-end'],\n};\n\nexport interface RichCellProps extends TappableProps {\n /**\n * Контейнер для текста над `children`.\n */\n subhead?: React.ReactNode;\n /**\n * Контейнер для текста под `children`.\n */\n text?: React.ReactNode;\n /**\n * Контейнер для текста под `text`.\n */\n caption?: React.ReactNode;\n /**\n * Контейнер для контента под `caption`. Например `<UsersStack size=\"m\" />`.\n */\n bottom?: React.ReactNode;\n /**\n * Кнопки-действия. Принимает [`Button`](https://vkcom.github.io/VKUI/#/Button) с параметрами:\n *\n * - `mode=\"primary\" size=\"s\"`\n * - `mode=\"secondary\" size=\"s\"`\n *\n * Для набора кнопок используйте [`ButtonGroup`](https://vkcom.github.io/VKUI/#/ButtonGroup) с параметрами:\n *\n * - `mode=\"horizontal\" gap=\"s\" stretched`\n */\n actions?: React.ReactNode;\n /**\n * `<Avatar size={40|48|72} />`.\n */\n before?: React.ReactNode;\n /**\n * Иконка 28 или текст.\n */\n after?: React.ReactNode;\n /**\n * Текст под `after`.\n */\n afterCaption?: React.ReactNode;\n /**\n * Выравнивание after компонента по вертикали\n */\n afterAlign?: 'start' | 'center' | 'end';\n /**\n * Убирает анимацию нажатия.\n */\n disabled?: boolean;\n /**\n * Включает многострочный режим для `subhead`, `children`, `text` и `caption`.\n */\n multiline?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/RichCell\n */\nexport const RichCell: React.FC<RichCellProps> & {\n Icon: typeof RichCellIcon;\n} = ({\n subhead,\n children,\n text,\n caption,\n before,\n after,\n afterCaption,\n bottom,\n actions,\n multiline,\n className,\n afterAlign = 'start',\n ...restProps\n}: RichCellProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n\n const afterRender = () => {\n if (!after && !afterCaption) {\n return;\n }\n return (\n <div\n className={classNames(styles['RichCell__content-after'], alignAfterClassNames[afterAlign])}\n >\n {after && <div className={styles['RichCell__after-children']}>{after}</div>}\n {afterCaption && <div className={styles['RichCell__after-caption']}>{afterCaption}</div>}\n </div>\n );\n };\n\n return (\n <Tappable\n {...restProps}\n className={classNames(\n styles['RichCell'],\n !multiline && styles['RichCell--text-ellipsis'],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n className,\n )}\n >\n {before && <div className={styles['RichCell__before']}>{before}</div>}\n <div className={styles['RichCell__in']}>\n <div className={styles['RichCell__content']}>\n <div className={styles['RichCell__content-before']}>\n {subhead && (\n <Subhead Component=\"div\" className={styles['RichCell__subhead']}>\n {subhead}\n </Subhead>\n )}\n <div className={styles['RichCell__children']}>{children}</div>\n {text && <div className={styles['RichCell__text']}>{text}</div>}\n {caption && (\n <Subhead Component=\"div\" className={styles['RichCell__caption']}>\n {caption}\n </Subhead>\n )}\n </div>\n {afterAlign === 'start' && afterRender()}\n </div>\n {bottom && <div className={styles['RichCell__bottom']}>{bottom}</div>}\n {actions && <div className={styles['RichCell__actions']}>{actions}</div>}\n </div>\n {afterAlign !== 'start' && afterRender()}\n </Tappable>\n );\n};\n\nRichCell.Icon = RichCellIcon;\n"],"names":["React","classNames","useAdaptivity","Tappable","Subhead","RichCellIcon","sizeYClassNames","none","compact","alignAfterClassNames","start","center","end","RichCell","subhead","children","text","caption","before","after","afterCaption","bottom","actions","multiline","className","afterAlign","restProps","sizeY","afterRender","div","Component","Icon"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,QAAQ,QAA4B,uBAAuB;AACpE,SAASC,OAAO,QAAQ,gCAAgC;AACxD,SAASC,YAAY,QAAQ,8BAA8B;AAG3D,MAAMC,kBAAkB;IACtBC,IAAI;IACJC,OAAO;AACT;AAEA,MAAMC,uBAAuB;IAC3BC,KAAK;IACLC,MAAM;IACNC,GAAG;AACL;AAwDA;;CAEC,GACD,OAAO,MAAMC,WAET;QAAC,EACHC,OAAO,EACPC,QAAQ,EACRC,IAAI,EACJC,OAAO,EACPC,MAAM,EACNC,KAAK,EACLC,YAAY,EACZC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,aAAa,OAAO,EAEN,WADXC;QAZHZ;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAM,EAAEE,QAAQ,MAAM,EAAE,GAAGzB;IAE3B,MAAM0B,cAAc;QAClB,IAAI,CAACT,SAAS,CAACC,cAAc;YAC3B;QACF;QACA,qBACE,MAACS;YACCL,WAAWvB,0CAA8CQ,oBAAoB,CAACgB,WAAW;;gBAExFN,uBAAS,KAACU;oBAAIL,SAAS;8BAAuCL;;gBAC9DC,8BAAgB,KAACS;oBAAIL,SAAS;8BAAsCJ;;;;IAG3E;IAEA,qBACE,MAACjB,kDACKuB;QACJF,WAAWvB,2BAET,CAACsB,4CACDI,UAAU,aAAarB,eAAe,CAACqB,MAAM,EAC7CH;;YAGDN,wBAAU,KAACW;gBAAIL,SAAS;0BAA+BN;;0BACxD,MAACW;gBAAIL,SAAS;;kCACZ,MAACK;wBAAIL,SAAS;;0CACZ,MAACK;gCAAIL,SAAS;;oCACXV,yBACC,KAACV;wCAAQ0B,WAAU;wCAAMN,SAAS;kDAC/BV;;kDAGL,KAACe;wCAAIL,SAAS;kDAAiCT;;oCAC9CC,sBAAQ,KAACa;wCAAIL,SAAS;kDAA6BR;;oCACnDC,yBACC,KAACb;wCAAQ0B,WAAU;wCAAMN,SAAS;kDAC/BP;;;;4BAINQ,eAAe,WAAWG;;;oBAE5BP,wBAAU,KAACQ;wBAAIL,SAAS;kCAA+BH;;oBACvDC,yBAAW,KAACO;wBAAIL,SAAS;kCAAgCF;;;;YAE3DG,eAAe,WAAWG;;;AAGjC,EAAE;AAEFf,SAASkB,IAAI,GAAG1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenSpinner.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenSpinner/ScreenSpinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG;IACzD,SAAS,EAAE,OAAO,sBAAsB,CAAC;IACzC,MAAM,EAAE,OAAO,mBAAmB,CAAC;IACnC,QAAQ,EAAE,OAAO,qBAAqB,CAAC;CAoBxC,CAAC"}
1
+ {"version":3,"file":"ScreenSpinner.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenSpinner/ScreenSpinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG;IACzD,SAAS,EAAE,OAAO,sBAAsB,CAAC;IACzC,MAAM,EAAE,OAAO,mBAAmB,CAAC;IACnC,QAAQ,EAAE,OAAO,qBAAqB,CAAC;CAqBxC,CAAC"}
@@ -10,13 +10,14 @@ import { ScreenSpinnerSwapIcon } from './ScreenSpinnerSwapIcon';
10
10
  /**
11
11
  * @see https://vkcom.github.io/VKUI/#/ScreenSpinner
12
12
  */ export const ScreenSpinner = (_param)=>{
13
- var { style, className, state = 'loading', onClick, cancelLabel, mode } = _param, restProps = _object_without_properties(_param, [
13
+ var { style, className, state = 'loading', onClick, cancelLabel, mode, caption } = _param, restProps = _object_without_properties(_param, [
14
14
  "style",
15
15
  "className",
16
16
  "state",
17
17
  "onClick",
18
18
  "cancelLabel",
19
- "mode"
19
+ "mode",
20
+ "caption"
20
21
  ]);
21
22
  useScrollLock();
22
23
  return /*#__PURE__*/ _jsx(PopoutWrapper, {
@@ -26,6 +27,7 @@ import { ScreenSpinnerSwapIcon } from './ScreenSpinnerSwapIcon';
26
27
  children: /*#__PURE__*/ _jsxs(ScreenSpinnerContainer, {
27
28
  state: state,
28
29
  mode: mode,
30
+ caption: caption,
29
31
  children: [
30
32
  /*#__PURE__*/ _jsx(ScreenSpinnerLoader, _object_spread({}, restProps)),
31
33
  /*#__PURE__*/ _jsx(ScreenSpinnerSwapIcon, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ScreenSpinner/ScreenSpinner.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { ScreenSpinnerContainer } from './ScreenSpinnerContainer';\nimport { ScreenSpinnerLoader } from './ScreenSpinnerLoader';\nimport { ScreenSpinnerSwapIcon } from './ScreenSpinnerSwapIcon';\nimport type { ScreenSpinnerProps } from './types';\n\nexport type { ScreenSpinnerProps };\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ScreenSpinner\n */\nexport const ScreenSpinner: React.FC<ScreenSpinnerProps> & {\n Container: typeof ScreenSpinnerContainer;\n Loader: typeof ScreenSpinnerLoader;\n SwapIcon: typeof ScreenSpinnerSwapIcon;\n} = ({\n style,\n className,\n state = 'loading',\n onClick,\n cancelLabel,\n mode,\n ...restProps\n}: ScreenSpinnerProps): React.ReactNode => {\n useScrollLock();\n\n return (\n <PopoutWrapper className={className} style={style} noBackground>\n <ScreenSpinnerContainer state={state} mode={mode}>\n <ScreenSpinnerLoader {...restProps} />\n <ScreenSpinnerSwapIcon onClick={onClick} cancelLabel={cancelLabel} />\n </ScreenSpinnerContainer>\n </PopoutWrapper>\n );\n};\n\nScreenSpinner.displayName = 'ScreenSpinner';\n\nScreenSpinner.Container = ScreenSpinnerContainer;\nScreenSpinner.Container.displayName = 'ScreenSpinner.Container';\n\nScreenSpinner.Loader = ScreenSpinnerLoader;\nScreenSpinner.Loader.displayName = 'ScreenSpinner.Loader';\n\nScreenSpinner.SwapIcon = ScreenSpinnerSwapIcon;\nScreenSpinner.SwapIcon.displayName = 'ScreenSpinner.SwapIcon';\n"],"names":["React","useScrollLock","PopoutWrapper","ScreenSpinnerContainer","ScreenSpinnerLoader","ScreenSpinnerSwapIcon","ScreenSpinner","style","className","state","onClick","cancelLabel","mode","restProps","noBackground","displayName","Container","Loader","SwapIcon"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,sBAAsB,QAAQ,2BAA2B;AAClE,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,qBAAqB,QAAQ,0BAA0B;AAKhE;;CAEC,GACD,OAAO,MAAMC,gBAIT;QAAC,EACHC,KAAK,EACLC,SAAS,EACTC,QAAQ,SAAS,EACjBC,OAAO,EACPC,WAAW,EACXC,IAAI,EAEe,WADhBC;QANHN;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGAX;IAEA,qBACE,KAACC;QAAcM,WAAWA;QAAWD,OAAOA;QAAOO,YAAY;kBAC7D,cAAA,MAACX;YAAuBM,OAAOA;YAAOG,MAAMA;;8BAC1C,KAACR,wCAAwBS;8BACzB,KAACR;oBAAsBK,SAASA;oBAASC,aAAaA;;;;;AAI9D,EAAE;AAEFL,cAAcS,WAAW,GAAG;AAE5BT,cAAcU,SAAS,GAAGb;AAC1BG,cAAcU,SAAS,CAACD,WAAW,GAAG;AAEtCT,cAAcW,MAAM,GAAGb;AACvBE,cAAcW,MAAM,CAACF,WAAW,GAAG;AAEnCT,cAAcY,QAAQ,GAAGb;AACzBC,cAAcY,QAAQ,CAACH,WAAW,GAAG"}
1
+ {"version":3,"sources":["../../../src/components/ScreenSpinner/ScreenSpinner.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { ScreenSpinnerContainer } from './ScreenSpinnerContainer';\nimport { ScreenSpinnerLoader } from './ScreenSpinnerLoader';\nimport { ScreenSpinnerSwapIcon } from './ScreenSpinnerSwapIcon';\nimport type { ScreenSpinnerProps } from './types';\n\nexport type { ScreenSpinnerProps };\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ScreenSpinner\n */\nexport const ScreenSpinner: React.FC<ScreenSpinnerProps> & {\n Container: typeof ScreenSpinnerContainer;\n Loader: typeof ScreenSpinnerLoader;\n SwapIcon: typeof ScreenSpinnerSwapIcon;\n} = ({\n style,\n className,\n state = 'loading',\n onClick,\n cancelLabel,\n mode,\n caption,\n ...restProps\n}: ScreenSpinnerProps): React.ReactNode => {\n useScrollLock();\n\n return (\n <PopoutWrapper className={className} style={style} noBackground>\n <ScreenSpinnerContainer state={state} mode={mode} caption={caption}>\n <ScreenSpinnerLoader {...restProps} />\n <ScreenSpinnerSwapIcon onClick={onClick} cancelLabel={cancelLabel} />\n </ScreenSpinnerContainer>\n </PopoutWrapper>\n );\n};\n\nScreenSpinner.displayName = 'ScreenSpinner';\n\nScreenSpinner.Container = ScreenSpinnerContainer;\nScreenSpinner.Container.displayName = 'ScreenSpinner.Container';\n\nScreenSpinner.Loader = ScreenSpinnerLoader;\nScreenSpinner.Loader.displayName = 'ScreenSpinner.Loader';\n\nScreenSpinner.SwapIcon = ScreenSpinnerSwapIcon;\nScreenSpinner.SwapIcon.displayName = 'ScreenSpinner.SwapIcon';\n"],"names":["React","useScrollLock","PopoutWrapper","ScreenSpinnerContainer","ScreenSpinnerLoader","ScreenSpinnerSwapIcon","ScreenSpinner","style","className","state","onClick","cancelLabel","mode","caption","restProps","noBackground","displayName","Container","Loader","SwapIcon"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,sBAAsB,QAAQ,2BAA2B;AAClE,SAASC,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,qBAAqB,QAAQ,0BAA0B;AAKhE;;CAEC,GACD,OAAO,MAAMC,gBAIT;QAAC,EACHC,KAAK,EACLC,SAAS,EACTC,QAAQ,SAAS,EACjBC,OAAO,EACPC,WAAW,EACXC,IAAI,EACJC,OAAO,EAEY,WADhBC;QAPHP;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGAZ;IAEA,qBACE,KAACC;QAAcM,WAAWA;QAAWD,OAAOA;QAAOQ,YAAY;kBAC7D,cAAA,MAACZ;YAAuBM,OAAOA;YAAOG,MAAMA;YAAMC,SAASA;;8BACzD,KAACT,wCAAwBU;8BACzB,KAACT;oBAAsBK,SAASA;oBAASC,aAAaA;;;;;AAI9D,EAAE;AAEFL,cAAcU,WAAW,GAAG;AAE5BV,cAAcW,SAAS,GAAGd;AAC1BG,cAAcW,SAAS,CAACD,WAAW,GAAG;AAEtCV,cAAcY,MAAM,GAAGd;AACvBE,cAAcY,MAAM,CAACF,WAAW,GAAG;AAEnCV,cAAca,QAAQ,GAAGd;AACzBC,cAAca,QAAQ,CAACH,WAAW,GAAG"}
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import type { HTMLAttributesWithRootRef } from '../../types';
3
3
  import { type ScreenSpinnerProps } from './types';
4
- type ScreenSpinnerContainerProps = HTMLAttributesWithRootRef<HTMLSpanElement> & Pick<ScreenSpinnerProps, 'state' | 'mode'>;
4
+ type ScreenSpinnerContainerProps = HTMLAttributesWithRootRef<HTMLSpanElement> & Pick<ScreenSpinnerProps, 'state' | 'mode' | 'caption'>;
5
5
  export declare const ScreenSpinnerContainer: React.FC<ScreenSpinnerContainerProps>;
6
6
  export {};
7
7
  //# sourceMappingURL=ScreenSpinnerContainer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenSpinnerContainer.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenSpinner/ScreenSpinnerContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAclD,KAAK,2BAA2B,GAAG,yBAAyB,CAAC,eAAe,CAAC,GAC3E,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;AAE7C,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAiBxE,CAAC"}
1
+ {"version":3,"file":"ScreenSpinnerContainer.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenSpinner/ScreenSpinnerContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAI7D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAclD,KAAK,2BAA2B,GAAG,yBAAyB,CAAC,eAAe,CAAC,GAC3E,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;AAEzD,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA2BxE,CAAC"}
@@ -1,9 +1,11 @@
1
1
  import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
2
+ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
2
3
  import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
3
- import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
5
  import * as React from 'react';
5
- import { classNames } from '@vkontakte/vkjs';
6
+ import { classNames, hasReactNode } from '@vkontakte/vkjs';
6
7
  import { RootComponent } from '../RootComponent/RootComponent';
8
+ import { Footnote } from '../Typography/Footnote/Footnote';
7
9
  import { ScreenSpinnerContext } from './context';
8
10
  const stateClassNames = {
9
11
  cancelable: "vkuiScreenSpinner--state-cancelable",
@@ -15,17 +17,32 @@ const modeClassNames = {
15
17
  overlay: "vkuiScreenSpinner--mode-overlay"
16
18
  };
17
19
  export const ScreenSpinnerContainer = (_param)=>{
18
- var { state = 'loading', mode = 'shadow' } = _param, restProps = _object_without_properties(_param, [
20
+ var { state = 'loading', mode = 'shadow', caption, children } = _param, restProps = _object_without_properties(_param, [
19
21
  "state",
20
- "mode"
22
+ "mode",
23
+ "caption",
24
+ "children"
21
25
  ]);
22
26
  return /*#__PURE__*/ _jsx(ScreenSpinnerContext.Provider, {
23
27
  value: {
24
- state
28
+ state,
29
+ caption
25
30
  },
26
- children: /*#__PURE__*/ _jsx(RootComponent, _object_spread({
27
- baseClassName: classNames("vkuiScreenSpinner", modeClassNames[mode], state !== 'loading' && stateClassNames[state])
28
- }, restProps))
31
+ children: /*#__PURE__*/ _jsxs(RootComponent, _object_spread_props(_object_spread({
32
+ baseClassName: classNames("vkuiScreenSpinner", modeClassNames[mode], state !== 'loading' && stateClassNames[state], hasReactNode(caption) && "vkuiScreenSpinner--has-caption")
33
+ }, restProps), {
34
+ children: [
35
+ /*#__PURE__*/ _jsx("div", {
36
+ className: "vkuiScreenSpinner__icon-slot",
37
+ children: children
38
+ }),
39
+ hasReactNode(caption) && /*#__PURE__*/ _jsx(Footnote, {
40
+ className: "vkuiScreenSpinner__caption",
41
+ "aria-hidden": true,
42
+ children: caption
43
+ })
44
+ ]
45
+ }))
29
46
  });
30
47
  };
31
48
  ScreenSpinnerContainer.displayName = 'ScreenSpinnerContainer';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ScreenSpinner/ScreenSpinnerContainer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { ScreenSpinnerContext } from './context';\nimport { type ScreenSpinnerProps } from './types';\nimport styles from './ScreenSpinner.module.css';\n\nconst stateClassNames = {\n cancelable: styles['ScreenSpinner--state-cancelable'],\n done: styles['ScreenSpinner--state-done'],\n error: styles['ScreenSpinner--state-error'],\n};\n\nconst modeClassNames = {\n shadow: styles['ScreenSpinner--mode-shadow'],\n overlay: styles['ScreenSpinner--mode-overlay'],\n};\n\ntype ScreenSpinnerContainerProps = HTMLAttributesWithRootRef<HTMLSpanElement> &\n Pick<ScreenSpinnerProps, 'state' | 'mode'>;\n\nexport const ScreenSpinnerContainer: React.FC<ScreenSpinnerContainerProps> = ({\n state = 'loading',\n mode = 'shadow',\n ...restProps\n}: ScreenSpinnerContainerProps) => {\n return (\n <ScreenSpinnerContext.Provider value={{ state }}>\n <RootComponent\n baseClassName={classNames(\n styles['ScreenSpinner'],\n modeClassNames[mode],\n state !== 'loading' && stateClassNames[state],\n )}\n {...restProps}\n />\n </ScreenSpinnerContext.Provider>\n );\n};\n\nScreenSpinnerContainer.displayName = 'ScreenSpinnerContainer';\n"],"names":["React","classNames","RootComponent","ScreenSpinnerContext","stateClassNames","cancelable","done","error","modeClassNames","shadow","overlay","ScreenSpinnerContainer","state","mode","restProps","Provider","value","baseClassName","displayName"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAE7C,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,oBAAoB,QAAQ,YAAY;AAIjD,MAAMC,kBAAkB;IACtBC,UAAU;IACVC,IAAI;IACJC,KAAK;AACP;AAEA,MAAMC,iBAAiB;IACrBC,MAAM;IACNC,OAAO;AACT;AAKA,OAAO,MAAMC,yBAAgE;QAAC,EAC5EC,QAAQ,SAAS,EACjBC,OAAO,QAAQ,EAEa,WADzBC;QAFHF;QACAC;;IAGA,qBACE,KAACV,qBAAqBY,QAAQ;QAACC,OAAO;YAAEJ;QAAM;kBAC5C,cAAA,KAACV;YACCe,eAAehB,gCAEbO,cAAc,CAACK,KAAK,EACpBD,UAAU,aAAaR,eAAe,CAACQ,MAAM;WAE3CE;;AAIZ,EAAE;AAEFH,uBAAuBO,WAAW,GAAG"}
1
+ {"version":3,"sources":["../../../src/components/ScreenSpinner/ScreenSpinnerContainer.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { ScreenSpinnerContext } from './context';\nimport { type ScreenSpinnerProps } from './types';\nimport styles from './ScreenSpinner.module.css';\n\nconst stateClassNames = {\n cancelable: styles['ScreenSpinner--state-cancelable'],\n done: styles['ScreenSpinner--state-done'],\n error: styles['ScreenSpinner--state-error'],\n};\n\nconst modeClassNames = {\n shadow: styles['ScreenSpinner--mode-shadow'],\n overlay: styles['ScreenSpinner--mode-overlay'],\n};\n\ntype ScreenSpinnerContainerProps = HTMLAttributesWithRootRef<HTMLSpanElement> &\n Pick<ScreenSpinnerProps, 'state' | 'mode' | 'caption'>;\n\nexport const ScreenSpinnerContainer: React.FC<ScreenSpinnerContainerProps> = ({\n state = 'loading',\n mode = 'shadow',\n caption,\n children,\n ...restProps\n}: ScreenSpinnerContainerProps) => {\n return (\n <ScreenSpinnerContext.Provider value={{ state, caption }}>\n <RootComponent\n baseClassName={classNames(\n styles['ScreenSpinner'],\n modeClassNames[mode],\n state !== 'loading' && stateClassNames[state],\n hasReactNode(caption) && styles['ScreenSpinner--has-caption'],\n )}\n {...restProps}\n >\n <div className={styles['ScreenSpinner__icon-slot']}>{children}</div>\n {hasReactNode(caption) && (\n <Footnote className={styles.ScreenSpinner__caption} aria-hidden>\n {caption}\n </Footnote>\n )}\n </RootComponent>\n </ScreenSpinnerContext.Provider>\n );\n};\n\nScreenSpinnerContainer.displayName = 'ScreenSpinnerContainer';\n"],"names":["React","classNames","hasReactNode","RootComponent","Footnote","ScreenSpinnerContext","stateClassNames","cancelable","done","error","modeClassNames","shadow","overlay","ScreenSpinnerContainer","state","mode","caption","children","restProps","Provider","value","baseClassName","div","className","aria-hidden","displayName"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAE3D,SAASC,aAAa,QAAQ,iCAAiC;AAC/D,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,oBAAoB,QAAQ,YAAY;AAIjD,MAAMC,kBAAkB;IACtBC,UAAU;IACVC,IAAI;IACJC,KAAK;AACP;AAEA,MAAMC,iBAAiB;IACrBC,MAAM;IACNC,OAAO;AACT;AAKA,OAAO,MAAMC,yBAAgE;QAAC,EAC5EC,QAAQ,SAAS,EACjBC,OAAO,QAAQ,EACfC,OAAO,EACPC,QAAQ,EAEoB,WADzBC;QAJHJ;QACAC;QACAC;QACAC;;IAGA,qBACE,KAACZ,qBAAqBc,QAAQ;QAACC,OAAO;YAAEN;YAAOE;QAAQ;kBACrD,cAAA,MAACb;YACCkB,eAAepB,gCAEbS,cAAc,CAACK,KAAK,EACpBD,UAAU,aAAaR,eAAe,CAACQ,MAAM,EAC7CZ,aAAac;WAEXE;;8BAEJ,KAACI;oBAAIC,SAAS;8BAAuCN;;gBACpDf,aAAac,0BACZ,KAACZ;oBAASmB,SAAS;oBAAiCC,aAAW;8BAC5DR;;;;;AAMb,EAAE;AAEFH,uBAAuBY,WAAW,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenSpinnerLoader.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenSpinner/ScreenSpinnerLoader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAUtD,CAAC"}
1
+ {"version":3,"file":"ScreenSpinnerLoader.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenSpinner/ScreenSpinnerLoader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAqBtD,CAAC"}
@@ -3,18 +3,23 @@ import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
3
3
  import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import * as React from 'react';
6
+ import { classNames } from '@vkontakte/vkjs';
6
7
  import { Spinner } from '../Spinner/Spinner';
8
+ import { ScreenSpinnerContext } from './context';
7
9
  export const ScreenSpinnerLoader = (_param)=>{
8
- var { size = 'large', children = 'Пожалуйста, подождите...' } = _param, restProps = _object_without_properties(_param, [
10
+ var { size = 'large', children } = _param, restProps = _object_without_properties(_param, [
9
11
  "size",
10
12
  "children"
11
13
  ]);
14
+ const { caption } = React.useContext(ScreenSpinnerContext);
15
+ // TODO [>=7]: см. https://github.com/VKCOM/VKUI/pull/7505#discussion_r1754153438
16
+ const a11yText = children ? children : caption !== null && caption !== void 0 ? caption : 'Пожалуйста, подождите...';
12
17
  return /*#__PURE__*/ _jsx(Spinner, _object_spread_props(_object_spread({
13
- className: "vkuiScreenSpinner__spinner",
18
+ className: classNames("vkuiScreenSpinner__spinner", !caption && "vkuiScreenSpinner__spinner--transition"),
14
19
  size: size,
15
20
  noColor: true
16
21
  }, restProps), {
17
- children: children
22
+ children: a11yText
18
23
  }));
19
24
  };
20
25
  ScreenSpinnerLoader.displayName = 'ScreenSpinnerLoader';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ScreenSpinner/ScreenSpinnerLoader.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Spinner } from '../Spinner/Spinner';\nimport type { SpinnerProps } from '../Spinner/Spinner';\nimport styles from './ScreenSpinner.module.css';\n\nexport const ScreenSpinnerLoader: React.FC<SpinnerProps> = ({\n size = 'large',\n children = 'Пожалуйста, подождите...',\n ...restProps\n}: SpinnerProps) => {\n return (\n <Spinner className={styles['ScreenSpinner__spinner']} size={size} noColor {...restProps}>\n {children}\n </Spinner>\n );\n};\n\nScreenSpinnerLoader.displayName = 'ScreenSpinnerLoader';\n"],"names":["React","Spinner","ScreenSpinnerLoader","size","children","restProps","className","noColor","displayName"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,OAAO,QAAQ,qBAAqB;AAI7C,OAAO,MAAMC,sBAA8C;QAAC,EAC1DC,OAAO,OAAO,EACdC,WAAW,0BAA0B,EAExB,WADVC;QAFHF;QACAC;;IAGA,qBACE,KAACH;QAAQK,SAAS;QAAoCH,MAAMA;QAAMI,OAAO;OAAKF;kBAC3ED;;AAGP,EAAE;AAEFF,oBAAoBM,WAAW,GAAG"}
1
+ {"version":3,"sources":["../../../src/components/ScreenSpinner/ScreenSpinnerLoader.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { Spinner } from '../Spinner/Spinner';\nimport type { SpinnerProps } from '../Spinner/Spinner';\nimport { ScreenSpinnerContext } from './context';\nimport styles from './ScreenSpinner.module.css';\n\nexport const ScreenSpinnerLoader: React.FC<SpinnerProps> = ({\n size = 'large',\n children,\n ...restProps\n}: SpinnerProps) => {\n const { caption } = React.useContext(ScreenSpinnerContext);\n // TODO [>=7]: см. https://github.com/VKCOM/VKUI/pull/7505#discussion_r1754153438\n const a11yText = children ? children : caption ?? 'Пожалуйста, подождите...';\n return (\n <Spinner\n className={classNames(\n styles['ScreenSpinner__spinner'],\n !caption && styles['ScreenSpinner__spinner--transition'],\n )}\n size={size}\n noColor\n {...restProps}\n >\n {a11yText}\n </Spinner>\n );\n};\n\nScreenSpinnerLoader.displayName = 'ScreenSpinnerLoader';\n"],"names":["React","classNames","Spinner","ScreenSpinnerContext","ScreenSpinnerLoader","size","children","restProps","caption","useContext","a11yText","className","noColor","displayName"],"mappings":";;;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,OAAO,QAAQ,qBAAqB;AAE7C,SAASC,oBAAoB,QAAQ,YAAY;AAGjD,OAAO,MAAMC,sBAA8C;QAAC,EAC1DC,OAAO,OAAO,EACdC,QAAQ,EAEK,WADVC;QAFHF;QACAC;;IAGA,MAAM,EAAEE,OAAO,EAAE,GAAGR,MAAMS,UAAU,CAACN;IACrC,iFAAiF;IACjF,MAAMO,WAAWJ,WAAWA,WAAWE,oBAAAA,qBAAAA,UAAW;IAClD,qBACE,KAACN;QACCS,WAAWV,yCAET,CAACO;QAEHH,MAAMA;QACNO,OAAO;OACHL;kBAEHG;;AAGP,EAAE;AAEFN,oBAAoBS,WAAW,GAAG"}
@@ -2,6 +2,7 @@ import * as React from 'react';
2
2
  import { type ScreenSpinnerProps } from './types';
3
3
  export interface ScreenSpinnerContextProps {
4
4
  state: NonNullable<ScreenSpinnerProps['state']>;
5
+ caption?: ScreenSpinnerProps['caption'];
5
6
  }
6
7
  export declare const ScreenSpinnerContext: React.Context<ScreenSpinnerContextProps>;
7
8
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenSpinner/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;CACjD;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAGtE,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenSpinner/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;CACzC;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAItE,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  export const ScreenSpinnerContext = React.createContext({
3
- state: 'loading'
3
+ state: 'loading',
4
+ caption: undefined
4
5
  });
5
6
 
6
7
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ScreenSpinner/context.ts"],"sourcesContent":["import * as React from 'react';\nimport { type ScreenSpinnerProps } from './types';\n\nexport interface ScreenSpinnerContextProps {\n state: NonNullable<ScreenSpinnerProps['state']>;\n}\n\nexport const ScreenSpinnerContext: React.Context<ScreenSpinnerContextProps> =\n React.createContext<ScreenSpinnerContextProps>({\n state: 'loading',\n });\n"],"names":["React","ScreenSpinnerContext","createContext","state"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAO/B,OAAO,MAAMC,uBACXD,MAAME,aAAa,CAA4B;IAC7CC,OAAO;AACT,GAAG"}
1
+ {"version":3,"sources":["../../../src/components/ScreenSpinner/context.ts"],"sourcesContent":["import * as React from 'react';\nimport { type ScreenSpinnerProps } from './types';\n\nexport interface ScreenSpinnerContextProps {\n state: NonNullable<ScreenSpinnerProps['state']>;\n caption?: ScreenSpinnerProps['caption'];\n}\n\nexport const ScreenSpinnerContext: React.Context<ScreenSpinnerContextProps> =\n React.createContext<ScreenSpinnerContextProps>({\n state: 'loading',\n caption: undefined,\n });\n"],"names":["React","ScreenSpinnerContext","createContext","state","caption","undefined"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAQ/B,OAAO,MAAMC,uBACXD,MAAME,aAAa,CAA4B;IAC7CC,OAAO;IACPC,SAASC;AACX,GAAG"}
@@ -1,7 +1,12 @@
1
+ import type * as React from 'react';
1
2
  import type { SpinnerProps } from '../Spinner/Spinner';
2
3
  export interface ScreenSpinnerProps extends SpinnerProps {
3
4
  state?: 'loading' | 'cancelable' | 'done' | 'error';
4
5
  mode?: 'shadow' | 'overlay';
6
+ /**
7
+ * Текст под иконкой
8
+ */
9
+ caption?: React.ReactNode;
5
10
  cancelLabel?: string;
6
11
  }
7
12
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenSpinner/types.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,KAAK,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;IACpD,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenSpinner/types.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,KAAK,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;IACpD,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ScreenSpinner/types.tsx"],"sourcesContent":["import type { SpinnerProps } from '../Spinner/Spinner';\n\nexport interface ScreenSpinnerProps extends SpinnerProps {\n state?: 'loading' | 'cancelable' | 'done' | 'error';\n mode?: 'shadow' | 'overlay';\n cancelLabel?: string;\n}\n"],"names":[],"mappings":"AAEA,WAIC"}
1
+ {"version":3,"sources":["../../../src/components/ScreenSpinner/types.tsx"],"sourcesContent":["import type * as React from 'react';\nimport type { SpinnerProps } from '../Spinner/Spinner';\n\nexport interface ScreenSpinnerProps extends SpinnerProps {\n state?: 'loading' | 'cancelable' | 'done' | 'error';\n mode?: 'shadow' | 'overlay';\n /**\n * Текст под иконкой\n */\n caption?: React.ReactNode;\n cancelLabel?: string;\n}\n"],"names":[],"mappings":"AAGA,WAQC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Search.d.ts","sourceRoot":"","sources":["../../../src/components/Search/Search.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAK5E,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,KAAK,CAAC,SAAS,EACrB,KAAK,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,KAC7B,KAAK,CAAC,SAAS,CAAC;AAErB,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EACjD,UAAU,CAAC,cAAc,CAAC,EAC1B,MAAM,CAAC,gBAAgB,CAAC;IAC1B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ,EAAE,kBAAkB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7E,WAAW,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;CAC1D;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,8NAmBhB,WAAW,KAAG,KAAK,CAAC,SAwKtB,CAAC"}
1
+ {"version":3,"file":"Search.d.ts","sourceRoot":"","sources":["../../../src/components/Search/Search.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAK5E,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,KAAK,CAAC,SAAS,EACrB,KAAK,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,KAC7B,KAAK,CAAC,SAAS,CAAC;AAErB,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EACjD,UAAU,CAAC,cAAc,CAAC,EAC1B,MAAM,CAAC,gBAAgB,CAAC;IAC1B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ,EAAE,kBAAkB,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7E,WAAW,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;CAC1D;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,8NAmBhB,WAAW,KAAG,KAAK,CAAC,SA6KtB,CAAC"}
@@ -4,7 +4,7 @@ import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import * as React from 'react';
6
6
  import { Icon16Clear, Icon16SearchOutline, Icon24Cancel } from '@vkontakte/icons';
7
- import { classNames, noop } from '@vkontakte/vkjs';
7
+ import { classNames, hasReactNode, noop } from '@vkontakte/vkjs';
8
8
  import { useAdaptivity } from '../../hooks/useAdaptivity';
9
9
  import { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';
10
10
  import { useBooleanState } from '../../hooks/useBooleanState';
@@ -49,6 +49,7 @@ import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';
49
49
  const { sizeY = 'none' } = useAdaptivity();
50
50
  const { sizeY: adaptiveSizeY } = useAdaptivityConditionalRender();
51
51
  const platform = usePlatform();
52
+ const hasAfter = platform === 'ios' && hasReactNode(after);
52
53
  const onFocus = (e)=>{
53
54
  setFocusedTrue();
54
55
  inputProps.onFocus && inputProps.onFocus(e);
@@ -109,7 +110,7 @@ import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';
109
110
  ]
110
111
  }));
111
112
  return /*#__PURE__*/ _jsxs("div", {
112
- className: classNames('vkuiInternalSearch', "vkuiSearch", sizeY === 'none' && "vkuiSearch--sizeY-none", sizeY === 'compact' && "vkuiSearch--sizeY-compact", isFocused && "vkuiSearch--focused", hasValue && "vkuiSearch--has-value", after && "vkuiSearch--has-after", iconProp && "vkuiSearch--has-icon", inputProps.disabled && "vkuiSearch--disabled", !noPadding && "vkuiSearch--withPadding", className),
113
+ className: classNames('vkuiInternalSearch', "vkuiSearch", sizeY === 'none' && "vkuiSearch--sizeY-none", sizeY === 'compact' && "vkuiSearch--sizeY-compact", isFocused && "vkuiSearch--focused", hasValue && "vkuiSearch--has-value", hasAfter && "vkuiSearch--has-after", iconProp && "vkuiSearch--has-icon", inputProps.disabled && "vkuiSearch--disabled", !noPadding && "vkuiSearch--withPadding", className),
113
114
  ref: getRootRef,
114
115
  style: style,
115
116
  children: [
@@ -173,17 +174,21 @@ import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';
173
174
  })
174
175
  ]
175
176
  }),
176
- platform === 'ios' && after && /*#__PURE__*/ _jsx(Button, {
177
- mode: "tertiary",
178
- size: "m",
177
+ hasAfter && /*#__PURE__*/ _jsx("div", {
179
178
  className: "vkuiSearch__after",
180
- focusVisibleMode: "inside",
181
- onClick: onCancel,
182
- onFocus: setFocusedTrue,
183
- onBlur: setFocusedFalse,
184
- children: /*#__PURE__*/ _jsx("span", {
185
- className: "vkuiSearch__afterText",
186
- children: after
179
+ children: /*#__PURE__*/ _jsx(Button, {
180
+ mode: "tertiary",
181
+ size: "m",
182
+ focusVisibleMode: "inside",
183
+ hoverMode: "opacity",
184
+ activeMode: "opacity",
185
+ onClick: onCancel,
186
+ onFocus: setFocusedTrue,
187
+ onBlur: setFocusedFalse,
188
+ children: /*#__PURE__*/ _jsx("span", {
189
+ className: "vkuiSearch__afterTextClip",
190
+ children: after
191
+ })
187
192
  })
188
193
  })
189
194
  ]