@vkontakte/vkui 4.29.0 → 4.31.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 (439) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +111 -84
  4. package/.cache/ts/src/components/Alert/Alert.d.ts +4 -1
  5. package/.cache/ts/src/components/AppRoot/ScrollContext.d.ts +6 -14
  6. package/.cache/ts/src/components/Calendar/Calendar.d.ts +10 -1
  7. package/.cache/ts/src/components/CalendarHeader/CalendarHeader.d.ts +8 -0
  8. package/.cache/ts/src/components/CalendarRange/CalendarRange.d.ts +1 -1
  9. package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  10. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +1 -1
  11. package/.cache/ts/src/components/DateInput/DateInput.d.ts +1 -1
  12. package/.cache/ts/src/components/DateRangeInput/DateRangeInput.d.ts +1 -1
  13. package/.cache/ts/src/components/FormField/FormField.d.ts +15 -1
  14. package/.cache/ts/src/components/Input/Input.d.ts +1 -1
  15. package/.cache/ts/src/components/NativeSelect/NativeSelect.d.ts +1 -2
  16. package/.cache/ts/src/components/Select/Select.d.ts +1 -1
  17. package/.cache/ts/src/components/SelectMimicry/SelectMimicry.d.ts +3 -3
  18. package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +1 -1
  19. package/.cache/ts/src/hooks/useAdaptivity.d.ts +1 -0
  20. package/.cache/ts/src/hooks/useCalendar.d.ts +4 -3
  21. package/.cache/ts/src/index.d.ts +2 -1
  22. package/dist/cjs/components/ActionSheet/ActionSheet.js +6 -10
  23. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  24. package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -1
  25. package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  26. package/dist/cjs/components/Alert/Alert.d.ts +4 -1
  27. package/dist/cjs/components/Alert/Alert.js +20 -2
  28. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  29. package/dist/cjs/components/AppRoot/AppRoot.js +18 -2
  30. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  31. package/dist/cjs/components/AppRoot/ScrollContext.d.ts +6 -14
  32. package/dist/cjs/components/AppRoot/ScrollContext.js +94 -2
  33. package/dist/cjs/components/AppRoot/ScrollContext.js.map +1 -1
  34. package/dist/cjs/components/Calendar/Calendar.d.ts +10 -1
  35. package/dist/cjs/components/Calendar/Calendar.js +16 -5
  36. package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
  37. package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts +8 -0
  38. package/dist/cjs/components/CalendarHeader/CalendarHeader.js +15 -9
  39. package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
  40. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +1 -1
  41. package/dist/cjs/components/CalendarRange/CalendarRange.js +7 -3
  42. package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
  43. package/dist/cjs/components/ChipsInput/ChipsInput.js +3 -1
  44. package/dist/cjs/components/ChipsInput/ChipsInput.js.map +1 -1
  45. package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  46. package/dist/cjs/components/ConfigProvider/ConfigProvider.js +1 -1
  47. package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
  48. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +1 -1
  49. package/dist/cjs/components/CustomSelect/CustomSelect.js +6 -3
  50. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  51. package/dist/cjs/components/DateInput/DateInput.d.ts +1 -1
  52. package/dist/cjs/components/DateInput/DateInput.js +14 -2
  53. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  54. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +1 -1
  55. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +6 -2
  56. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  57. package/dist/cjs/components/Epic/Epic.js +1 -1
  58. package/dist/cjs/components/Epic/Epic.js.map +1 -1
  59. package/dist/cjs/components/FormField/FormField.d.ts +15 -1
  60. package/dist/cjs/components/FormField/FormField.js +6 -2
  61. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  62. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +12 -3
  63. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  64. package/dist/cjs/components/Input/Input.d.ts +1 -1
  65. package/dist/cjs/components/Input/Input.js +3 -1
  66. package/dist/cjs/components/Input/Input.js.map +1 -1
  67. package/dist/cjs/components/ModalCard/ModalCard.js +3 -1
  68. package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
  69. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +4 -2
  70. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  71. package/dist/cjs/components/ModalPage/ModalPage.js +6 -2
  72. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  73. package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js +2 -10
  74. package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  75. package/dist/cjs/components/ModalRoot/ModalRoot.js +2 -2
  76. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  77. package/dist/cjs/components/ModalRoot/ModalRootAdaptive.js +6 -4
  78. package/dist/cjs/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
  79. package/dist/cjs/components/ModalRoot/useModalManager.js +1 -1
  80. package/dist/cjs/components/ModalRoot/useModalManager.js.map +1 -1
  81. package/dist/cjs/components/NativeSelect/NativeSelect.d.ts +1 -2
  82. package/dist/cjs/components/NativeSelect/NativeSelect.js +5 -7
  83. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  84. package/dist/cjs/components/PanelHeader/PanelHeader.js +6 -4
  85. package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
  86. package/dist/cjs/components/PanelHeaderContext/PanelHeaderContext.js +4 -1
  87. package/dist/cjs/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
  88. package/dist/cjs/components/PopoutRoot/PopoutRoot.js +3 -1
  89. package/dist/cjs/components/PopoutRoot/PopoutRoot.js.map +1 -1
  90. package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js +3 -0
  91. package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  92. package/dist/cjs/components/Select/Select.d.ts +1 -1
  93. package/dist/cjs/components/Select/Select.js +2 -2
  94. package/dist/cjs/components/Select/Select.js.map +1 -1
  95. package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +3 -3
  96. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +3 -1
  97. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  98. package/dist/cjs/components/TabbarItem/TabbarItem.d.ts +1 -1
  99. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  100. package/dist/cjs/components/Tooltip/Tooltip.js +1 -1
  101. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  102. package/dist/cjs/components/Typography/Text/Text.js +1 -1
  103. package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
  104. package/dist/cjs/hooks/useAdaptivity.d.ts +1 -0
  105. package/dist/cjs/hooks/useAdaptivity.js +18 -1
  106. package/dist/cjs/hooks/useAdaptivity.js.map +1 -1
  107. package/dist/cjs/hooks/useCalendar.d.ts +4 -3
  108. package/dist/cjs/hooks/useCalendar.js +15 -6
  109. package/dist/cjs/hooks/useCalendar.js.map +1 -1
  110. package/dist/cjs/index.d.ts +2 -1
  111. package/dist/cjs/index.js +10 -2
  112. package/dist/cjs/index.js.map +1 -1
  113. package/dist/cjs/lib/getNavId.js +1 -1
  114. package/dist/cjs/lib/getNavId.js.map +1 -1
  115. package/dist/cjs/lib/platform.js +29 -0
  116. package/dist/cjs/lib/platform.js.map +1 -1
  117. package/dist/components/ActionSheet/ActionSheet.js +5 -9
  118. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  119. package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -1
  120. package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  121. package/dist/components/Alert/Alert.d.ts +4 -1
  122. package/dist/components/Alert/Alert.js +18 -2
  123. package/dist/components/Alert/Alert.js.map +1 -1
  124. package/dist/components/AppRoot/AppRoot.js +17 -2
  125. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  126. package/dist/components/AppRoot/ScrollContext.d.ts +6 -14
  127. package/dist/components/AppRoot/ScrollContext.js +87 -1
  128. package/dist/components/AppRoot/ScrollContext.js.map +1 -1
  129. package/dist/components/Calendar/Calendar.d.ts +10 -1
  130. package/dist/components/Calendar/Calendar.js +16 -5
  131. package/dist/components/Calendar/Calendar.js.map +1 -1
  132. package/dist/components/CalendarHeader/CalendarHeader.d.ts +8 -0
  133. package/dist/components/CalendarHeader/CalendarHeader.js +15 -9
  134. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
  135. package/dist/components/CalendarRange/CalendarRange.d.ts +1 -1
  136. package/dist/components/CalendarRange/CalendarRange.js +7 -3
  137. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  138. package/dist/components/ChipsInput/ChipsInput.js +3 -1
  139. package/dist/components/ChipsInput/ChipsInput.js.map +1 -1
  140. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  141. package/dist/components/ConfigProvider/ConfigProvider.js +1 -1
  142. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  143. package/dist/components/CustomSelect/CustomSelect.d.ts +1 -1
  144. package/dist/components/CustomSelect/CustomSelect.js +6 -3
  145. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  146. package/dist/components/DateInput/DateInput.d.ts +1 -1
  147. package/dist/components/DateInput/DateInput.js +14 -2
  148. package/dist/components/DateInput/DateInput.js.map +1 -1
  149. package/dist/components/DateRangeInput/DateRangeInput.d.ts +1 -1
  150. package/dist/components/DateRangeInput/DateRangeInput.js +6 -2
  151. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  152. package/dist/components/Epic/Epic.js +1 -1
  153. package/dist/components/Epic/Epic.js.map +1 -1
  154. package/dist/components/FormField/FormField.d.ts +15 -1
  155. package/dist/components/FormField/FormField.js +6 -2
  156. package/dist/components/FormField/FormField.js.map +1 -1
  157. package/dist/components/HorizontalScroll/HorizontalScroll.js +12 -3
  158. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  159. package/dist/components/Input/Input.d.ts +1 -1
  160. package/dist/components/Input/Input.js +3 -1
  161. package/dist/components/Input/Input.js.map +1 -1
  162. package/dist/components/ModalCard/ModalCard.js +3 -2
  163. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  164. package/dist/components/ModalCardBase/ModalCardBase.js +5 -4
  165. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  166. package/dist/components/ModalPage/ModalPage.js +5 -3
  167. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  168. package/dist/components/ModalPageHeader/ModalPageHeader.js +2 -9
  169. package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  170. package/dist/components/ModalRoot/ModalRoot.js +2 -2
  171. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  172. package/dist/components/ModalRoot/ModalRootAdaptive.js +5 -5
  173. package/dist/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
  174. package/dist/components/ModalRoot/useModalManager.js +1 -1
  175. package/dist/components/ModalRoot/useModalManager.js.map +1 -1
  176. package/dist/components/NativeSelect/NativeSelect.d.ts +1 -2
  177. package/dist/components/NativeSelect/NativeSelect.js +3 -4
  178. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  179. package/dist/components/PanelHeader/PanelHeader.js +6 -4
  180. package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
  181. package/dist/components/PanelHeaderContext/PanelHeaderContext.js +3 -1
  182. package/dist/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
  183. package/dist/components/PopoutRoot/PopoutRoot.js +3 -2
  184. package/dist/components/PopoutRoot/PopoutRoot.js.map +1 -1
  185. package/dist/components/ScreenSpinner/ScreenSpinner.js +2 -0
  186. package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  187. package/dist/components/Select/Select.d.ts +1 -1
  188. package/dist/components/Select/Select.js +1 -1
  189. package/dist/components/Select/Select.js.map +1 -1
  190. package/dist/components/SelectMimicry/SelectMimicry.d.ts +3 -3
  191. package/dist/components/SelectMimicry/SelectMimicry.js +3 -1
  192. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  193. package/dist/components/TabbarItem/TabbarItem.d.ts +1 -1
  194. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  195. package/dist/components/Tooltip/Tooltip.js +1 -1
  196. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  197. package/dist/components/Typography/Text/Text.js +1 -1
  198. package/dist/components/Typography/Text/Text.js.map +1 -1
  199. package/dist/components.css +18 -18
  200. package/dist/components.css.map +1 -1
  201. package/dist/cssm/components/ActionSheet/ActionSheet.js +5 -9
  202. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  203. package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js +1 -1
  204. package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
  205. package/dist/cssm/components/Alert/Alert.d.ts +4 -1
  206. package/dist/cssm/components/Alert/Alert.js +18 -2
  207. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  208. package/dist/cssm/components/AppRoot/AppRoot.js +17 -2
  209. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  210. package/dist/cssm/components/AppRoot/ScrollContext.d.ts +6 -14
  211. package/dist/cssm/components/AppRoot/ScrollContext.js +87 -1
  212. package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
  213. package/dist/cssm/components/Button/Button.css +9 -9
  214. package/dist/cssm/components/ButtonGroup/ButtonGroup.css +1 -1
  215. package/dist/cssm/components/Calendar/Calendar.css +1 -1
  216. package/dist/cssm/components/Calendar/Calendar.d.ts +10 -1
  217. package/dist/cssm/components/Calendar/Calendar.js +16 -5
  218. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  219. package/dist/cssm/components/CalendarDay/CalendarDay.css +1 -1
  220. package/dist/cssm/components/CalendarDays/CalendarDays.css +1 -1
  221. package/dist/cssm/components/CalendarHeader/CalendarHeader.css +1 -1
  222. package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts +8 -0
  223. package/dist/cssm/components/CalendarHeader/CalendarHeader.js +15 -9
  224. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
  225. package/dist/cssm/components/CalendarRange/CalendarRange.css +1 -1
  226. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +1 -1
  227. package/dist/cssm/components/CalendarRange/CalendarRange.js +7 -3
  228. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  229. package/dist/cssm/components/CalendarTime/CalendarTime.css +1 -1
  230. package/dist/cssm/components/Card/Card.css +2 -2
  231. package/dist/cssm/components/CardScroll/CardScroll.css +1 -1
  232. package/dist/cssm/components/Cell/Cell.css +1 -1
  233. package/dist/cssm/components/CellButton/CellButton.css +1 -1
  234. package/dist/cssm/components/Checkbox/Checkbox.css +1 -1
  235. package/dist/cssm/components/ChipsInput/ChipsInput.css +1 -1
  236. package/dist/cssm/components/ChipsInput/ChipsInput.js +3 -1
  237. package/dist/cssm/components/ChipsInput/ChipsInput.js.map +1 -1
  238. package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  239. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +1 -1
  240. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  241. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +1 -1
  242. package/dist/cssm/components/CustomSelect/CustomSelect.js +6 -3
  243. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  244. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.css +1 -1
  245. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.css +1 -1
  246. package/dist/cssm/components/DateInput/DateInput.d.ts +1 -1
  247. package/dist/cssm/components/DateInput/DateInput.js +14 -2
  248. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  249. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +1 -1
  250. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +6 -2
  251. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  252. package/dist/cssm/components/Epic/Epic.js +1 -1
  253. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  254. package/dist/cssm/components/FormField/FormField.css +3 -3
  255. package/dist/cssm/components/FormField/FormField.d.ts +15 -1
  256. package/dist/cssm/components/FormField/FormField.js +6 -2
  257. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  258. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  259. package/dist/cssm/components/Gradient/Gradient.css +1 -1
  260. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +12 -3
  261. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  262. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
  263. package/dist/cssm/components/Input/Input.css +1 -1
  264. package/dist/cssm/components/Input/Input.d.ts +1 -1
  265. package/dist/cssm/components/Input/Input.js +3 -1
  266. package/dist/cssm/components/Input/Input.js.map +1 -1
  267. package/dist/cssm/components/InputLike/InputLike.css +1 -1
  268. package/dist/cssm/components/InputLike/InputLikeDivider.css +1 -1
  269. package/dist/cssm/components/ModalCard/ModalCard.css +1 -1
  270. package/dist/cssm/components/ModalCard/ModalCard.js +3 -2
  271. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  272. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +5 -4
  273. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  274. package/dist/cssm/components/ModalPage/ModalPage.js +5 -3
  275. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  276. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +2 -9
  277. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  278. package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
  279. package/dist/cssm/components/ModalRoot/ModalRoot.js +2 -2
  280. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  281. package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js +5 -5
  282. package/dist/cssm/components/ModalRoot/ModalRootAdaptive.js.map +1 -1
  283. package/dist/cssm/components/ModalRoot/useModalManager.js +1 -1
  284. package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -1
  285. package/dist/cssm/components/NativeSelect/NativeSelect.d.ts +1 -2
  286. package/dist/cssm/components/NativeSelect/NativeSelect.js +3 -4
  287. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  288. package/dist/cssm/components/Pagination/Pagination.css +1 -1
  289. package/dist/cssm/components/PanelHeader/PanelHeader.css +1 -1
  290. package/dist/cssm/components/PanelHeader/PanelHeader.js +6 -4
  291. package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
  292. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.js +3 -1
  293. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.js.map +1 -1
  294. package/dist/cssm/components/PopoutRoot/PopoutRoot.js +3 -2
  295. package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +1 -1
  296. package/dist/cssm/components/Popper/Popper.css +1 -1
  297. package/dist/cssm/components/Radio/Radio.css +1 -1
  298. package/dist/cssm/components/RadioGroup/RadioGroup.css +1 -1
  299. package/dist/cssm/components/Removable/Removable.css +1 -1
  300. package/dist/cssm/components/RichCell/RichCell.css +1 -1
  301. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +2 -0
  302. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  303. package/dist/cssm/components/SegmentedControl/SegmentedControl.css +1 -1
  304. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.css +1 -1
  305. package/dist/cssm/components/Select/Select.d.ts +1 -1
  306. package/dist/cssm/components/Select/Select.js +1 -1
  307. package/dist/cssm/components/Select/Select.js.map +1 -1
  308. package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +3 -3
  309. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +3 -1
  310. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  311. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  312. package/dist/cssm/components/Snackbar/Snackbar.css +1 -1
  313. package/dist/cssm/components/SplitLayout/SplitLayout.css +1 -1
  314. package/dist/cssm/components/TabbarItem/TabbarItem.d.ts +1 -1
  315. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  316. package/dist/cssm/components/Tooltip/Tooltip.js +1 -1
  317. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  318. package/dist/cssm/components/Typography/Caption/Caption.css +1 -1
  319. package/dist/cssm/components/Typography/Paragraph/Paragraph.css +1 -1
  320. package/dist/cssm/components/Typography/Subhead/Subhead.css +1 -1
  321. package/dist/cssm/components/Typography/Text/Text.js +1 -1
  322. package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
  323. package/dist/cssm/components/Typography/Title/Title.css +1 -1
  324. package/dist/cssm/hooks/useAdaptivity.d.ts +1 -0
  325. package/dist/cssm/hooks/useAdaptivity.js +13 -1
  326. package/dist/cssm/hooks/useAdaptivity.js.map +1 -1
  327. package/dist/cssm/hooks/useCalendar.d.ts +4 -3
  328. package/dist/cssm/hooks/useCalendar.js +15 -6
  329. package/dist/cssm/hooks/useCalendar.js.map +1 -1
  330. package/dist/cssm/index.d.ts +2 -1
  331. package/dist/cssm/index.js +2 -1
  332. package/dist/cssm/index.js.map +1 -1
  333. package/dist/cssm/lib/getNavId.js +1 -1
  334. package/dist/cssm/lib/getNavId.js.map +1 -1
  335. package/dist/cssm/lib/platform.js +26 -0
  336. package/dist/cssm/lib/platform.js.map +1 -1
  337. package/dist/cssm/styles/bright_light.css +1 -1
  338. package/dist/cssm/styles/components.css +18 -18
  339. package/dist/cssm/styles/constants.css +1 -1
  340. package/dist/cssm/styles/space_gray.css +1 -1
  341. package/dist/cssm/styles/themes.css +3 -3
  342. package/dist/cssm/styles/vkcom_dark.css +2 -2
  343. package/dist/cssm/styles/vkcom_light.css +1 -1
  344. package/dist/default_scheme.css +1 -1
  345. package/dist/default_scheme.css.map +1 -1
  346. package/dist/hooks/useAdaptivity.d.ts +1 -0
  347. package/dist/hooks/useAdaptivity.js +13 -1
  348. package/dist/hooks/useAdaptivity.js.map +1 -1
  349. package/dist/hooks/useCalendar.d.ts +4 -3
  350. package/dist/hooks/useCalendar.js +15 -6
  351. package/dist/hooks/useCalendar.js.map +1 -1
  352. package/dist/index.d.ts +2 -1
  353. package/dist/index.js +2 -1
  354. package/dist/index.js.map +1 -1
  355. package/dist/lib/getNavId.js +1 -1
  356. package/dist/lib/getNavId.js.map +1 -1
  357. package/dist/lib/platform.js +26 -0
  358. package/dist/lib/platform.js.map +1 -1
  359. package/dist/vkui.css +21 -21
  360. package/dist/vkui.css.map +1 -1
  361. package/jest.unit.config.js +1 -0
  362. package/package.json +5 -3
  363. package/postcss-custom-properties-fallback/__tests__/custom_properties.css +5 -0
  364. package/postcss-custom-properties-fallback/index.js +83 -0
  365. package/postcss-plugin-vk-sans/index.js +34 -27
  366. package/src/components/ActionSheet/ActionSheet.tsx +9 -7
  367. package/src/components/ActionSheet/ActionSheetDropdownDesktop.tsx +1 -1
  368. package/src/components/ActionSheet/Readme.md +1 -0
  369. package/src/components/Alert/Alert.tsx +23 -4
  370. package/src/components/AppRoot/AppRoot.tsx +17 -2
  371. package/src/components/AppRoot/ScrollContext.ts +90 -2
  372. package/src/components/Button/Button.css +2 -0
  373. package/src/components/Calendar/Calendar.tsx +32 -3
  374. package/src/components/CalendarHeader/CalendarHeader.css +3 -0
  375. package/src/components/CalendarHeader/CalendarHeader.tsx +24 -2
  376. package/src/components/CalendarRange/CalendarRange.tsx +6 -0
  377. package/src/components/Card/Card.css +2 -1
  378. package/src/components/Cell/Cell.css +1 -1
  379. package/src/components/CellButton/CellButton.css +1 -1
  380. package/src/components/Checkbox/Checkbox.css +1 -1
  381. package/src/components/ChipsInput/ChipsInput.tsx +2 -0
  382. package/src/components/ConfigProvider/ConfigProvider.tsx +1 -1
  383. package/src/components/CustomSelect/CustomSelect.tsx +6 -3
  384. package/src/components/DateInput/DateInput.tsx +18 -0
  385. package/src/components/DateRangeInput/DateRangeInput.tsx +6 -0
  386. package/src/components/Epic/Epic.tsx +3 -1
  387. package/src/components/FixedLayout/FixedLayout.css +10 -0
  388. package/src/components/FormField/FormField.css +10 -0
  389. package/src/components/FormField/FormField.tsx +21 -1
  390. package/src/components/FormField/Readme.md +85 -19
  391. package/src/components/FormItem/FormItem.css +1 -0
  392. package/src/components/FormLayoutGroup/FormLayoutGroup.css +2 -1
  393. package/src/components/Gradient/Gradient.css +4 -2
  394. package/src/components/HorizontalScroll/HorizontalScroll.tsx +9 -3
  395. package/src/components/Input/Input.tsx +2 -0
  396. package/src/components/ModalCard/ModalCard.css +1 -1
  397. package/src/components/ModalCard/ModalCard.tsx +3 -8
  398. package/src/components/ModalCardBase/ModalCardBase.tsx +6 -10
  399. package/src/components/ModalPage/ModalPage.tsx +6 -9
  400. package/src/components/ModalPageHeader/ModalPageHeader.tsx +2 -6
  401. package/src/components/ModalRoot/ModalRoot.css +3 -2
  402. package/src/components/ModalRoot/ModalRoot.tsx +6 -2
  403. package/src/components/ModalRoot/ModalRootAdaptive.tsx +6 -9
  404. package/src/components/ModalRoot/Readme.md +1 -1
  405. package/src/components/ModalRoot/useModalManager.tsx +4 -1
  406. package/src/components/NativeSelect/NativeSelect.tsx +2 -3
  407. package/src/components/PanelHeader/PanelHeader.css +13 -13
  408. package/src/components/PanelHeader/PanelHeader.tsx +18 -17
  409. package/src/components/PanelHeader/Readme.md +2 -2
  410. package/src/components/PanelHeaderContext/PanelHeaderContext.tsx +3 -0
  411. package/src/components/PopoutRoot/PopoutRoot.tsx +3 -8
  412. package/src/components/Popper/Popper.css +14 -2
  413. package/src/components/Radio/Radio.css +1 -1
  414. package/src/components/RadioGroup/RadioGroup.css +1 -1
  415. package/src/components/Removable/Removable.css +2 -2
  416. package/src/components/RichCell/RichCell.css +1 -1
  417. package/src/components/ScreenSpinner/ScreenSpinner.tsx +3 -0
  418. package/src/components/Select/Select.tsx +1 -1
  419. package/src/components/SelectMimicry/SelectMimicry.tsx +5 -3
  420. package/src/components/SimpleCell/SimpleCell.css +1 -1
  421. package/src/components/Snackbar/Snackbar.css +6 -3
  422. package/src/components/SplitLayout/SplitLayout.css +3 -1
  423. package/src/components/Switch/Readme.md +12 -36
  424. package/src/components/TabbarItem/TabbarItem.tsx +1 -1
  425. package/src/components/Tooltip/Readme.md +35 -47
  426. package/src/components/Tooltip/Tooltip.tsx +2 -2
  427. package/src/components/Typography/Text/Text.tsx +4 -1
  428. package/src/hooks/useAdaptivity.ts +15 -0
  429. package/src/hooks/useCalendar.ts +25 -9
  430. package/src/index.ts +2 -1
  431. package/src/lib/getNavId.ts +1 -1
  432. package/src/lib/platform.ts +34 -0
  433. package/src/styles/bright_light.css +2 -0
  434. package/src/styles/constants.css +3 -2
  435. package/src/styles/space_gray.css +10 -8
  436. package/src/styles/vkcom_dark.css +6 -4
  437. package/src/styles/vkcom_light.css +4 -2
  438. package/src/testing/utils.tsx +5 -1
  439. package/tsconfig.json +1 -0
@@ -32,6 +32,8 @@ export interface CalendarRangeProps
32
32
  | "nextMonthAriaLabel"
33
33
  | "changeMonthAriaLabel"
34
34
  | "changeYearAriaLabel"
35
+ | "prevMonthIcon"
36
+ | "nextMonthIcon"
35
37
  >,
36
38
  HasRootRef<HTMLDivElement> {
37
39
  value?: Array<Date | null>;
@@ -70,6 +72,8 @@ export const CalendarRange: React.FC<CalendarRangeProps> = ({
70
72
  changeMonthAriaLabel,
71
73
  changeYearAriaLabel,
72
74
  changeDayAriaLabel = "Изменить день",
75
+ prevMonthIcon,
76
+ nextMonthIcon,
73
77
  ...props
74
78
  }) => {
75
79
  const {
@@ -214,6 +218,7 @@ export const CalendarRange: React.FC<CalendarRangeProps> = ({
214
218
  nextMonthAriaLabel={nextMonthAriaLabel}
215
219
  changeMonthAriaLabel={changeMonthAriaLabel}
216
220
  changeYearAriaLabel={changeYearAriaLabel}
221
+ prevMonthIcon={prevMonthIcon}
217
222
  />
218
223
  <CalendarDays
219
224
  viewDate={viewDate}
@@ -247,6 +252,7 @@ export const CalendarRange: React.FC<CalendarRangeProps> = ({
247
252
  nextMonthAriaLabel={nextMonthAriaLabel}
248
253
  changeMonthAriaLabel={changeMonthAriaLabel}
249
254
  changeYearAriaLabel={changeYearAriaLabel}
255
+ nextMonthIcon={nextMonthIcon}
250
256
  />
251
257
  <CalendarDays
252
258
  viewDate={secondViewDate}
@@ -63,7 +63,8 @@
63
63
  }
64
64
 
65
65
  .CardScroll--l .Card {
66
- width: 100%;
66
+ width: calc(100% - var(--vkui--size_base_padding_horizontal--regular) * 2);
67
+ margin-right: var(--vkui--size_base_padding_horizontal--regular);
67
68
  }
68
69
 
69
70
  /**
@@ -52,5 +52,5 @@
52
52
  * FormItem
53
53
  */
54
54
  .FormItem > .Cell {
55
- margin: 0 calc(-1 * var(--formitem_padding));
55
+ margin: 0 calc(-1 * var(--vkui--size_base_padding_horizontal--regular));
56
56
  }
@@ -14,7 +14,7 @@
14
14
  .FormItem .CellButton {
15
15
  width: 100%;
16
16
  box-sizing: content-box;
17
- margin: 0 calc(-1 * var(--formitem_padding));
17
+ margin: 0 calc(-1 * var(--vkui--size_base_padding_horizontal--regular));
18
18
  }
19
19
 
20
20
  .CellButton[disabled] {
@@ -5,7 +5,7 @@
5
5
  .FormItem .Checkbox {
6
6
  width: 100%;
7
7
  box-sizing: content-box;
8
- margin: 0 calc(-1 * var(--formitem_padding));
8
+ margin: 0 calc(-1 * var(--vkui--size_base_padding_horizontal--regular));
9
9
  }
10
10
 
11
11
  .Checkbox__input {
@@ -96,6 +96,7 @@ export const ChipsInput = <Option extends ChipsInputOption>(
96
96
  getOptionLabel,
97
97
  getNewOptionData,
98
98
  renderChip,
99
+ before,
99
100
  after,
100
101
  inputAriaLabel,
101
102
  ...restProps
@@ -186,6 +187,7 @@ export const ChipsInput = <Option extends ChipsInputOption>(
186
187
  className={className}
187
188
  style={style}
188
189
  disabled={restProps.disabled}
190
+ before={before}
189
191
  after={after}
190
192
  onClick={handleClick}
191
193
  role="application"
@@ -96,7 +96,7 @@ const ConfigProvider: React.FC<ConfigProviderProps> = ({
96
96
  target?.hasAttribute("scheme")
97
97
  ) {
98
98
  warn(
99
- '<body scheme> was set before VKUI mount - did you forget scheme="inherit"?'
99
+ '<body scheme> был установлен перед монтированием VKUI - вы не забыли scheme="inherit"?'
100
100
  );
101
101
  }
102
102
  target?.setAttribute("scheme", normalizedScheme);
@@ -56,7 +56,7 @@ const warn = warnOnce("CustomSelect");
56
56
  const checkOptionsValueType = (options: CustomSelectOptionInterface[]) => {
57
57
  if (new Set(options.map((item) => typeof item.value)).size > 1) {
58
58
  warn(
59
- "Some values of your options have different types. CustomSelect onChange always returns a string type.",
59
+ "Некоторые значения ваших опций имеют разные типы. onChange всегда возвращает строковый тип.",
60
60
  "error"
61
61
  );
62
62
  }
@@ -463,8 +463,8 @@ class CustomSelectComponent extends React.Component<
463
463
  if (options) {
464
464
  if (process.env.NODE_ENV === "development") {
465
465
  warn(
466
- "This filtration method is deprecated. Return value of onInputChange will" +
467
- " be ignored in v5.0.0. For custom filtration please update props.options by yourself or use filterFn property"
466
+ "Этот метод фильтрации устарел. Возвращаемое значение onInputChange будет " +
467
+ "проигнорировано в v5.0.0. Для фильтрации обновляйте props.options самостоятельно или используйте свойство filterFn."
468
468
  );
469
469
  }
470
470
  this.setState({
@@ -637,6 +637,7 @@ class CustomSelectComponent extends React.Component<
637
637
  render() {
638
638
  const { opened, nativeSelectValue, options: stateOptions } = this.state;
639
639
  const {
640
+ before,
640
641
  searchable,
641
642
  name,
642
643
  className,
@@ -715,6 +716,7 @@ class CustomSelectComponent extends React.Component<
715
716
  // TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.
716
717
  // @ts-ignore
717
718
  onClick={onClick}
719
+ before={before}
718
720
  after={icon}
719
721
  placeholder={restProps.placeholder}
720
722
  />
@@ -733,6 +735,7 @@ class CustomSelectComponent extends React.Component<
733
735
  (dropdownOffsetDistance as number) > 0 &&
734
736
  "CustomSelect__open--not-adjacent"
735
737
  )}
738
+ before={before}
736
739
  after={icon}
737
740
  selectType={selectType}
738
741
  >
@@ -40,6 +40,12 @@ export interface DateInputProps
40
40
  | "changeDayAriaLabel"
41
41
  | "showNeighboringMonth"
42
42
  | "size"
43
+ | "viewDate"
44
+ | "onHeaderChange"
45
+ | "onNextMonth"
46
+ | "onPrevMonth"
47
+ | "prevMonthIcon"
48
+ | "nextMonthIcon"
43
49
  >,
44
50
  HasRootRef<HTMLDivElement> {
45
51
  calendarPlacement?: Placement;
@@ -118,6 +124,12 @@ export const DateInput: React.FC<DateInputProps> = ({
118
124
  changeMinutesAriaLabel = "Изменить минуту",
119
125
  clearFieldAriaLabel = "Очистить поле",
120
126
  showCalendarAriaLabel = "Показать календарь",
127
+ viewDate,
128
+ onHeaderChange,
129
+ onNextMonth,
130
+ onPrevMonth,
131
+ prevMonthIcon,
132
+ nextMonthIcon,
121
133
  ...props
122
134
  }) => {
123
135
  const daysRef = React.useRef<HTMLSpanElement>(null);
@@ -309,6 +321,12 @@ export const DateInput: React.FC<DateInputProps> = ({
309
321
  changeDayAriaLabel={changeDayAriaLabel}
310
322
  showNeighboringMonth={showNeighboringMonth}
311
323
  size={size}
324
+ viewDate={viewDate}
325
+ onHeaderChange={onHeaderChange}
326
+ onNextMonth={onNextMonth}
327
+ onPrevMonth={onPrevMonth}
328
+ prevMonthIcon={prevMonthIcon}
329
+ nextMonthIcon={nextMonthIcon}
312
330
  />
313
331
  </Popper>
314
332
  )}
@@ -34,6 +34,8 @@ export interface DateRangeInputProps
34
34
  | "changeMonthAriaLabel"
35
35
  | "changeYearAriaLabel"
36
36
  | "changeDayAriaLabel"
37
+ | "prevMonthIcon"
38
+ | "nextMonthIcon"
37
39
  >,
38
40
  HasRootRef<HTMLDivElement> {
39
41
  calendarPlacement?: Placement;
@@ -118,6 +120,8 @@ export const DateRangeInput: React.FC<DateRangeInputProps> = ({
118
120
  changeEndYearAriaLabel = "Изменить год окончания",
119
121
  clearFieldAriaLabel = "Очистить поле",
120
122
  showCalendarAriaLabel = "Показать календарь",
123
+ prevMonthIcon,
124
+ nextMonthIcon,
121
125
  ...props
122
126
  }) => {
123
127
  const daysStartRef = React.useRef<HTMLSpanElement>(null);
@@ -342,6 +346,8 @@ export const DateRangeInput: React.FC<DateRangeInputProps> = ({
342
346
  changeMonthAriaLabel={changeMonthAriaLabel}
343
347
  changeYearAriaLabel={changeYearAriaLabel}
344
348
  changeDayAriaLabel={changeDayAriaLabel}
349
+ prevMonthIcon={prevMonthIcon}
350
+ nextMonthIcon={nextMonthIcon}
345
351
  />
346
352
  </Popper>
347
353
  )}
@@ -32,7 +32,9 @@ export const Epic: React.FC<EpicProps & AdaptivityContextInterface> = (
32
32
  !tabbar &&
33
33
  viewWidth < ViewWidth.SMALL_TABLET
34
34
  ) {
35
- warn("Using Epic without tabbar is not recommended on mobile");
35
+ warn(
36
+ `Не рекомендуется использовать Epic без Tabbar при ширине окна меньше ${ViewWidth.SMALL_TABLET}px`
37
+ );
36
38
  }
37
39
  const story =
38
40
  (React.Children.toArray(children).find(
@@ -1,6 +1,16 @@
1
1
  .FixedLayout {
2
2
  position: fixed;
3
3
  box-sizing: border-box;
4
+ /**
5
+ * ⚠️ WARNING ⚠️
6
+ * `left: auto` решает следующие задачи:
7
+ * 1. При фиксированной ширине компонента позиционирует компонент по центру.
8
+ * 2. При использовании `SplitLayout` позиционирует компонент с права от `<SplitCol fixed />`.
9
+ *
10
+ * Подробности можно почитать здесь https://github.com/VKCOM/VKUI/pull/2472
11
+ *
12
+ * Единственное, есть проблема при срабатывании insets в landscape ориентации экрана (https://github.com/VKCOM/VKUI/issues/2422).
13
+ */
4
14
  left: auto;
5
15
  z-index: 3;
6
16
  padding-left: var(--safe-area-inset-left);
@@ -11,6 +11,7 @@
11
11
  border-radius: inherit;
12
12
  }
13
13
 
14
+ .FormField__before,
14
15
  .FormField__after {
15
16
  flex-shrink: 0;
16
17
  position: relative;
@@ -25,6 +26,14 @@
25
26
  z-index: 2;
26
27
  }
27
28
 
29
+ .FormField__before {
30
+ color: var(--vkui--color_icon_accent);
31
+ }
32
+
33
+ .FormField__after {
34
+ color: var(--icon_secondary, var(--vkui--color_icon_secondary));
35
+ }
36
+
28
37
  .ChipsInput .FormField__after {
29
38
  z-index: 3;
30
39
  }
@@ -79,6 +88,7 @@
79
88
  /**
80
89
  * sizeY COMPACT
81
90
  */
91
+ .FormField--sizeY-compact .FormField__before,
82
92
  .FormField--sizeY-compact .FormField__after {
83
93
  min-width: 36px;
84
94
  height: 36px;
@@ -9,7 +9,21 @@ import "./FormField.css";
9
9
 
10
10
  export interface FormFieldProps {
11
11
  /**
12
- * Иконка 12|16|20|24|28 или `IconButton`.
12
+ * Добавляет иконку слева.
13
+ *
14
+ * Рекомендации:
15
+ *
16
+ * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.
17
+ * - Используйте [IconButton](#/IconButton), если вам нужна кликабельная иконка.
18
+ */
19
+ before?: React.ReactNode;
20
+ /**
21
+ * Добавляет иконку справа.
22
+ *
23
+ * Рекомендации:
24
+ *
25
+ * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.
26
+ * - Используйте [IconButton](#/IconButton), если вам нужна кликабельная иконка.
13
27
  */
14
28
  after?: React.ReactNode;
15
29
  }
@@ -26,6 +40,7 @@ export const FormField: React.FC<FormFieldOwnProps> = ({
26
40
  Component = "div",
27
41
  children,
28
42
  getRootRef,
43
+ before,
29
44
  after,
30
45
  disabled,
31
46
  ...restProps
@@ -57,6 +72,11 @@ export const FormField: React.FC<FormFieldOwnProps> = ({
57
72
  disabled && "FormField--disabled"
58
73
  )}
59
74
  >
75
+ {hasReactNode(before) && (
76
+ <div role="presentation" vkuiClass="FormField__before">
77
+ {before}
78
+ </div>
79
+ )}
60
80
  {children}
61
81
  {hasReactNode(after) && (
62
82
  <div role="presentation" vkuiClass="FormField__after">
@@ -1,6 +1,90 @@
1
1
  Компонент-оболочка для элементов форм ([Input](#/Input), [Select](#/Select), [Textarea](#/Textarea) и другие).
2
2
 
3
- ```jsx
3
+ ```jsx { "props": { "layout": false, "iframe": false } }
4
+ const Example = () => {
5
+ const [sizeY, setSizeY] = useState("regular");
6
+ const [before, setBefore] = useState(<Icon24WalletOutline />);
7
+ const [after, setAfter] = useState(<Icon24ChevronUp />);
8
+ const [disabled, setDisabled] = useState(false);
9
+
10
+ return (
11
+ <div style={rootContainerStyles}>
12
+ <div style={demoContainerStyles}>
13
+ <AdaptivityProvider sizeY={sizeY}>
14
+ <FormLayout>
15
+ <FormItem>
16
+ <FormField before={before} after={after} disabled={disabled}>
17
+ <CustomInput />
18
+ </FormField>
19
+ </FormItem>
20
+ </FormLayout>
21
+ </AdaptivityProvider>
22
+ </div>
23
+ <div style={propsContainerStyles}>
24
+ <FormItem top="sizeY">
25
+ <Select
26
+ value={sizeY}
27
+ onChange={(e) => setSizeY(e.target.value)}
28
+ options={[
29
+ { label: "compact", value: "compact" },
30
+ { label: "regular", value: "regular" },
31
+ ]}
32
+ />
33
+ </FormItem>
34
+ <FormItem top="prop[before]">
35
+ <Checkbox
36
+ description="Icon24WalletOutline for example"
37
+ checked={!!before}
38
+ onChange={(e) =>
39
+ e.target.checked
40
+ ? setBefore(<Icon24WalletOutline />)
41
+ : setBefore(undefined)
42
+ }
43
+ >
44
+ before
45
+ </Checkbox>
46
+ </FormItem>
47
+ <FormItem top="prop[after]">
48
+ <Checkbox
49
+ description="Icon24ChevronUp for example"
50
+ checked={!!after}
51
+ onChange={(e) =>
52
+ e.target.checked
53
+ ? setAfter(<Icon24ChevronUp />)
54
+ : setAfter(undefined)
55
+ }
56
+ >
57
+ after
58
+ </Checkbox>
59
+ </FormItem>
60
+ <FormItem top="prop[disabled]">
61
+ <Checkbox
62
+ checked={disabled}
63
+ onChange={(e) => setDisabled(e.target.checked)}
64
+ >
65
+ disabled
66
+ </Checkbox>
67
+ </FormItem>
68
+ </div>
69
+ </div>
70
+ );
71
+ };
72
+
73
+ const rootContainerStyles = {
74
+ display: "flex",
75
+ flexDirection: "row-reverse",
76
+ flexWrap: "wrap",
77
+ justifyContent: "center",
78
+ };
79
+
80
+ const demoContainerStyles = {
81
+ flexGrow: 2,
82
+ paddingTop: 24,
83
+ paddingBottom: 24,
84
+ };
85
+
86
+ const propsContainerStyles = { minWidth: 200 };
87
+
4
88
  const CustomInput = () => {
5
89
  const style = {
6
90
  position: "relative",
@@ -20,23 +104,5 @@ const CustomInput = () => {
20
104
  return <input type="text" style={style} placeholder="Кастомный инпут" />;
21
105
  };
22
106
 
23
- const Example = () => (
24
- <View activePanel="custom-field">
25
- <Panel id="custom-field">
26
- <PanelHeader>FormField</PanelHeader>
27
-
28
- <Group>
29
- <FormLayout>
30
- <FormItem>
31
- <FormField>
32
- <CustomInput />
33
- </FormField>
34
- </FormItem>
35
- </FormLayout>
36
- </Group>
37
- </Panel>
38
- </View>
39
- );
40
-
41
107
  <Example />;
42
108
  ```
@@ -51,6 +51,7 @@
51
51
 
52
52
  /**
53
53
  * iOS
54
+ * TODO: v5 удалить
54
55
  */
55
56
  .FormItem--ios {
56
57
  --formitem_padding: 12px;
@@ -1,6 +1,6 @@
1
1
  .FormLayoutGroup--horizontal {
2
2
  display: flex;
3
- padding: 12px var(--formitem_padding);
3
+ padding: 12px var(--vkui--size_base_padding_horizontal--regular);
4
4
  }
5
5
 
6
6
  .FormLayoutGroup__removable {
@@ -11,6 +11,7 @@
11
11
 
12
12
  /**
13
13
  * iOS
14
+ * TODO: v5 удалить
14
15
  */
15
16
  .FormLayoutGroup--ios {
16
17
  --formitem_padding: 12px;
@@ -40,7 +40,8 @@
40
40
  );
41
41
  }
42
42
 
43
- body[scheme="space_gray"] .Gradient--md-tint.Gradient--to-top {
43
+ body[scheme="space_gray"] .Gradient--md-tint.Gradient--to-top,
44
+ body[scheme="vkcom_dark"] .Gradient--md-tint.Gradient--to-top {
44
45
  background: linear-gradient(
45
46
  to top,
46
47
  #232324,
@@ -61,7 +62,8 @@ body[scheme="space_gray"] .Gradient--md-tint.Gradient--to-top {
61
62
  );
62
63
  }
63
64
 
64
- body[scheme="space_gray"] .Gradient--md-tint.Gradient--to-bottom {
65
+ body[scheme="space_gray"] .Gradient--md-tint.Gradient--to-bottom,
66
+ body[scheme="vkcom_dark"] .Gradient--md-tint.Gradient--to-bottom {
65
67
  background: linear-gradient(
66
68
  to bottom,
67
69
  #232324,
@@ -48,6 +48,12 @@ function now() {
48
48
  return performance && performance.now ? performance.now() : Date.now();
49
49
  }
50
50
 
51
+ /**
52
+ * Округляем el.scrollLeft
53
+ * https://github.com/VKCOM/VKUI/pull/2445
54
+ */
55
+ const roundUpElementScrollLeft = (el: HTMLElement) => Math.ceil(el.scrollLeft);
56
+
51
57
  /**
52
58
  * Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll
53
59
  * Константа взята из полифила (468), на дизайн-ревью уточнили до 250
@@ -74,7 +80,7 @@ function doScroll({
74
80
  */
75
81
  const maxLeft = initialScrollWidth - scrollElement.offsetWidth;
76
82
 
77
- let startLeft = scrollElement.scrollLeft;
83
+ let startLeft = roundUpElementScrollLeft(scrollElement);
78
84
  let endLeft = getScrollPosition(startLeft);
79
85
 
80
86
  onScrollStart();
@@ -100,7 +106,7 @@ function doScroll({
100
106
  const currentLeft = startLeft + (endLeft - startLeft) * value;
101
107
  scrollElement.scrollLeft = Math.ceil(currentLeft);
102
108
 
103
- if (scrollElement.scrollLeft !== Math.max(0, endLeft)) {
109
+ if (roundUpElementScrollLeft(scrollElement) !== Math.max(0, endLeft)) {
104
110
  requestAnimationFrame(scroll);
105
111
  return;
106
112
  }
@@ -179,7 +185,7 @@ const HorizontalScrollComponent: React.FC<HorizontalScrollProps> = ({
179
185
 
180
186
  setCanScrollLeft(scrollElement.scrollLeft > 0);
181
187
  setCanScrollRight(
182
- scrollElement.scrollLeft + scrollElement.offsetWidth <
188
+ roundUpElementScrollLeft(scrollElement) + scrollElement.offsetWidth <
183
189
  scrollElement.scrollWidth
184
190
  );
185
191
  }
@@ -23,6 +23,7 @@ const InputComponent: React.FunctionComponent<InputProps> = ({
23
23
  getRootRef,
24
24
  sizeY,
25
25
  style,
26
+ before,
26
27
  after,
27
28
  ...restProps
28
29
  }: InputProps) => {
@@ -37,6 +38,7 @@ const InputComponent: React.FunctionComponent<InputProps> = ({
37
38
  style={style}
38
39
  className={className}
39
40
  getRootRef={getRootRef}
41
+ before={before}
40
42
  after={after}
41
43
  disabled={restProps.disabled}
42
44
  >
@@ -2,6 +2,7 @@
2
2
  box-sizing: border-box;
3
3
  position: absolute;
4
4
  top: 0;
5
+ padding: 8px;
5
6
  left: 0;
6
7
  width: 100%;
7
8
  height: 100%;
@@ -14,7 +15,6 @@
14
15
  width: 100%;
15
16
  margin-left: auto;
16
17
  margin-right: auto;
17
- padding: 8px;
18
18
  transform: translateY(100%);
19
19
  }
20
20
 
@@ -3,11 +3,7 @@ import { getClassName } from "../../helpers/getClassName";
3
3
  import { classNames } from "../../lib/classNames";
4
4
  import { withPlatform } from "../../hoc/withPlatform";
5
5
  import { HasPlatform } from "../../types";
6
- import {
7
- withAdaptivity,
8
- ViewHeight,
9
- ViewWidth,
10
- } from "../../hoc/withAdaptivity";
6
+ import { withAdaptivity } from "../../hoc/withAdaptivity";
11
7
  import ModalRootContext, {
12
8
  useModalRegistry,
13
9
  } from "../ModalRoot/ModalRootContext";
@@ -22,6 +18,7 @@ import {
22
18
  AdaptivityContextInterface,
23
19
  AdaptivityProps,
24
20
  } from "../AdaptivityProvider/AdaptivityContext";
21
+ import { useAdaptivityIsDesktop } from "../../hooks/useAdaptivity";
25
22
  import "./ModalCard.css";
26
23
 
27
24
  export interface ModalCardProps
@@ -51,9 +48,7 @@ const ModalCard: React.FC<ModalCardProps & AdaptivityContextInterface> = (
51
48
  ...restProps
52
49
  } = props;
53
50
 
54
- const isDesktop =
55
- viewWidth >= ViewWidth.SMALL_TABLET &&
56
- (hasMouse || viewHeight >= ViewHeight.MEDIUM);
51
+ const isDesktop = useAdaptivityIsDesktop();
57
52
 
58
53
  const modalContext = React.useContext(ModalRootContext);
59
54
  const { refs } = useModalRegistry(getNavId(props, warn), ModalType.CARD);
@@ -5,18 +5,15 @@ import Headline from "../Typography/Headline/Headline";
5
5
  import { classNames } from "../../lib/classNames";
6
6
  import { getClassName } from "../../helpers/getClassName";
7
7
  import { usePlatform } from "../../hooks/usePlatform";
8
- import {
9
- ViewHeight,
10
- ViewWidth,
11
- withAdaptivity,
12
- } from "../../hoc/withAdaptivity";
8
+ import { ViewWidth, withAdaptivity } from "../../hoc/withAdaptivity";
13
9
  import { HasRootRef } from "../../types";
14
10
  import { PanelHeaderButton } from "../PanelHeaderButton/PanelHeaderButton";
15
- import { ANDROID, IOS } from "../../lib/platform";
11
+ import { ANDROID, IOS, Platform } from "../../lib/platform";
16
12
  import ModalDismissButton from "../ModalDismissButton/ModalDismissButton";
17
13
  import { Icon24Dismiss } from "@vkontakte/icons";
18
14
  import { useKeyboard } from "../../hooks/useKeyboard";
19
15
  import { AdaptivityContextInterface } from "../AdaptivityProvider/AdaptivityContext";
16
+ import { useAdaptivityIsDesktop } from "../../hooks/useAdaptivity";
20
17
  import "./ModalCardBase.css";
21
18
 
22
19
  export interface ModalCardBaseProps
@@ -77,12 +74,11 @@ export const ModalCardBase = withAdaptivity<
77
74
  ...restProps
78
75
  }) => {
79
76
  const platform = usePlatform();
80
- const isDesktop =
81
- viewWidth >= ViewWidth.SMALL_TABLET &&
82
- (hasMouse || viewHeight >= ViewHeight.MEDIUM);
77
+ const isDesktop = useAdaptivityIsDesktop();
83
78
  const isSoftwareKeyboardOpened = useKeyboard().isOpened;
84
79
 
85
- const canShowCloseBtn = viewWidth >= ViewWidth.SMALL_TABLET;
80
+ const canShowCloseBtn =
81
+ viewWidth >= ViewWidth.SMALL_TABLET || platform === Platform.VKCOM;
86
82
  const canShowCloseBtnIos = platform === IOS && !canShowCloseBtn;
87
83
 
88
84
  return (
@@ -7,11 +7,7 @@ import {
7
7
  } from "../ModalRoot/ModalRootContext";
8
8
  import { usePlatform } from "../../hooks/usePlatform";
9
9
  import { useOrientationChange } from "../../hooks/useOrientationChange";
10
- import {
11
- withAdaptivity,
12
- ViewHeight,
13
- ViewWidth,
14
- } from "../../hoc/withAdaptivity";
10
+ import { withAdaptivity, ViewWidth } from "../../hoc/withAdaptivity";
15
11
  import {
16
12
  AdaptivityContextInterface,
17
13
  AdaptivityProps,
@@ -21,6 +17,8 @@ import { multiRef } from "../../lib/utils";
21
17
  import { ModalType } from "../ModalRoot/types";
22
18
  import { getNavId, NavIdProps } from "../../lib/getNavId";
23
19
  import { warnOnce } from "../../lib/warnOnce";
20
+ import { Platform } from "../../lib/platform";
21
+ import { useAdaptivityIsDesktop } from "../../hooks/useAdaptivity";
24
22
  import "./ModalPage.css";
25
23
 
26
24
  export interface ModalPageProps
@@ -91,10 +89,9 @@ const ModalPage: React.FC<ModalPageProps & AdaptivityContextInterface> = (
91
89
  updateModalHeight,
92
90
  ]);
93
91
 
94
- const isDesktop =
95
- viewWidth >= ViewWidth.SMALL_TABLET &&
96
- (hasMouse || viewHeight >= ViewHeight.MEDIUM);
97
- const canShowCloseBtn = viewWidth >= ViewWidth.SMALL_TABLET;
92
+ const isDesktop = useAdaptivityIsDesktop();
93
+ const canShowCloseBtn =
94
+ viewWidth >= ViewWidth.SMALL_TABLET || platform === Platform.VKCOM;
98
95
 
99
96
  const modalContext = React.useContext(ModalRootContext);
100
97
  const { refs } = useModalRegistry(getNavId(props, warn), ModalType.PAGE);