@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
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["shouldDisableDate", "disableFuture", "disablePast", "value", "onChange", "calendarPlacement", "style", "className", "closeOnChange", "disablePickers", "getRootRef", "name", "autoFocus", "disabled", "onClick", "onFocus", "prevMonthAriaLabel", "nextMonthAriaLabel", "changeDayAriaLabel", "changeMonthAriaLabel", "changeYearAriaLabel", "changeStartDayAriaLabel", "changeStartMonthAriaLabel", "changeStartYearAriaLabel", "changeEndDayAriaLabel", "changeEndMonthAriaLabel", "changeEndYearAriaLabel", "clearFieldAriaLabel", "showCalendarAriaLabel"];
3
+ var _excluded = ["shouldDisableDate", "disableFuture", "disablePast", "value", "onChange", "calendarPlacement", "style", "className", "closeOnChange", "disablePickers", "getRootRef", "name", "autoFocus", "disabled", "onClick", "onFocus", "prevMonthAriaLabel", "nextMonthAriaLabel", "changeDayAriaLabel", "changeMonthAriaLabel", "changeYearAriaLabel", "changeStartDayAriaLabel", "changeStartMonthAriaLabel", "changeStartYearAriaLabel", "changeEndDayAriaLabel", "changeEndMonthAriaLabel", "changeEndYearAriaLabel", "clearFieldAriaLabel", "showCalendarAriaLabel", "prevMonthIcon", "nextMonthIcon"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import * as React from "react";
6
6
  import { format, isMatch, parse, isAfter } from "../../lib/date";
@@ -106,6 +106,8 @@ export var DateRangeInput = function DateRangeInput(_ref) {
106
106
  clearFieldAriaLabel = _ref$clearFieldAriaLa === void 0 ? "Очистить поле" : _ref$clearFieldAriaLa,
107
107
  _ref$showCalendarAria = _ref.showCalendarAriaLabel,
108
108
  showCalendarAriaLabel = _ref$showCalendarAria === void 0 ? "Показать календарь" : _ref$showCalendarAria,
109
+ prevMonthIcon = _ref.prevMonthIcon,
110
+ nextMonthIcon = _ref.nextMonthIcon,
109
111
  props = _objectWithoutProperties(_ref, _excluded);
110
112
 
111
113
  var daysStartRef = React.useRef(null);
@@ -275,7 +277,9 @@ export var DateRangeInput = function DateRangeInput(_ref) {
275
277
  nextMonthAriaLabel: nextMonthAriaLabel,
276
278
  changeMonthAriaLabel: changeMonthAriaLabel,
277
279
  changeYearAriaLabel: changeYearAriaLabel,
278
- changeDayAriaLabel: changeDayAriaLabel
280
+ changeDayAriaLabel: changeDayAriaLabel,
281
+ prevMonthIcon: prevMonthIcon,
282
+ nextMonthIcon: nextMonthIcon
279
283
  })));
280
284
  };
281
285
  //# sourceMappingURL=DateRangeInput.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"names":["React","format","isMatch","parse","isAfter","Icon16Clear","Icon20CalendarOutline","CalendarRange","Popper","IconButton","useDateInput","useAdaptivity","classNames","multiRef","FormField","InputLike","InputLikeDivider","callMultiple","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","DateRangeInput","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthAriaLabel","nextMonthAriaLabel","changeDayAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","changeStartDayAriaLabel","changeStartMonthAriaLabel","changeStartYearAriaLabel","changeEndDayAriaLabel","changeEndMonthAriaLabel","changeEndYearAriaLabel","clearFieldAriaLabel","showCalendarAriaLabel","props","daysStartRef","useRef","monthsStartRef","yearsStartRef","daysEndRef","monthsEndRef","yearsEndRef","onInternalValueChange","useCallback","internalValue","isStartValid","isEndValid","i","formattedStartValue","formattedEndValue","mask","valueExists","Array","isArray","now","Date","start","end","refs","useMemo","maxElement","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","onCalendarChange"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { format, isMatch, parse, isAfter } from \"../../lib/date\";\nimport { Icon16Clear, Icon20CalendarOutline } from \"@vkontakte/icons\";\nimport {\n CalendarRange,\n CalendarRangeProps,\n} from \"../CalendarRange/CalendarRange\";\nimport { Popper, Placement } from \"../Popper/Popper\";\nimport IconButton from \"../IconButton/IconButton\";\nimport { HasRootRef } from \"../../types\";\nimport { useDateInput } from \"../../hooks/useDateInput\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { classNames } from \"../../lib/classNames\";\nimport { multiRef } from \"../../lib/utils\";\nimport { FormField } from \"../FormField/FormField\";\nimport { InputLike } from \"../InputLike/InputLike\";\nimport { InputLikeDivider } from \"../InputLike/InputLikeDivider\";\nimport { callMultiple } from \"../../lib/callMultiple\";\nimport \"./DateRangeInput.css\";\n\nexport interface DateRangeInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, \"value\" | \"onChange\">,\n Pick<\n CalendarRangeProps,\n | \"disablePast\"\n | \"disableFuture\"\n | \"shouldDisableDate\"\n | \"onChange\"\n | \"value\"\n | \"weekStartsOn\"\n | \"disablePickers\"\n | \"prevMonthAriaLabel\"\n | \"nextMonthAriaLabel\"\n | \"changeMonthAriaLabel\"\n | \"changeYearAriaLabel\"\n | \"changeDayAriaLabel\"\n >,\n HasRootRef<HTMLDivElement> {\n calendarPlacement?: Placement;\n closeOnChange?: boolean;\n clearFieldAriaLabel?: string;\n showCalendarAriaLabel?: string;\n changeStartDayAriaLabel?: string;\n changeStartMonthAriaLabel?: string;\n changeStartYearAriaLabel?: string;\n changeEndDayAriaLabel?: string;\n changeEndMonthAriaLabel?: string;\n changeEndYearAriaLabel?: string;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n case 3:\n max = 31;\n break;\n case 1:\n case 4:\n max = 12;\n break;\n case 2:\n case 5:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarRangeProps[\"value\"]) => {\n const newValue = [\"\", \"\", \"\", \"\", \"\", \"\"];\n if (value?.[0]) {\n newValue[0] = String(value[0].getDate()).padStart(2, \"0\");\n newValue[1] = String(value[0].getMonth() + 1).padStart(2, \"0\");\n newValue[2] = String(value[0].getFullYear()).padStart(4, \"0\");\n }\n if (value?.[1]) {\n newValue[3] = String(value[1].getDate()).padStart(2, \"0\");\n newValue[4] = String(value[1].getMonth() + 1).padStart(2, \"0\");\n newValue[5] = String(value[1].getFullYear()).padStart(4, \"0\");\n }\n return newValue;\n};\n\nexport const DateRangeInput: React.FC<DateRangeInputProps> = ({\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = \"bottom-start\",\n style,\n className,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeDayAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n changeStartDayAriaLabel = \"Изменить день начала\",\n changeStartMonthAriaLabel = \"Изменить месяц начала\",\n changeStartYearAriaLabel = \"Изменить год начала\",\n changeEndDayAriaLabel = \"Изменить день окончания\",\n changeEndMonthAriaLabel = \"Изменить месяц окончания\",\n changeEndYearAriaLabel = \"Изменить год окончания\",\n clearFieldAriaLabel = \"Очистить поле\",\n showCalendarAriaLabel = \"Показать календарь\",\n ...props\n}) => {\n const daysStartRef = React.useRef<HTMLSpanElement>(null);\n const monthsStartRef = React.useRef<HTMLSpanElement>(null);\n const yearsStartRef = React.useRef<HTMLSpanElement>(null);\n const daysEndRef = React.useRef<HTMLSpanElement>(null);\n const monthsEndRef = React.useRef<HTMLSpanElement>(null);\n const yearsEndRef = React.useRef<HTMLSpanElement>(null);\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n let isStartValid = true;\n let isEndValid = true;\n for (let i = 0; i <= 2; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isStartValid = false;\n }\n }\n for (let i = 3; i <= 5; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isEndValid = false;\n }\n }\n const formattedStartValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n const formattedEndValue = `${internalValue[3]}.${internalValue[4]}.${internalValue[5]}`;\n const mask = \"dd.MM.yyyy\";\n\n if (!isMatch(formattedStartValue, mask)) {\n isStartValid = false;\n }\n if (!isMatch(formattedEndValue, mask)) {\n isEndValid = false;\n }\n\n if (!isStartValid && !isEndValid) {\n return;\n }\n\n const valueExists = Array.isArray(value);\n const now = new Date();\n const start = isStartValid\n ? parse(formattedStartValue, mask, (valueExists && value?.[0]) || now)\n : null;\n const end = isEndValid\n ? parse(formattedEndValue, mask, (valueExists && value?.[1]) || now)\n : null;\n if (start && end && isAfter(end, start)) {\n onChange?.([start, end]);\n }\n },\n [onChange, value]\n );\n\n const refs = React.useMemo(\n () => [\n daysStartRef,\n monthsStartRef,\n yearsStartRef,\n daysEndRef,\n monthsEndRef,\n yearsEndRef,\n ],\n [\n daysStartRef,\n monthsStartRef,\n yearsStartRef,\n daysEndRef,\n monthsEndRef,\n yearsEndRef,\n ]\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement: 5,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY } = useAdaptivity();\n\n const onCalendarChange = React.useCallback(\n (newValue?: Array<Date | null> | undefined) => {\n onChange?.(newValue);\n if (closeOnChange && newValue?.[1] && newValue[1] !== value?.[1]) {\n removeFocusFromField();\n }\n },\n [onChange, closeOnChange, value, removeFocusFromField]\n );\n\n return (\n <FormField\n vkuiClass={classNames(\"DateRangeInput\", `DateRangeInput--sizeY-${sizeY}`)}\n style={style}\n className={className}\n getRootRef={multiRef(rootRef, getRootRef)}\n after={\n value ? (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={clearFieldAriaLabel}\n onClick={clear}\n >\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={showCalendarAriaLabel}\n onClick={openCalendar}\n >\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? `${value[0] ? format(value[0], \"DD.MM.YYYY\") : \"\"} - ${\n value[1] ? format(value[1], \"DD.MM.YYYY\") : \"\"\n }`\n : \"\"\n }\n />\n <span vkuiClass=\"DateInput__input\" onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n aria-label={changeStartDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n aria-label={changeStartMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n aria-label={changeStartYearAriaLabel}\n />\n <InputLikeDivider>{\" — \"}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n aria-label={changeEndDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n aria-label={changeEndMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n aria-label={changeEndYearAriaLabel}\n />\n </span>\n {open && (\n <Popper\n targetRef={rootRef}\n offsetDistance={8}\n placement={calendarPlacement}\n >\n <CalendarRange\n value={value}\n onChange={onCalendarChange}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n disablePickers={disablePickers}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n changeDayAriaLabel={changeDayAriaLabel}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"file":"DateRangeInput.js"}
1
+ {"version":3,"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"names":["React","format","isMatch","parse","isAfter","Icon16Clear","Icon20CalendarOutline","CalendarRange","Popper","IconButton","useDateInput","useAdaptivity","classNames","multiRef","FormField","InputLike","InputLikeDivider","callMultiple","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","DateRangeInput","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthAriaLabel","nextMonthAriaLabel","changeDayAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","changeStartDayAriaLabel","changeStartMonthAriaLabel","changeStartYearAriaLabel","changeEndDayAriaLabel","changeEndMonthAriaLabel","changeEndYearAriaLabel","clearFieldAriaLabel","showCalendarAriaLabel","prevMonthIcon","nextMonthIcon","props","daysStartRef","useRef","monthsStartRef","yearsStartRef","daysEndRef","monthsEndRef","yearsEndRef","onInternalValueChange","useCallback","internalValue","isStartValid","isEndValid","i","formattedStartValue","formattedEndValue","mask","valueExists","Array","isArray","now","Date","start","end","refs","useMemo","maxElement","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","onCalendarChange"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,MAAT,EAAiBC,OAAjB,EAA0BC,KAA1B,EAAiCC,OAAjC;AACA,SAASC,WAAT,EAAsBC,qBAAtB,QAAmD,kBAAnD;AACA,SACEC,aADF;AAIA,SAASC,MAAT;AACA,OAAOC,UAAP;AAEA,SAASC,YAAT;AACA,SAASC,aAAT;AACA,SAASC,UAAT;AACA,SAASC,QAAT;AACA,SAASC,SAAT;AACA,SAASC,SAAT;AACA,SAASC,gBAAT;AACA,SAASC,YAAT;;AAmCA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,KAAD,EAAmB;AACxC,MAAIC,MAAM,GAAG,CAAb;AACA,MAAIC,GAAG,GAAG,CAAV;AACA,MAAIC,GAAG,GAAG,CAAV;;AAEA,UAAQH,KAAR;AACE,SAAK,CAAL;AACA,SAAK,CAAL;AACEG,MAAAA,GAAG,GAAG,EAAN;AACA;;AACF,SAAK,CAAL;AACA,SAAK,CAAL;AACEA,MAAAA,GAAG,GAAG,EAAN;AACA;;AACF,SAAK,CAAL;AACA,SAAK,CAAL;AACEA,MAAAA,GAAG,GAAG,IAAN;AACAD,MAAAA,GAAG,GAAG,IAAN;AACAD,MAAAA,MAAM,GAAG,CAAT;AACA;AAdJ;;AAiBA,SAAO;AAAEA,IAAAA,MAAM,EAANA,MAAF;AAAUC,IAAAA,GAAG,EAAHA,GAAV;AAAeC,IAAAA,GAAG,EAAHA;AAAf,GAAP;AACD,CAvBD;;AAyBA,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,KAAD,EAAwC;AAC/D,MAAMC,QAAQ,GAAG,CAAC,EAAD,EAAK,EAAL,EAAS,EAAT,EAAa,EAAb,EAAiB,EAAjB,EAAqB,EAArB,CAAjB;;AACA,MAAID,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAG,CAAH,CAAT,EAAgB;AACdC,IAAAA,QAAQ,CAAC,CAAD,CAAR,GAAcC,MAAM,CAACF,KAAK,CAAC,CAAD,CAAL,CAASG,OAAT,EAAD,CAAN,CAA2BC,QAA3B,CAAoC,CAApC,EAAuC,GAAvC,CAAd;AACAH,IAAAA,QAAQ,CAAC,CAAD,CAAR,GAAcC,MAAM,CAACF,KAAK,CAAC,CAAD,CAAL,CAASK,QAAT,KAAsB,CAAvB,CAAN,CAAgCD,QAAhC,CAAyC,CAAzC,EAA4C,GAA5C,CAAd;AACAH,IAAAA,QAAQ,CAAC,CAAD,CAAR,GAAcC,MAAM,CAACF,KAAK,CAAC,CAAD,CAAL,CAASM,WAAT,EAAD,CAAN,CAA+BF,QAA/B,CAAwC,CAAxC,EAA2C,GAA3C,CAAd;AACD;;AACD,MAAIJ,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAG,CAAH,CAAT,EAAgB;AACdC,IAAAA,QAAQ,CAAC,CAAD,CAAR,GAAcC,MAAM,CAACF,KAAK,CAAC,CAAD,CAAL,CAASG,OAAT,EAAD,CAAN,CAA2BC,QAA3B,CAAoC,CAApC,EAAuC,GAAvC,CAAd;AACAH,IAAAA,QAAQ,CAAC,CAAD,CAAR,GAAcC,MAAM,CAACF,KAAK,CAAC,CAAD,CAAL,CAASK,QAAT,KAAsB,CAAvB,CAAN,CAAgCD,QAAhC,CAAyC,CAAzC,EAA4C,GAA5C,CAAd;AACAH,IAAAA,QAAQ,CAAC,CAAD,CAAR,GAAcC,MAAM,CAACF,KAAK,CAAC,CAAD,CAAL,CAASM,WAAT,EAAD,CAAN,CAA+BF,QAA/B,CAAwC,CAAxC,EAA2C,GAA3C,CAAd;AACD;;AACD,SAAOH,QAAP;AACD,CAbD;;AAeA,OAAO,IAAMM,cAA6C,GAAG,SAAhDA,cAAgD,OAiCvD;AAAA,MAhCJC,iBAgCI,QAhCJA,iBAgCI;AAAA,MA/BJC,aA+BI,QA/BJA,aA+BI;AAAA,MA9BJC,WA8BI,QA9BJA,WA8BI;AAAA,MA7BJV,KA6BI,QA7BJA,KA6BI;AAAA,MA5BJW,QA4BI,QA5BJA,QA4BI;AAAA,mCA3BJC,iBA2BI;AAAA,MA3BJA,iBA2BI,sCA3BgB,cA2BhB;AAAA,MA1BJC,KA0BI,QA1BJA,KA0BI;AAAA,MAzBJC,SAyBI,QAzBJA,SAyBI;AAAA,gCAxBJC,aAwBI;AAAA,MAxBJA,aAwBI,mCAxBY,IAwBZ;AAAA,MAvBJC,cAuBI,QAvBJA,cAuBI;AAAA,MAtBJC,UAsBI,QAtBJA,UAsBI;AAAA,MArBJC,IAqBI,QArBJA,IAqBI;AAAA,MApBJC,SAoBI,QApBJA,SAoBI;AAAA,MAnBJC,QAmBI,QAnBJA,QAmBI;AAAA,MAlBJC,OAkBI,QAlBJA,OAkBI;AAAA,MAjBJC,OAiBI,QAjBJA,OAiBI;AAAA,MAhBJC,kBAgBI,QAhBJA,kBAgBI;AAAA,MAfJC,kBAeI,QAfJA,kBAeI;AAAA,MAdJC,kBAcI,QAdJA,kBAcI;AAAA,MAbJC,oBAaI,QAbJA,oBAaI;AAAA,MAZJC,mBAYI,QAZJA,mBAYI;AAAA,mCAXJC,uBAWI;AAAA,MAXJA,uBAWI,sCAXsB,sBAWtB;AAAA,mCAVJC,yBAUI;AAAA,MAVJA,yBAUI,sCAVwB,uBAUxB;AAAA,mCATJC,wBASI;AAAA,MATJA,wBASI,sCATuB,qBASvB;AAAA,mCARJC,qBAQI;AAAA,MARJA,qBAQI,sCARoB,yBAQpB;AAAA,mCAPJC,uBAOI;AAAA,MAPJA,uBAOI,sCAPsB,0BAOtB;AAAA,mCANJC,sBAMI;AAAA,MANJA,sBAMI,sCANqB,wBAMrB;AAAA,mCALJC,mBAKI;AAAA,MALJA,mBAKI,sCALkB,eAKlB;AAAA,mCAJJC,qBAII;AAAA,MAJJA,qBAII,sCAJoB,oBAIpB;AAAA,MAHJC,aAGI,QAHJA,aAGI;AAAA,MAFJC,aAEI,QAFJA,aAEI;AAAA,MADDC,KACC;;AACJ,MAAMC,YAAY,GAAG/D,KAAK,CAACgE,MAAN,CAA8B,IAA9B,CAArB;AACA,MAAMC,cAAc,GAAGjE,KAAK,CAACgE,MAAN,CAA8B,IAA9B,CAAvB;AACA,MAAME,aAAa,GAAGlE,KAAK,CAACgE,MAAN,CAA8B,IAA9B,CAAtB;AACA,MAAMG,UAAU,GAAGnE,KAAK,CAACgE,MAAN,CAA8B,IAA9B,CAAnB;AACA,MAAMI,YAAY,GAAGpE,KAAK,CAACgE,MAAN,CAA8B,IAA9B,CAArB;AACA,MAAMK,WAAW,GAAGrE,KAAK,CAACgE,MAAN,CAA8B,IAA9B,CAApB;AAEA,MAAMM,qBAAqB,GAAGtE,KAAK,CAACuE,WAAN,CAC5B,UAACC,aAAD,EAA6B;AAC3B,QAAIC,YAAY,GAAG,IAAnB;AACA,QAAIC,UAAU,GAAG,IAAjB;;AACA,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI,CAArB,EAAwBA,CAAC,IAAI,CAA7B,EAAgC;AAC9B,UAAIH,aAAa,CAACG,CAAD,CAAb,CAAiBvD,MAAjB,GAA0BF,cAAc,CAACyD,CAAD,CAAd,CAAkBvD,MAAhD,EAAwD;AACtDqD,QAAAA,YAAY,GAAG,KAAf;AACD;AACF;;AACD,SAAK,IAAIE,EAAC,GAAG,CAAb,EAAgBA,EAAC,IAAI,CAArB,EAAwBA,EAAC,IAAI,CAA7B,EAAgC;AAC9B,UAAIH,aAAa,CAACG,EAAD,CAAb,CAAiBvD,MAAjB,GAA0BF,cAAc,CAACyD,EAAD,CAAd,CAAkBvD,MAAhD,EAAwD;AACtDsD,QAAAA,UAAU,GAAG,KAAb;AACD;AACF;;AACD,QAAME,mBAAmB,aAAMJ,aAAa,CAAC,CAAD,CAAnB,cAA0BA,aAAa,CAAC,CAAD,CAAvC,cAA8CA,aAAa,CAAC,CAAD,CAA3D,CAAzB;AACA,QAAMK,iBAAiB,aAAML,aAAa,CAAC,CAAD,CAAnB,cAA0BA,aAAa,CAAC,CAAD,CAAvC,cAA8CA,aAAa,CAAC,CAAD,CAA3D,CAAvB;AACA,QAAMM,IAAI,GAAG,YAAb;;AAEA,QAAI,CAAC5E,OAAO,CAAC0E,mBAAD,EAAsBE,IAAtB,CAAZ,EAAyC;AACvCL,MAAAA,YAAY,GAAG,KAAf;AACD;;AACD,QAAI,CAACvE,OAAO,CAAC2E,iBAAD,EAAoBC,IAApB,CAAZ,EAAuC;AACrCJ,MAAAA,UAAU,GAAG,KAAb;AACD;;AAED,QAAI,CAACD,YAAD,IAAiB,CAACC,UAAtB,EAAkC;AAChC;AACD;;AAED,QAAMK,WAAW,GAAGC,KAAK,CAACC,OAAN,CAAczD,KAAd,CAApB;AACA,QAAM0D,GAAG,GAAG,IAAIC,IAAJ,EAAZ;AACA,QAAMC,KAAK,GAAGX,YAAY,GACtBtE,KAAK,CAACyE,mBAAD,EAAsBE,IAAtB,EAA6BC,WAAW,KAAIvD,KAAJ,aAAIA,KAAJ,uBAAIA,KAAK,CAAG,CAAH,CAAT,CAAZ,IAA+B0D,GAA3D,CADiB,GAEtB,IAFJ;AAGA,QAAMG,GAAG,GAAGX,UAAU,GAClBvE,KAAK,CAAC0E,iBAAD,EAAoBC,IAApB,EAA2BC,WAAW,KAAIvD,KAAJ,aAAIA,KAAJ,uBAAIA,KAAK,CAAG,CAAH,CAAT,CAAZ,IAA+B0D,GAAzD,CADa,GAElB,IAFJ;;AAGA,QAAIE,KAAK,IAAIC,GAAT,IAAgBjF,OAAO,CAACiF,GAAD,EAAMD,KAAN,CAA3B,EAAyC;AACvCjD,MAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAG,CAACiD,KAAD,EAAQC,GAAR,CAAH,CAAR;AACD;AACF,GAxC2B,EAyC5B,CAAClD,QAAD,EAAWX,KAAX,CAzC4B,CAA9B;AA4CA,MAAM8D,IAAI,GAAGtF,KAAK,CAACuF,OAAN,CACX;AAAA,WAAM,CACJxB,YADI,EAEJE,cAFI,EAGJC,aAHI,EAIJC,UAJI,EAKJC,YALI,EAMJC,WANI,CAAN;AAAA,GADW,EASX,CACEN,YADF,EAEEE,cAFF,EAGEC,aAHF,EAIEC,UAJF,EAKEC,YALF,EAMEC,WANF,CATW,CAAb;;AAmBA,sBAYI3D,YAAY,CAAC;AACf8E,IAAAA,UAAU,EAAE,CADG;AAEfF,IAAAA,IAAI,EAAJA,IAFe;AAGf3C,IAAAA,SAAS,EAATA,SAHe;AAIfC,IAAAA,QAAQ,EAARA,QAJe;AAKf1B,IAAAA,cAAc,EAAdA,cALe;AAMfiB,IAAAA,QAAQ,EAARA,QANe;AAOfmC,IAAAA,qBAAqB,EAArBA,qBAPe;AAQf/C,IAAAA,gBAAgB,EAAhBA,gBARe;AASfC,IAAAA,KAAK,EAALA;AATe,GAAD,CAZhB;AAAA,MACEiE,OADF,iBACEA,OADF;AAAA,MAEEC,WAFF,iBAEEA,WAFF;AAAA,MAGEC,IAHF,iBAGEA,IAHF;AAAA,MAIEC,YAJF,iBAIEA,YAJF;AAAA,MAKEC,aALF,iBAKEA,aALF;AAAA,MAMErB,aANF,iBAMEA,aANF;AAAA,MAOEsB,aAPF,iBAOEA,aAPF;AAAA,MAQEC,iBARF,iBAQEA,iBARF;AAAA,MASEC,gBATF,iBASEA,gBATF;AAAA,MAUEC,KAVF,iBAUEA,KAVF;AAAA,MAWEC,oBAXF,iBAWEA,oBAXF;;AAwBA,uBAAkBvF,aAAa,EAA/B;AAAA,MAAQwF,KAAR,kBAAQA,KAAR;;AAEA,MAAMC,gBAAgB,GAAGpG,KAAK,CAACuE,WAAN,CACvB,UAAC9C,QAAD,EAA+C;AAC7CU,IAAAA,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAGV,QAAH,CAAR;;AACA,QAAIc,aAAa,IAAId,QAAJ,aAAIA,QAAJ,eAAIA,QAAQ,CAAG,CAAH,CAAzB,IAAkCA,QAAQ,CAAC,CAAD,CAAR,MAAgBD,KAAhB,aAAgBA,KAAhB,uBAAgBA,KAAK,CAAG,CAAH,CAArB,CAAtC,EAAkE;AAChE0E,MAAAA,oBAAoB;AACrB;AACF,GANsB,EAOvB,CAAC/D,QAAD,EAAWI,aAAX,EAA0Bf,KAA1B,EAAiC0E,oBAAjC,CAPuB,CAAzB;AAUA,SACE,oBAAC,SAAD;AACE,IAAA,SAAS,EAAEtF,UAAU,CAAC,gBAAD,kCAA4CuF,KAA5C,EADvB;AAEE,IAAA,KAAK,EAAE9D,KAFT;AAGE,IAAA,SAAS,EAAEC,SAHb;AAIE,IAAA,UAAU,EAAEzB,QAAQ,CAAC4E,OAAD,EAAUhD,UAAV,CAJtB;AAKE,IAAA,KAAK,EACHjB,KAAK,GACH,oBAAC,UAAD;AACE,MAAA,SAAS,EAAC,SADZ;AAEE,oBAAYkC,mBAFd;AAGE,MAAA,OAAO,EAAEuC;AAHX,OAKE,oBAAC,WAAD,OALF,CADG,GASH,oBAAC,UAAD;AACE,MAAA,SAAS,EAAC,SADZ;AAEE,oBAAYtC,qBAFd;AAGE,MAAA,OAAO,EAAEiC;AAHX,OAKE,oBAAC,qBAAD,OALF,CAfN;AAwBE,IAAA,QAAQ,EAAEhD,QAxBZ;AAyBE,IAAA,OAAO,EAAE3B,YAAY,CAAC+E,gBAAD,EAAmBnD,OAAnB,CAzBvB;AA0BE,IAAA,OAAO,EAAE5B,YAAY,CAAC+E,gBAAD,EAAmBlD,OAAnB;AA1BvB,KA2BMgB,KA3BN,GA6BE;AACE,IAAA,IAAI,EAAC,QADP;AAEE,IAAA,IAAI,EAAEpB,IAFR;AAGE,IAAA,KAAK,EACHlB,KAAK,aACEA,KAAK,CAAC,CAAD,CAAL,GAAWvB,MAAM,CAACuB,KAAK,CAAC,CAAD,CAAN,EAAW,YAAX,CAAjB,GAA4C,EAD9C,gBAECA,KAAK,CAAC,CAAD,CAAL,GAAWvB,MAAM,CAACuB,KAAK,CAAC,CAAD,CAAN,EAAW,YAAX,CAAjB,GAA4C,EAF7C,IAID;AARR,IA7BF,EAwCE;AAAM,IAAA,SAAS,EAAC,kBAAhB;AAAmC,IAAA,SAAS,EAAEsE;AAA9C,KACE,oBAAC,SAAD;AACE,IAAA,MAAM,EAAE,CADV;AAEE,IAAA,UAAU,EAAE/B,YAFd;AAGE,IAAA,KAAK,EAAE,CAHT;AAIE,IAAA,eAAe,EAAEgC,iBAJnB;AAKE,IAAA,KAAK,EAAEvB,aAAa,CAAC,CAAD,CALtB;AAME,kBAAYpB;AANd,IADF,EASE,oBAAC,gBAAD,YATF,EAUE,oBAAC,SAAD;AACE,IAAA,MAAM,EAAE,CADV;AAEE,IAAA,UAAU,EAAEa,cAFd;AAGE,IAAA,KAAK,EAAE,CAHT;AAIE,IAAA,eAAe,EAAE8B,iBAJnB;AAKE,IAAA,KAAK,EAAEvB,aAAa,CAAC,CAAD,CALtB;AAME,kBAAYnB;AANd,IAVF,EAkBE,oBAAC,gBAAD,YAlBF,EAmBE,oBAAC,SAAD;AACE,IAAA,MAAM,EAAE,CADV;AAEE,IAAA,UAAU,EAAEa,aAFd;AAGE,IAAA,KAAK,EAAE,CAHT;AAIE,IAAA,eAAe,EAAE6B,iBAJnB;AAKE,IAAA,KAAK,EAAEvB,aAAa,CAAC,CAAD,CALtB;AAME,kBAAYlB;AANd,IAnBF,EA2BE,oBAAC,gBAAD,QAAmB,KAAnB,CA3BF,EA4BE,oBAAC,SAAD;AACE,IAAA,MAAM,EAAE,CADV;AAEE,IAAA,UAAU,EAAEa,UAFd;AAGE,IAAA,KAAK,EAAE,CAHT;AAIE,IAAA,eAAe,EAAE4B,iBAJnB;AAKE,IAAA,KAAK,EAAEvB,aAAa,CAAC,CAAD,CALtB;AAME,kBAAYjB;AANd,IA5BF,EAoCE,oBAAC,gBAAD,YApCF,EAqCE,oBAAC,SAAD;AACE,IAAA,MAAM,EAAE,CADV;AAEE,IAAA,UAAU,EAAEa,YAFd;AAGE,IAAA,KAAK,EAAE,CAHT;AAIE,IAAA,eAAe,EAAE2B,iBAJnB;AAKE,IAAA,KAAK,EAAEvB,aAAa,CAAC,CAAD,CALtB;AAME,kBAAYhB;AANd,IArCF,EA6CE,oBAAC,gBAAD,YA7CF,EA8CE,oBAAC,SAAD;AACE,IAAA,MAAM,EAAE,CADV;AAEE,IAAA,UAAU,EAAEa,WAFd;AAGE,IAAA,KAAK,EAAE,CAHT;AAIE,IAAA,eAAe,EAAE0B,iBAJnB;AAKE,IAAA,KAAK,EAAEvB,aAAa,CAAC,CAAD,CALtB;AAME,kBAAYf;AANd,IA9CF,CAxCF,EA+FGkC,IAAI,IACH,oBAAC,MAAD;AACE,IAAA,SAAS,EAAEF,OADb;AAEE,IAAA,cAAc,EAAE,CAFlB;AAGE,IAAA,SAAS,EAAErD;AAHb,KAKE,oBAAC,aAAD;AACE,IAAA,KAAK,EAAEZ,KADT;AAEE,IAAA,QAAQ,EAAE4E,gBAFZ;AAGE,IAAA,WAAW,EAAElE,WAHf;AAIE,IAAA,aAAa,EAAED,aAJjB;AAKE,IAAA,iBAAiB,EAAED,iBALrB;AAME,IAAA,OAAO,EAAE6D,aANX;AAOE,IAAA,UAAU,EAAEH,WAPd;AAQE,IAAA,cAAc,EAAElD,cARlB;AASE,IAAA,kBAAkB,EAAEO,kBATtB;AAUE,IAAA,kBAAkB,EAAEC,kBAVtB;AAWE,IAAA,oBAAoB,EAAEE,oBAXxB;AAYE,IAAA,mBAAmB,EAAEC,mBAZvB;AAaE,IAAA,kBAAkB,EAAEF,kBAbtB;AAcE,IAAA,aAAa,EAAEW,aAdjB;AAeE,IAAA,aAAa,EAAEC;AAfjB,IALF,CAhGJ,CADF;AA2HD,CAvQM","sourcesContent":["import * as React from \"react\";\nimport { format, isMatch, parse, isAfter } from \"../../lib/date\";\nimport { Icon16Clear, Icon20CalendarOutline } from \"@vkontakte/icons\";\nimport {\n CalendarRange,\n CalendarRangeProps,\n} from \"../CalendarRange/CalendarRange\";\nimport { Popper, Placement } from \"../Popper/Popper\";\nimport IconButton from \"../IconButton/IconButton\";\nimport { HasRootRef } from \"../../types\";\nimport { useDateInput } from \"../../hooks/useDateInput\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { classNames } from \"../../lib/classNames\";\nimport { multiRef } from \"../../lib/utils\";\nimport { FormField } from \"../FormField/FormField\";\nimport { InputLike } from \"../InputLike/InputLike\";\nimport { InputLikeDivider } from \"../InputLike/InputLikeDivider\";\nimport { callMultiple } from \"../../lib/callMultiple\";\nimport \"./DateRangeInput.css\";\n\nexport interface DateRangeInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, \"value\" | \"onChange\">,\n Pick<\n CalendarRangeProps,\n | \"disablePast\"\n | \"disableFuture\"\n | \"shouldDisableDate\"\n | \"onChange\"\n | \"value\"\n | \"weekStartsOn\"\n | \"disablePickers\"\n | \"prevMonthAriaLabel\"\n | \"nextMonthAriaLabel\"\n | \"changeMonthAriaLabel\"\n | \"changeYearAriaLabel\"\n | \"changeDayAriaLabel\"\n | \"prevMonthIcon\"\n | \"nextMonthIcon\"\n >,\n HasRootRef<HTMLDivElement> {\n calendarPlacement?: Placement;\n closeOnChange?: boolean;\n clearFieldAriaLabel?: string;\n showCalendarAriaLabel?: string;\n changeStartDayAriaLabel?: string;\n changeStartMonthAriaLabel?: string;\n changeStartYearAriaLabel?: string;\n changeEndDayAriaLabel?: string;\n changeEndMonthAriaLabel?: string;\n changeEndYearAriaLabel?: string;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n case 3:\n max = 31;\n break;\n case 1:\n case 4:\n max = 12;\n break;\n case 2:\n case 5:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarRangeProps[\"value\"]) => {\n const newValue = [\"\", \"\", \"\", \"\", \"\", \"\"];\n if (value?.[0]) {\n newValue[0] = String(value[0].getDate()).padStart(2, \"0\");\n newValue[1] = String(value[0].getMonth() + 1).padStart(2, \"0\");\n newValue[2] = String(value[0].getFullYear()).padStart(4, \"0\");\n }\n if (value?.[1]) {\n newValue[3] = String(value[1].getDate()).padStart(2, \"0\");\n newValue[4] = String(value[1].getMonth() + 1).padStart(2, \"0\");\n newValue[5] = String(value[1].getFullYear()).padStart(4, \"0\");\n }\n return newValue;\n};\n\nexport const DateRangeInput: React.FC<DateRangeInputProps> = ({\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = \"bottom-start\",\n style,\n className,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeDayAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n changeStartDayAriaLabel = \"Изменить день начала\",\n changeStartMonthAriaLabel = \"Изменить месяц начала\",\n changeStartYearAriaLabel = \"Изменить год начала\",\n changeEndDayAriaLabel = \"Изменить день окончания\",\n changeEndMonthAriaLabel = \"Изменить месяц окончания\",\n changeEndYearAriaLabel = \"Изменить год окончания\",\n clearFieldAriaLabel = \"Очистить поле\",\n showCalendarAriaLabel = \"Показать календарь\",\n prevMonthIcon,\n nextMonthIcon,\n ...props\n}) => {\n const daysStartRef = React.useRef<HTMLSpanElement>(null);\n const monthsStartRef = React.useRef<HTMLSpanElement>(null);\n const yearsStartRef = React.useRef<HTMLSpanElement>(null);\n const daysEndRef = React.useRef<HTMLSpanElement>(null);\n const monthsEndRef = React.useRef<HTMLSpanElement>(null);\n const yearsEndRef = React.useRef<HTMLSpanElement>(null);\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n let isStartValid = true;\n let isEndValid = true;\n for (let i = 0; i <= 2; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isStartValid = false;\n }\n }\n for (let i = 3; i <= 5; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isEndValid = false;\n }\n }\n const formattedStartValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n const formattedEndValue = `${internalValue[3]}.${internalValue[4]}.${internalValue[5]}`;\n const mask = \"dd.MM.yyyy\";\n\n if (!isMatch(formattedStartValue, mask)) {\n isStartValid = false;\n }\n if (!isMatch(formattedEndValue, mask)) {\n isEndValid = false;\n }\n\n if (!isStartValid && !isEndValid) {\n return;\n }\n\n const valueExists = Array.isArray(value);\n const now = new Date();\n const start = isStartValid\n ? parse(formattedStartValue, mask, (valueExists && value?.[0]) || now)\n : null;\n const end = isEndValid\n ? parse(formattedEndValue, mask, (valueExists && value?.[1]) || now)\n : null;\n if (start && end && isAfter(end, start)) {\n onChange?.([start, end]);\n }\n },\n [onChange, value]\n );\n\n const refs = React.useMemo(\n () => [\n daysStartRef,\n monthsStartRef,\n yearsStartRef,\n daysEndRef,\n monthsEndRef,\n yearsEndRef,\n ],\n [\n daysStartRef,\n monthsStartRef,\n yearsStartRef,\n daysEndRef,\n monthsEndRef,\n yearsEndRef,\n ]\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement: 5,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY } = useAdaptivity();\n\n const onCalendarChange = React.useCallback(\n (newValue?: Array<Date | null> | undefined) => {\n onChange?.(newValue);\n if (closeOnChange && newValue?.[1] && newValue[1] !== value?.[1]) {\n removeFocusFromField();\n }\n },\n [onChange, closeOnChange, value, removeFocusFromField]\n );\n\n return (\n <FormField\n vkuiClass={classNames(\"DateRangeInput\", `DateRangeInput--sizeY-${sizeY}`)}\n style={style}\n className={className}\n getRootRef={multiRef(rootRef, getRootRef)}\n after={\n value ? (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={clearFieldAriaLabel}\n onClick={clear}\n >\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton\n hoverMode=\"opacity\"\n aria-label={showCalendarAriaLabel}\n onClick={openCalendar}\n >\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? `${value[0] ? format(value[0], \"DD.MM.YYYY\") : \"\"} - ${\n value[1] ? format(value[1], \"DD.MM.YYYY\") : \"\"\n }`\n : \"\"\n }\n />\n <span vkuiClass=\"DateInput__input\" onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n aria-label={changeStartDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n aria-label={changeStartMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n aria-label={changeStartYearAriaLabel}\n />\n <InputLikeDivider>{\" — \"}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n aria-label={changeEndDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n aria-label={changeEndMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n aria-label={changeEndYearAriaLabel}\n />\n </span>\n {open && (\n <Popper\n targetRef={rootRef}\n offsetDistance={8}\n placement={calendarPlacement}\n >\n <CalendarRange\n value={value}\n onChange={onCalendarChange}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n disablePickers={disablePickers}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n changeDayAriaLabel={changeDayAriaLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"file":"DateRangeInput.js"}
@@ -23,7 +23,7 @@ export var Epic = function Epic(props) {
23
23
  restProps = _objectWithoutProperties(props, _excluded);
24
24
 
25
25
  if (process.env.NODE_ENV === "development" && !tabbar && viewWidth < ViewWidth.SMALL_TABLET) {
26
- warn("Using Epic without tabbar is not recommended on mobile");
26
+ warn("\u041D\u0435 \u0440\u0435\u043A\u043E\u043C\u0435\u043D\u0434\u0443\u0435\u0442\u0441\u044F \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C Epic \u0431\u0435\u0437 Tabbar \u043F\u0440\u0438 \u0448\u0438\u0440\u0438\u043D\u0435 \u043E\u043A\u043D\u0430 \u043C\u0435\u043D\u044C\u0448\u0435 ".concat(ViewWidth.SMALL_TABLET, "px"));
27
27
  }
28
28
 
29
29
  var story = (_ref = React.Children.toArray(children).find(function (story) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Epic/Epic.tsx"],"names":["React","getClassName","usePlatform","withAdaptivity","ViewWidth","ScrollSaver","getNavId","warnOnce","warn","Epic","props","platform","scroll","useRef","current","activeStory","tabbar","children","viewWidth","restProps","process","env","NODE_ENV","SMALL_TABLET","story","Children","toArray","find","isValidElement","value"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAASC,cAAT,EAAyBC,SAAzB;AACA,SAASC,WAAT;AACA,SAASC,QAAT;AACA,SAASC,QAAT;AAcA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,MAAD,CAArB;AAEA,OAAO,IAAME,IAAsD,GAAG,SAAzDA,IAAyD,CACpEC,KADoE,EAEjE;AAAA;;AACH,MAAMC,QAAQ,GAAGT,WAAW,EAA5B;AACA,MAAMU,MAAM,GAAGZ,KAAK,CAACa,MAAN,CAAwC,EAAxC,EAA4CC,OAA3D;;AACA,MAAQC,WAAR,GAAmEL,KAAnE,CAAQK,WAAR;AAAA,MAAqBC,MAArB,GAAmEN,KAAnE,CAAqBM,MAArB;AAAA,MAA6BC,QAA7B,GAAmEP,KAAnE,CAA6BO,QAA7B;AAAA,MAAuCC,SAAvC,GAAmER,KAAnE,CAAuCQ,SAAvC;AAAA,MAAqDC,SAArD,4BAAmET,KAAnE;;AAEA,MACEU,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IACA,CAACN,MADD,IAEAE,SAAS,GAAGd,SAAS,CAACmB,YAHxB,EAIE;AACAf,IAAAA,IAAI,CAAC,wDAAD,CAAJ;AACD;;AACD,MAAMgB,KAAK,WACRxB,KAAK,CAACyB,QAAN,CAAeC,OAAf,CAAuBT,QAAvB,EAAiCU,IAAjC,CACC,UAACH,KAAD;AAAA,WACE,aAAAxB,KAAK,CAAC4B,cAAN,CAAqBJ,KAArB,KACAlB,QAAQ,CAACkB,KAAK,CAACd,KAAP,EAAcF,IAAd,CAAR,KAAgCO,WAFlC;AAAA,GADD,CADQ,uCAK+B,IAL1C;AAOA,SACE,wCAASI,SAAT;AAAoB,IAAA,SAAS,EAAElB,YAAY,CAAC,MAAD,EAASU,QAAT;AAA3C,MACE,oBAAC,WAAD;AACE,IAAA,GAAG,EAAEI,WADP;AAEE,IAAA,aAAa,EAAEH,MAAM,CAACG,WAAD,CAAN,IAAuB,CAFxC;AAGE,IAAA,UAAU,EAAE,oBAACc,KAAD;AAAA,aAAYjB,MAAM,CAACG,WAAD,CAAN,GAAsBc,KAAlC;AAAA;AAHd,KAKGL,KALH,CADF,EAQGR,MARH,CADF;AAYD,CAjCM,C,CAmCP;;AACA,eAAeb,cAAc,CAACM,IAAD,EAAO;AAClCS,EAAAA,SAAS,EAAE;AADuB,CAAP,CAA7B","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { withAdaptivity, ViewWidth } from \"../../hoc/withAdaptivity\";\nimport { ScrollSaver } from \"./ScrollSaver\";\nimport { getNavId } from \"../../lib/getNavId\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n AdaptivityContextInterface,\n AdaptivityProps,\n} from \"../AdaptivityProvider/AdaptivityContext\";\nimport \"./Epic.css\";\n\nexport interface EpicProps\n extends React.HTMLAttributes<HTMLDivElement>,\n AdaptivityProps {\n tabbar?: React.ReactNode;\n activeStory: string;\n}\n\nconst warn = warnOnce(\"Epic\");\n\nexport const Epic: React.FC<EpicProps & AdaptivityContextInterface> = (\n props\n) => {\n const platform = usePlatform();\n const scroll = React.useRef<{ [key: string]: number }>({}).current;\n const { activeStory, tabbar, children, viewWidth, ...restProps } = props;\n\n if (\n process.env.NODE_ENV === \"development\" &&\n !tabbar &&\n viewWidth < ViewWidth.SMALL_TABLET\n ) {\n warn(\"Using Epic without tabbar is not recommended on mobile\");\n }\n const story =\n (React.Children.toArray(children).find(\n (story) =>\n React.isValidElement(story) &&\n getNavId(story.props, warn) === activeStory\n ) as React.ReactElement | undefined) ?? null;\n\n return (\n <div {...restProps} vkuiClass={getClassName(\"Epic\", platform)}>\n <ScrollSaver\n key={activeStory}\n initialScroll={scroll[activeStory] || 0}\n saveScroll={(value) => (scroll[activeStory] = value)}\n >\n {story}\n </ScrollSaver>\n {tabbar}\n </div>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(Epic, {\n viewWidth: true,\n});\n"],"file":"Epic.js"}
1
+ {"version":3,"sources":["../../../src/components/Epic/Epic.tsx"],"names":["React","getClassName","usePlatform","withAdaptivity","ViewWidth","ScrollSaver","getNavId","warnOnce","warn","Epic","props","platform","scroll","useRef","current","activeStory","tabbar","children","viewWidth","restProps","process","env","NODE_ENV","SMALL_TABLET","story","Children","toArray","find","isValidElement","value"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAASC,cAAT,EAAyBC,SAAzB;AACA,SAASC,WAAT;AACA,SAASC,QAAT;AACA,SAASC,QAAT;AAcA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,MAAD,CAArB;AAEA,OAAO,IAAME,IAAsD,GAAG,SAAzDA,IAAyD,CACpEC,KADoE,EAEjE;AAAA;;AACH,MAAMC,QAAQ,GAAGT,WAAW,EAA5B;AACA,MAAMU,MAAM,GAAGZ,KAAK,CAACa,MAAN,CAAwC,EAAxC,EAA4CC,OAA3D;;AACA,MAAQC,WAAR,GAAmEL,KAAnE,CAAQK,WAAR;AAAA,MAAqBC,MAArB,GAAmEN,KAAnE,CAAqBM,MAArB;AAAA,MAA6BC,QAA7B,GAAmEP,KAAnE,CAA6BO,QAA7B;AAAA,MAAuCC,SAAvC,GAAmER,KAAnE,CAAuCQ,SAAvC;AAAA,MAAqDC,SAArD,4BAAmET,KAAnE;;AAEA,MACEU,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzB,IACA,CAACN,MADD,IAEAE,SAAS,GAAGd,SAAS,CAACmB,YAHxB,EAIE;AACAf,IAAAA,IAAI,qUACsEJ,SAAS,CAACmB,YADhF,QAAJ;AAGD;;AACD,MAAMC,KAAK,WACRxB,KAAK,CAACyB,QAAN,CAAeC,OAAf,CAAuBT,QAAvB,EAAiCU,IAAjC,CACC,UAACH,KAAD;AAAA,WACE,aAAAxB,KAAK,CAAC4B,cAAN,CAAqBJ,KAArB,KACAlB,QAAQ,CAACkB,KAAK,CAACd,KAAP,EAAcF,IAAd,CAAR,KAAgCO,WAFlC;AAAA,GADD,CADQ,uCAK+B,IAL1C;AAOA,SACE,wCAASI,SAAT;AAAoB,IAAA,SAAS,EAAElB,YAAY,CAAC,MAAD,EAASU,QAAT;AAA3C,MACE,oBAAC,WAAD;AACE,IAAA,GAAG,EAAEI,WADP;AAEE,IAAA,aAAa,EAAEH,MAAM,CAACG,WAAD,CAAN,IAAuB,CAFxC;AAGE,IAAA,UAAU,EAAE,oBAACc,KAAD;AAAA,aAAYjB,MAAM,CAACG,WAAD,CAAN,GAAsBc,KAAlC;AAAA;AAHd,KAKGL,KALH,CADF,EAQGR,MARH,CADF;AAYD,CAnCM,C,CAqCP;;AACA,eAAeb,cAAc,CAACM,IAAD,EAAO;AAClCS,EAAAA,SAAS,EAAE;AADuB,CAAP,CAA7B","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { withAdaptivity, ViewWidth } from \"../../hoc/withAdaptivity\";\nimport { ScrollSaver } from \"./ScrollSaver\";\nimport { getNavId } from \"../../lib/getNavId\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n AdaptivityContextInterface,\n AdaptivityProps,\n} from \"../AdaptivityProvider/AdaptivityContext\";\nimport \"./Epic.css\";\n\nexport interface EpicProps\n extends React.HTMLAttributes<HTMLDivElement>,\n AdaptivityProps {\n tabbar?: React.ReactNode;\n activeStory: string;\n}\n\nconst warn = warnOnce(\"Epic\");\n\nexport const Epic: React.FC<EpicProps & AdaptivityContextInterface> = (\n props\n) => {\n const platform = usePlatform();\n const scroll = React.useRef<{ [key: string]: number }>({}).current;\n const { activeStory, tabbar, children, viewWidth, ...restProps } = props;\n\n if (\n process.env.NODE_ENV === \"development\" &&\n !tabbar &&\n viewWidth < ViewWidth.SMALL_TABLET\n ) {\n warn(\n `Не рекомендуется использовать Epic без Tabbar при ширине окна меньше ${ViewWidth.SMALL_TABLET}px`\n );\n }\n const story =\n (React.Children.toArray(children).find(\n (story) =>\n React.isValidElement(story) &&\n getNavId(story.props, warn) === activeStory\n ) as React.ReactElement | undefined) ?? null;\n\n return (\n <div {...restProps} vkuiClass={getClassName(\"Epic\", platform)}>\n <ScrollSaver\n key={activeStory}\n initialScroll={scroll[activeStory] || 0}\n saveScroll={(value) => (scroll[activeStory] = value)}\n >\n {story}\n </ScrollSaver>\n {tabbar}\n </div>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(Epic, {\n viewWidth: true,\n});\n"],"file":"Epic.js"}
@@ -3,7 +3,21 @@ import { HasComponent, HasRootRef } from "../../types";
3
3
  import "./FormField.css";
4
4
  export interface FormFieldProps {
5
5
  /**
6
- * Иконка 12|16|20|24|28 или `IconButton`.
6
+ * Добавляет иконку слева.
7
+ *
8
+ * Рекомендации:
9
+ *
10
+ * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.
11
+ * - Используйте [IconButton](#/IconButton), если вам нужна кликабельная иконка.
12
+ */
13
+ before?: React.ReactNode;
14
+ /**
15
+ * Добавляет иконку справа.
16
+ *
17
+ * Рекомендации:
18
+ *
19
+ * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.
20
+ * - Используйте [IconButton](#/IconButton), если вам нужна кликабельная иконка.
7
21
  */
8
22
  after?: React.ReactNode;
9
23
  }
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["Component", "children", "getRootRef", "after", "disabled"];
4
+ var _excluded = ["Component", "children", "getRootRef", "before", "after", "disabled"];
5
5
  import { createScopedElement } from "../../lib/jsxRuntime";
6
6
  import * as React from "react";
7
7
  import { getClassName } from "../../helpers/getClassName";
@@ -14,6 +14,7 @@ export var FormField = function FormField(_ref) {
14
14
  Component = _ref$Component === void 0 ? "div" : _ref$Component,
15
15
  children = _ref.children,
16
16
  getRootRef = _ref.getRootRef,
17
+ before = _ref.before,
17
18
  after = _ref.after,
18
19
  disabled = _ref.disabled,
19
20
  restProps = _objectWithoutProperties(_ref, _excluded);
@@ -45,7 +46,10 @@ export var FormField = function FormField(_ref) {
45
46
  onMouseEnter: handleMouseEnter,
46
47
  onMouseLeave: handleMouseLeave,
47
48
  vkuiClass: classNames(getClassName("FormField", platform), "FormField--sizeY-".concat(sizeY), disabled && "FormField--disabled")
48
- }), children, hasReactNode(after) && createScopedElement("div", {
49
+ }), hasReactNode(before) && createScopedElement("div", {
50
+ role: "presentation",
51
+ vkuiClass: "FormField__before"
52
+ }, before), children, hasReactNode(after) && createScopedElement("div", {
49
53
  role: "presentation",
50
54
  vkuiClass: "FormField__after"
51
55
  }, after), createScopedElement("div", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FormField/FormField.tsx"],"names":["React","getClassName","classNames","usePlatform","hasReactNode","useAdaptivity","FormField","Component","children","getRootRef","after","disabled","restProps","platform","sizeY","useState","hover","setHover","handleMouseEnter","e","stopPropagation","handleMouseLeave"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AAEA,SAASC,YAAT;AACA,SAASC,aAAT;AAkBA,OAAO,IAAMC,SAAsC,GAAG,SAAzCA,SAAyC,OAO7B;AAAA,4BANvBC,SAMuB;AAAA,MANvBA,SAMuB,+BANX,KAMW;AAAA,MALvBC,QAKuB,QALvBA,QAKuB;AAAA,MAJvBC,UAIuB,QAJvBA,UAIuB;AAAA,MAHvBC,KAGuB,QAHvBA,KAGuB;AAAA,MAFvBC,QAEuB,QAFvBA,QAEuB;AAAA,MADpBC,SACoB;;AACvB,MAAMC,QAAQ,GAAGV,WAAW,EAA5B;;AACA,uBAAkBE,aAAa,EAA/B;AAAA,MAAQS,KAAR,kBAAQA,KAAR;;AACA,wBAA0Bd,KAAK,CAACe,QAAN,CAAe,KAAf,CAA1B;AAAA;AAAA,MAAOC,KAAP;AAAA,MAAcC,QAAd;;AAEA,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,CAAD,EAAmB;AAC1CA,IAAAA,CAAC,CAACC,eAAF;AACAH,IAAAA,QAAQ,CAAC,IAAD,CAAR;AACD,GAHD;;AAKA,MAAMI,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACF,CAAD,EAAmB;AAC1CA,IAAAA,CAAC,CAACC,eAAF;AACAH,IAAAA,QAAQ,CAAC,KAAD,CAAR;AACD,GAHD;;AAKA,SACE,oBAAC,SAAD;AACE,IAAA,IAAI,EAAC;AADP,KAEML,SAFN;AAGE,IAAA,GAAG,EAAEH,UAHP;AAIE,IAAA,YAAY,EAAES,gBAJhB;AAKE,IAAA,YAAY,EAAEG,gBALhB;AAME,IAAA,SAAS,EAAEnB,UAAU,CACnBD,YAAY,CAAC,WAAD,EAAcY,QAAd,CADO,6BAECC,KAFD,GAGnBH,QAAQ,IAAI,qBAHO;AANvB,MAYGH,QAZH,EAaGJ,YAAY,CAACM,KAAD,CAAZ,IACC;AAAK,IAAA,IAAI,EAAC,cAAV;AAAyB,IAAA,SAAS,EAAC;AAAnC,KACGA,KADH,CAdJ,EAkBE;AACE,IAAA,IAAI,EAAC,cADP;AAEE,IAAA,SAAS,EAAER,UAAU,CACnB,mBADmB,EAEnB,CAACS,QAAD,IAAaK,KAAb,IAAsB,0BAFH;AAFvB,IAlBF,CADF;AA4BD,CAlDM","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { HasComponent, HasRootRef } from \"../../types\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport \"./FormField.css\";\n\nexport interface FormFieldProps {\n /**\n * Иконка 12|16|20|24|28 или `IconButton`.\n */\n after?: React.ReactNode;\n}\n\ninterface FormFieldOwnProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent,\n FormFieldProps {\n disabled?: boolean;\n}\n\nexport const FormField: React.FC<FormFieldOwnProps> = ({\n Component = \"div\",\n children,\n getRootRef,\n after,\n disabled,\n ...restProps\n}: FormFieldOwnProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n const [hover, setHover] = React.useState(false);\n\n const handleMouseEnter = (e: MouseEvent) => {\n e.stopPropagation();\n setHover(true);\n };\n\n const handleMouseLeave = (e: MouseEvent) => {\n e.stopPropagation();\n setHover(false);\n };\n\n return (\n <Component\n role=\"presentation\"\n {...restProps}\n ref={getRootRef}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n vkuiClass={classNames(\n getClassName(\"FormField\", platform),\n `FormField--sizeY-${sizeY}`,\n disabled && \"FormField--disabled\"\n )}\n >\n {children}\n {hasReactNode(after) && (\n <div role=\"presentation\" vkuiClass=\"FormField__after\">\n {after}\n </div>\n )}\n <div\n role=\"presentation\"\n vkuiClass={classNames(\n \"FormField__border\",\n !disabled && hover && \"FormField__border--hover\"\n )}\n />\n </Component>\n );\n};\n"],"file":"FormField.js"}
1
+ {"version":3,"sources":["../../../src/components/FormField/FormField.tsx"],"names":["React","getClassName","classNames","usePlatform","hasReactNode","useAdaptivity","FormField","Component","children","getRootRef","before","after","disabled","restProps","platform","sizeY","useState","hover","setHover","handleMouseEnter","e","stopPropagation","handleMouseLeave"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AAEA,SAASC,YAAT;AACA,SAASC,aAAT;AAgCA,OAAO,IAAMC,SAAsC,GAAG,SAAzCA,SAAyC,OAQ7B;AAAA,4BAPvBC,SAOuB;AAAA,MAPvBA,SAOuB,+BAPX,KAOW;AAAA,MANvBC,QAMuB,QANvBA,QAMuB;AAAA,MALvBC,UAKuB,QALvBA,UAKuB;AAAA,MAJvBC,MAIuB,QAJvBA,MAIuB;AAAA,MAHvBC,KAGuB,QAHvBA,KAGuB;AAAA,MAFvBC,QAEuB,QAFvBA,QAEuB;AAAA,MADpBC,SACoB;;AACvB,MAAMC,QAAQ,GAAGX,WAAW,EAA5B;;AACA,uBAAkBE,aAAa,EAA/B;AAAA,MAAQU,KAAR,kBAAQA,KAAR;;AACA,wBAA0Bf,KAAK,CAACgB,QAAN,CAAe,KAAf,CAA1B;AAAA;AAAA,MAAOC,KAAP;AAAA,MAAcC,QAAd;;AAEA,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,CAAD,EAAmB;AAC1CA,IAAAA,CAAC,CAACC,eAAF;AACAH,IAAAA,QAAQ,CAAC,IAAD,CAAR;AACD,GAHD;;AAKA,MAAMI,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACF,CAAD,EAAmB;AAC1CA,IAAAA,CAAC,CAACC,eAAF;AACAH,IAAAA,QAAQ,CAAC,KAAD,CAAR;AACD,GAHD;;AAKA,SACE,oBAAC,SAAD;AACE,IAAA,IAAI,EAAC;AADP,KAEML,SAFN;AAGE,IAAA,GAAG,EAAEJ,UAHP;AAIE,IAAA,YAAY,EAAEU,gBAJhB;AAKE,IAAA,YAAY,EAAEG,gBALhB;AAME,IAAA,SAAS,EAAEpB,UAAU,CACnBD,YAAY,CAAC,WAAD,EAAca,QAAd,CADO,6BAECC,KAFD,GAGnBH,QAAQ,IAAI,qBAHO;AANvB,MAYGR,YAAY,CAACM,MAAD,CAAZ,IACC;AAAK,IAAA,IAAI,EAAC,cAAV;AAAyB,IAAA,SAAS,EAAC;AAAnC,KACGA,MADH,CAbJ,EAiBGF,QAjBH,EAkBGJ,YAAY,CAACO,KAAD,CAAZ,IACC;AAAK,IAAA,IAAI,EAAC,cAAV;AAAyB,IAAA,SAAS,EAAC;AAAnC,KACGA,KADH,CAnBJ,EAuBE;AACE,IAAA,IAAI,EAAC,cADP;AAEE,IAAA,SAAS,EAAET,UAAU,CACnB,mBADmB,EAEnB,CAACU,QAAD,IAAaK,KAAb,IAAsB,0BAFH;AAFvB,IAvBF,CADF;AAiCD,CAxDM","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { HasComponent, HasRootRef } from \"../../types\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport \"./FormField.css\";\n\nexport interface FormFieldProps {\n /**\n * Добавляет иконку слева.\n *\n * Рекомендации:\n *\n * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.\n * - Используйте [IconButton](#/IconButton), если вам нужна кликабельная иконка.\n */\n before?: React.ReactNode;\n /**\n * Добавляет иконку справа.\n *\n * Рекомендации:\n *\n * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.\n * - Используйте [IconButton](#/IconButton), если вам нужна кликабельная иконка.\n */\n after?: React.ReactNode;\n}\n\ninterface FormFieldOwnProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent,\n FormFieldProps {\n disabled?: boolean;\n}\n\nexport const FormField: React.FC<FormFieldOwnProps> = ({\n Component = \"div\",\n children,\n getRootRef,\n before,\n after,\n disabled,\n ...restProps\n}: FormFieldOwnProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n const [hover, setHover] = React.useState(false);\n\n const handleMouseEnter = (e: MouseEvent) => {\n e.stopPropagation();\n setHover(true);\n };\n\n const handleMouseLeave = (e: MouseEvent) => {\n e.stopPropagation();\n setHover(false);\n };\n\n return (\n <Component\n role=\"presentation\"\n {...restProps}\n ref={getRootRef}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n vkuiClass={classNames(\n getClassName(\"FormField\", platform),\n `FormField--sizeY-${sizeY}`,\n disabled && \"FormField--disabled\"\n )}\n >\n {hasReactNode(before) && (\n <div role=\"presentation\" vkuiClass=\"FormField__before\">\n {before}\n </div>\n )}\n {children}\n {hasReactNode(after) && (\n <div role=\"presentation\" vkuiClass=\"FormField__after\">\n {after}\n </div>\n )}\n <div\n role=\"presentation\"\n vkuiClass={classNames(\n \"FormField__border\",\n !disabled && hover && \"FormField__border--hover\"\n )}\n />\n </Component>\n );\n};\n"],"file":"FormField.js"}
@@ -18,6 +18,15 @@ import { classNames } from "../../lib/classNames";
18
18
  function now() {
19
19
  return performance && performance.now ? performance.now() : Date.now();
20
20
  }
21
+ /**
22
+ * Округляем el.scrollLeft
23
+ * https://github.com/VKCOM/VKUI/pull/2445
24
+ */
25
+
26
+
27
+ var roundUpElementScrollLeft = function roundUpElementScrollLeft(el) {
28
+ return Math.ceil(el.scrollLeft);
29
+ };
21
30
  /**
22
31
  * Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll
23
32
  * Константа взята из полифила (468), на дизайн-ревью уточнили до 250
@@ -47,7 +56,7 @@ function doScroll(_ref) {
47
56
 
48
57
 
49
58
  var maxLeft = initialScrollWidth - scrollElement.offsetWidth;
50
- var startLeft = scrollElement.scrollLeft;
59
+ var startLeft = roundUpElementScrollLeft(scrollElement);
51
60
  var endLeft = getScrollPosition(startLeft);
52
61
  onScrollStart();
53
62
 
@@ -70,7 +79,7 @@ function doScroll(_ref) {
70
79
  var currentLeft = startLeft + (endLeft - startLeft) * value;
71
80
  scrollElement.scrollLeft = Math.ceil(currentLeft);
72
81
 
73
- if (scrollElement.scrollLeft !== Math.max(0, endLeft)) {
82
+ if (roundUpElementScrollLeft(scrollElement) !== Math.max(0, endLeft)) {
74
83
  requestAnimationFrame(scroll);
75
84
  return;
76
85
  }
@@ -152,7 +161,7 @@ var HorizontalScrollComponent = function HorizontalScrollComponent(_ref2) {
152
161
  if (showArrows && hasMouse && scrollerRef.current && !isCustomScrollingRef.current) {
153
162
  var scrollElement = scrollerRef.current;
154
163
  setCanScrollLeft(scrollElement.scrollLeft > 0);
155
- setCanScrollRight(scrollElement.scrollLeft + scrollElement.offsetWidth < scrollElement.scrollWidth);
164
+ setCanScrollRight(roundUpElementScrollLeft(scrollElement) + scrollElement.offsetWidth < scrollElement.scrollWidth);
156
165
  }
157
166
  }, [hasMouse, scrollerRef, showArrows]);
158
167
  var scrollEvent = useEventListener("scroll", onscroll);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"names":["React","withAdaptivity","HorizontalScrollArrow","easeInOutSine","useEventListener","useExternRef","classNames","now","performance","Date","SCROLL_ONE_FRAME_TIME","doScroll","scrollElement","getScrollPosition","animationQueue","onScrollToRightBorder","onScrollEnd","onScrollStart","initialScrollWidth","scrollAnimationDuration","maxLeft","offsetWidth","startLeft","scrollLeft","endLeft","startTime","scroll","time","elapsed","Math","min","value","currentLeft","ceil","max","requestAnimationFrame","shift","length","HorizontalScrollComponent","children","getScrollToLeft","getScrollToRight","showArrows","hasMouse","getRef","restProps","useState","canScrollLeft","setCanScrollLeft","canScrollRight","setCanScrollRight","isCustomScrollingRef","useRef","scrollerRef","scrollTo","useCallback","current","push","firstElementChild","scrollWidth","scrollToLeft","i","scrollToRight","onscroll","scrollEvent","useEffect","add","HorizontalScroll"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport HorizontalScrollArrow from \"./HorizontalScrollArrow\";\nimport { easeInOutSine } from \"../../lib/fx\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { HasRef } from \"../../types\";\nimport { classNames } from \"../../lib/classNames\";\nimport \"./HorizontalScroll.css\";\n\ninterface ScrollContext {\n scrollElement: HTMLElement | null;\n scrollAnimationDuration: number;\n animationQueue: VoidFunction[];\n getScrollPosition: (currentPosition: number) => number;\n onScrollToRightBorder: VoidFunction;\n onScrollEnd: VoidFunction;\n onScrollStart: VoidFunction;\n /**\n * Начальная ширина прокрутки.\n * В некоторых случаях может отличаться от текущей ширины прокрутки из-за transforms: translate\n */\n initialScrollWidth: number;\n}\n\nexport type ScrollPositionHandler = (currentPosition: number) => number;\n\nexport interface HorizontalScrollProps\n extends React.HTMLAttributes<HTMLDivElement>,\n AdaptivityProps,\n HasRef<HTMLDivElement> {\n /**\n * Функция для расчета величины прокрутки при клике на левую стрелку.\n */\n getScrollToLeft?: ScrollPositionHandler;\n /**\n * Функция для расчета величины прокрутки при клике на правую стрелку.\n */\n getScrollToRight?: ScrollPositionHandler;\n showArrows?: boolean | \"always\";\n scrollAnimationDuration?: number;\n}\n\n/**\n * timing method\n */\nfunction now() {\n return performance && performance.now ? performance.now() : Date.now();\n}\n\n/**\n * Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll\n * Константа взята из полифила (468), на дизайн-ревью уточнили до 250\n * @var {number} SCROLL_ONE_FRAME_TIME время анимации скролла\n */\nconst SCROLL_ONE_FRAME_TIME = 250;\n\nfunction doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue,\n onScrollToRightBorder,\n onScrollEnd,\n onScrollStart,\n initialScrollWidth,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n}: ScrollContext) {\n if (!scrollElement || !getScrollPosition) {\n return;\n }\n\n /**\n * максимальное значение сдвига влево\n */\n const maxLeft = initialScrollWidth - scrollElement.offsetWidth;\n\n let startLeft = scrollElement.scrollLeft;\n let endLeft = getScrollPosition(startLeft);\n\n onScrollStart();\n\n if (endLeft >= maxLeft) {\n onScrollToRightBorder();\n endLeft = maxLeft;\n }\n\n const startTime = now();\n\n (function scroll() {\n if (!scrollElement) {\n onScrollEnd();\n return;\n }\n\n const time = now();\n const elapsed = Math.min((time - startTime) / scrollAnimationDuration, 1);\n\n const value = easeInOutSine(elapsed);\n\n const currentLeft = startLeft + (endLeft - startLeft) * value;\n scrollElement.scrollLeft = Math.ceil(currentLeft);\n\n if (scrollElement.scrollLeft !== Math.max(0, endLeft)) {\n requestAnimationFrame(scroll);\n return;\n }\n\n onScrollEnd();\n animationQueue.shift();\n if (animationQueue.length > 0) {\n animationQueue[0]();\n }\n })();\n}\n\nconst HorizontalScrollComponent: React.FC<HorizontalScrollProps> = ({\n children,\n getScrollToLeft,\n getScrollToRight,\n showArrows = true,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n hasMouse,\n getRef,\n ...restProps\n}) => {\n const [canScrollLeft, setCanScrollLeft] = React.useState(false);\n const [canScrollRight, setCanScrollRight] = React.useState(false);\n\n const isCustomScrollingRef = React.useRef(false);\n\n const scrollerRef = useExternRef(getRef);\n\n const animationQueue = React.useRef<VoidFunction[]>([]);\n\n const scrollTo = React.useCallback(\n (getScrollPosition: ScrollPositionHandler) => {\n const scrollElement = scrollerRef.current;\n\n animationQueue.current.push(() =>\n doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue: animationQueue.current,\n onScrollToRightBorder: () => setCanScrollRight(false),\n onScrollEnd: () => (isCustomScrollingRef.current = false),\n onScrollStart: () => (isCustomScrollingRef.current = true),\n initialScrollWidth:\n scrollElement?.firstElementChild?.scrollWidth || 0,\n scrollAnimationDuration,\n })\n );\n if (animationQueue.current.length === 1) {\n animationQueue.current[0]();\n }\n },\n [scrollAnimationDuration, scrollerRef]\n );\n\n const scrollToLeft = React.useCallback(() => {\n const getScrollPosition =\n getScrollToLeft ?? ((i: number) => i - scrollerRef.current!.offsetWidth);\n scrollTo(getScrollPosition);\n }, [getScrollToLeft, scrollTo, scrollerRef]);\n\n const scrollToRight = React.useCallback(() => {\n const getScrollPosition =\n getScrollToRight ?? ((i: number) => i + scrollerRef.current!.offsetWidth);\n scrollTo(getScrollPosition);\n }, [getScrollToRight, scrollTo, scrollerRef]);\n\n const onscroll = React.useCallback(() => {\n if (\n showArrows &&\n hasMouse &&\n scrollerRef.current &&\n !isCustomScrollingRef.current\n ) {\n const scrollElement = scrollerRef.current;\n\n setCanScrollLeft(scrollElement.scrollLeft > 0);\n setCanScrollRight(\n scrollElement.scrollLeft + scrollElement.offsetWidth <\n scrollElement.scrollWidth\n );\n }\n }, [hasMouse, scrollerRef, showArrows]);\n\n const scrollEvent = useEventListener(\"scroll\", onscroll);\n React.useEffect(() => {\n if (scrollerRef.current) {\n scrollEvent.add(scrollerRef.current);\n }\n }, [scrollEvent, scrollerRef]);\n React.useEffect(onscroll, [scrollerRef, children, onscroll]);\n\n return (\n <div\n {...restProps}\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(\"HorizontalScroll\", {\n [\"HorizontalScroll--withConstArrows\"]: showArrows === \"always\",\n })}\n >\n {showArrows && hasMouse && canScrollLeft && (\n <HorizontalScrollArrow direction=\"left\" onClick={scrollToLeft} />\n )}\n {showArrows && hasMouse && canScrollRight && (\n <HorizontalScrollArrow direction=\"right\" onClick={scrollToRight} />\n )}\n <div vkuiClass=\"HorizontalScroll__in\" ref={scrollerRef}>\n <div vkuiClass=\"HorizontalScroll__in-wrapper\">{children}</div>\n </div>\n </div>\n );\n};\n\nexport const HorizontalScroll = withAdaptivity(HorizontalScrollComponent, {\n hasMouse: true,\n});\n"],"file":"HorizontalScroll.js"}
1
+ {"version":3,"sources":["../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"names":["React","withAdaptivity","HorizontalScrollArrow","easeInOutSine","useEventListener","useExternRef","classNames","now","performance","Date","roundUpElementScrollLeft","el","Math","ceil","scrollLeft","SCROLL_ONE_FRAME_TIME","doScroll","scrollElement","getScrollPosition","animationQueue","onScrollToRightBorder","onScrollEnd","onScrollStart","initialScrollWidth","scrollAnimationDuration","maxLeft","offsetWidth","startLeft","endLeft","startTime","scroll","time","elapsed","min","value","currentLeft","max","requestAnimationFrame","shift","length","HorizontalScrollComponent","children","getScrollToLeft","getScrollToRight","showArrows","hasMouse","getRef","restProps","useState","canScrollLeft","setCanScrollLeft","canScrollRight","setCanScrollRight","isCustomScrollingRef","useRef","scrollerRef","scrollTo","useCallback","current","push","firstElementChild","scrollWidth","scrollToLeft","i","scrollToRight","onscroll","scrollEvent","useEffect","add","HorizontalScroll"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport HorizontalScrollArrow from \"./HorizontalScrollArrow\";\nimport { easeInOutSine } from \"../../lib/fx\";\nimport { useEventListener } from \"../../hooks/useEventListener\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { HasRef } from \"../../types\";\nimport { classNames } from \"../../lib/classNames\";\nimport \"./HorizontalScroll.css\";\n\ninterface ScrollContext {\n scrollElement: HTMLElement | null;\n scrollAnimationDuration: number;\n animationQueue: VoidFunction[];\n getScrollPosition: (currentPosition: number) => number;\n onScrollToRightBorder: VoidFunction;\n onScrollEnd: VoidFunction;\n onScrollStart: VoidFunction;\n /**\n * Начальная ширина прокрутки.\n * В некоторых случаях может отличаться от текущей ширины прокрутки из-за transforms: translate\n */\n initialScrollWidth: number;\n}\n\nexport type ScrollPositionHandler = (currentPosition: number) => number;\n\nexport interface HorizontalScrollProps\n extends React.HTMLAttributes<HTMLDivElement>,\n AdaptivityProps,\n HasRef<HTMLDivElement> {\n /**\n * Функция для расчета величины прокрутки при клике на левую стрелку.\n */\n getScrollToLeft?: ScrollPositionHandler;\n /**\n * Функция для расчета величины прокрутки при клике на правую стрелку.\n */\n getScrollToRight?: ScrollPositionHandler;\n showArrows?: boolean | \"always\";\n scrollAnimationDuration?: number;\n}\n\n/**\n * timing method\n */\nfunction now() {\n return performance && performance.now ? performance.now() : Date.now();\n}\n\n/**\n * Округляем el.scrollLeft\n * https://github.com/VKCOM/VKUI/pull/2445\n */\nconst roundUpElementScrollLeft = (el: HTMLElement) => Math.ceil(el.scrollLeft);\n\n/**\n * Код анимации скрола, на основе полифила: https://github.com/iamdustan/smoothscroll\n * Константа взята из полифила (468), на дизайн-ревью уточнили до 250\n * @var {number} SCROLL_ONE_FRAME_TIME время анимации скролла\n */\nconst SCROLL_ONE_FRAME_TIME = 250;\n\nfunction doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue,\n onScrollToRightBorder,\n onScrollEnd,\n onScrollStart,\n initialScrollWidth,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n}: ScrollContext) {\n if (!scrollElement || !getScrollPosition) {\n return;\n }\n\n /**\n * максимальное значение сдвига влево\n */\n const maxLeft = initialScrollWidth - scrollElement.offsetWidth;\n\n let startLeft = roundUpElementScrollLeft(scrollElement);\n let endLeft = getScrollPosition(startLeft);\n\n onScrollStart();\n\n if (endLeft >= maxLeft) {\n onScrollToRightBorder();\n endLeft = maxLeft;\n }\n\n const startTime = now();\n\n (function scroll() {\n if (!scrollElement) {\n onScrollEnd();\n return;\n }\n\n const time = now();\n const elapsed = Math.min((time - startTime) / scrollAnimationDuration, 1);\n\n const value = easeInOutSine(elapsed);\n\n const currentLeft = startLeft + (endLeft - startLeft) * value;\n scrollElement.scrollLeft = Math.ceil(currentLeft);\n\n if (roundUpElementScrollLeft(scrollElement) !== Math.max(0, endLeft)) {\n requestAnimationFrame(scroll);\n return;\n }\n\n onScrollEnd();\n animationQueue.shift();\n if (animationQueue.length > 0) {\n animationQueue[0]();\n }\n })();\n}\n\nconst HorizontalScrollComponent: React.FC<HorizontalScrollProps> = ({\n children,\n getScrollToLeft,\n getScrollToRight,\n showArrows = true,\n scrollAnimationDuration = SCROLL_ONE_FRAME_TIME,\n hasMouse,\n getRef,\n ...restProps\n}) => {\n const [canScrollLeft, setCanScrollLeft] = React.useState(false);\n const [canScrollRight, setCanScrollRight] = React.useState(false);\n\n const isCustomScrollingRef = React.useRef(false);\n\n const scrollerRef = useExternRef(getRef);\n\n const animationQueue = React.useRef<VoidFunction[]>([]);\n\n const scrollTo = React.useCallback(\n (getScrollPosition: ScrollPositionHandler) => {\n const scrollElement = scrollerRef.current;\n\n animationQueue.current.push(() =>\n doScroll({\n scrollElement,\n getScrollPosition,\n animationQueue: animationQueue.current,\n onScrollToRightBorder: () => setCanScrollRight(false),\n onScrollEnd: () => (isCustomScrollingRef.current = false),\n onScrollStart: () => (isCustomScrollingRef.current = true),\n initialScrollWidth:\n scrollElement?.firstElementChild?.scrollWidth || 0,\n scrollAnimationDuration,\n })\n );\n if (animationQueue.current.length === 1) {\n animationQueue.current[0]();\n }\n },\n [scrollAnimationDuration, scrollerRef]\n );\n\n const scrollToLeft = React.useCallback(() => {\n const getScrollPosition =\n getScrollToLeft ?? ((i: number) => i - scrollerRef.current!.offsetWidth);\n scrollTo(getScrollPosition);\n }, [getScrollToLeft, scrollTo, scrollerRef]);\n\n const scrollToRight = React.useCallback(() => {\n const getScrollPosition =\n getScrollToRight ?? ((i: number) => i + scrollerRef.current!.offsetWidth);\n scrollTo(getScrollPosition);\n }, [getScrollToRight, scrollTo, scrollerRef]);\n\n const onscroll = React.useCallback(() => {\n if (\n showArrows &&\n hasMouse &&\n scrollerRef.current &&\n !isCustomScrollingRef.current\n ) {\n const scrollElement = scrollerRef.current;\n\n setCanScrollLeft(scrollElement.scrollLeft > 0);\n setCanScrollRight(\n roundUpElementScrollLeft(scrollElement) + scrollElement.offsetWidth <\n scrollElement.scrollWidth\n );\n }\n }, [hasMouse, scrollerRef, showArrows]);\n\n const scrollEvent = useEventListener(\"scroll\", onscroll);\n React.useEffect(() => {\n if (scrollerRef.current) {\n scrollEvent.add(scrollerRef.current);\n }\n }, [scrollEvent, scrollerRef]);\n React.useEffect(onscroll, [scrollerRef, children, onscroll]);\n\n return (\n <div\n {...restProps}\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(\"HorizontalScroll\", {\n [\"HorizontalScroll--withConstArrows\"]: showArrows === \"always\",\n })}\n >\n {showArrows && hasMouse && canScrollLeft && (\n <HorizontalScrollArrow direction=\"left\" onClick={scrollToLeft} />\n )}\n {showArrows && hasMouse && canScrollRight && (\n <HorizontalScrollArrow direction=\"right\" onClick={scrollToRight} />\n )}\n <div vkuiClass=\"HorizontalScroll__in\" ref={scrollerRef}>\n <div vkuiClass=\"HorizontalScroll__in-wrapper\">{children}</div>\n </div>\n </div>\n );\n};\n\nexport const HorizontalScroll = withAdaptivity(HorizontalScrollComponent, {\n hasMouse: true,\n});\n"],"file":"HorizontalScroll.js"}
@@ -5,4 +5,4 @@ import { AdaptivityProps } from "../../hoc/withAdaptivity";
5
5
  import "./Input.css";
6
6
  export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement>, HasRef<HTMLInputElement>, HasRootRef<HTMLDivElement>, HasAlign, AdaptivityProps, FormFieldProps {
7
7
  }
8
- export declare const Input: React.FC<Pick<InputProps, "max" | "required" | "disabled" | "hidden" | "dir" | "form" | "slot" | "style" | "title" | "pattern" | "color" | "size" | "after" | "multiple" | "height" | "translate" | "width" | "prefix" | "src" | "children" | "className" | "id" | "lang" | "min" | "name" | "type" | "role" | "tabIndex" | "crossOrigin" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "list" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "value" | "alt" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "autoComplete" | "accept" | "capture" | "checked" | "maxLength" | "minLength" | "readOnly" | "step" | "align" | "getRootRef" | "getRef"> & import("../AdaptivityProvider/AdaptivityContext").SizeProps>;
8
+ export declare const Input: React.FC<Pick<InputProps, "max" | "required" | "disabled" | "hidden" | "dir" | "form" | "slot" | "style" | "title" | "pattern" | "color" | "size" | "after" | "multiple" | "height" | "translate" | "width" | "prefix" | "src" | "children" | "className" | "id" | "lang" | "min" | "name" | "type" | "role" | "tabIndex" | "crossOrigin" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "list" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "placeholder" | "spellCheck" | "radioGroup" | "about" | "datatype" | "inlist" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "value" | "alt" | "autoFocus" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "autoComplete" | "accept" | "capture" | "checked" | "maxLength" | "minLength" | "readOnly" | "step" | "align" | "getRootRef" | "getRef" | "before"> & import("../AdaptivityProvider/AdaptivityContext").SizeProps>;
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["type", "align", "getRef", "className", "getRootRef", "sizeY", "style", "after"];
3
+ var _excluded = ["type", "align", "getRef", "className", "getRootRef", "sizeY", "style", "before", "after"];
4
4
  import { createScopedElement } from "../../lib/jsxRuntime";
5
5
  import { getClassName } from "../../helpers/getClassName";
6
6
  import { classNames } from "../../lib/classNames";
@@ -17,6 +17,7 @@ var InputComponent = function InputComponent(_ref) {
17
17
  getRootRef = _ref.getRootRef,
18
18
  sizeY = _ref.sizeY,
19
19
  style = _ref.style,
20
+ before = _ref.before,
20
21
  after = _ref.after,
21
22
  restProps = _objectWithoutProperties(_ref, _excluded);
22
23
 
@@ -26,6 +27,7 @@ var InputComponent = function InputComponent(_ref) {
26
27
  style: style,
27
28
  className: className,
28
29
  getRootRef: getRootRef,
30
+ before: before,
29
31
  after: after,
30
32
  disabled: restProps.disabled
31
33
  }, createScopedElement("input", _extends({}, restProps, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/Input/Input.tsx"],"names":["getClassName","classNames","FormField","withAdaptivity","usePlatform","InputComponent","type","align","getRef","className","getRootRef","sizeY","style","after","restProps","platform","disabled","Input"],"mappings":";;;;AACA,SAASA,YAAT;AACA,SAASC,UAAT;AACA,SAASC,SAAT;AAEA,SAASC,cAAT;AACA,SAASC,WAAT;;AAWA,IAAMC,cAAmD,GAAG,SAAtDA,cAAsD,OAU1C;AAAA,uBAThBC,IASgB;AAAA,MAThBA,IASgB,0BATT,MASS;AAAA,MARhBC,KAQgB,QARhBA,KAQgB;AAAA,MAPhBC,MAOgB,QAPhBA,MAOgB;AAAA,MANhBC,SAMgB,QANhBA,SAMgB;AAAA,MALhBC,UAKgB,QALhBA,UAKgB;AAAA,MAJhBC,KAIgB,QAJhBA,KAIgB;AAAA,MAHhBC,KAGgB,QAHhBA,KAGgB;AAAA,MAFhBC,KAEgB,QAFhBA,KAEgB;AAAA,MADbC,SACa;;AAChB,MAAMC,QAAQ,GAAGX,WAAW,EAA5B;AACA,SACE,oBAAC,SAAD;AACE,IAAA,SAAS,EAAEH,UAAU,CACnBD,YAAY,CAAC,OAAD,EAAUe,QAAV,CADO,EAEnB,CAAC,CAACR,KAAF,qBAAqBA,KAArB,CAFmB,yBAGHI,KAHG,EADvB;AAME,IAAA,KAAK,EAAEC,KANT;AAOE,IAAA,SAAS,EAAEH,SAPb;AAQE,IAAA,UAAU,EAAEC,UARd;AASE,IAAA,KAAK,EAAEG,KATT;AAUE,IAAA,QAAQ,EAAEC,SAAS,CAACE;AAVtB,KAYE,0CAAWF,SAAX;AAAsB,IAAA,IAAI,EAAER,IAA5B;AAAkC,IAAA,SAAS,EAAC,WAA5C;AAAwD,IAAA,GAAG,EAAEE;AAA7D,KAZF,CADF;AAgBD,CA5BD;;AA8BA,OAAO,IAAMS,KAAK,GAAGd,cAAc,CAACE,cAAD,EAAiB;AAClDM,EAAAA,KAAK,EAAE;AAD2C,CAAjB,CAA5B","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { FormField, FormFieldProps } from \"../FormField/FormField\";\nimport { HasAlign, HasRef, HasRootRef } from \"../../types\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport \"./Input.css\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n HasRef<HTMLInputElement>,\n HasRootRef<HTMLDivElement>,\n HasAlign,\n AdaptivityProps,\n FormFieldProps {}\n\nconst InputComponent: React.FunctionComponent<InputProps> = ({\n type = \"text\",\n align,\n getRef,\n className,\n getRootRef,\n sizeY,\n style,\n after,\n ...restProps\n}: InputProps) => {\n const platform = usePlatform();\n return (\n <FormField\n vkuiClass={classNames(\n getClassName(\"Input\", platform),\n !!align && `Input--${align}`,\n `Input--sizeY-${sizeY}`\n )}\n style={style}\n className={className}\n getRootRef={getRootRef}\n after={after}\n disabled={restProps.disabled}\n >\n <input {...restProps} type={type} vkuiClass=\"Input__el\" ref={getRef} />\n </FormField>\n );\n};\n\nexport const Input = withAdaptivity(InputComponent, {\n sizeY: true,\n});\n"],"file":"Input.js"}
1
+ {"version":3,"sources":["../../../src/components/Input/Input.tsx"],"names":["getClassName","classNames","FormField","withAdaptivity","usePlatform","InputComponent","type","align","getRef","className","getRootRef","sizeY","style","before","after","restProps","platform","disabled","Input"],"mappings":";;;;AACA,SAASA,YAAT;AACA,SAASC,UAAT;AACA,SAASC,SAAT;AAEA,SAASC,cAAT;AACA,SAASC,WAAT;;AAWA,IAAMC,cAAmD,GAAG,SAAtDA,cAAsD,OAW1C;AAAA,uBAVhBC,IAUgB;AAAA,MAVhBA,IAUgB,0BAVT,MAUS;AAAA,MAThBC,KASgB,QAThBA,KASgB;AAAA,MARhBC,MAQgB,QARhBA,MAQgB;AAAA,MAPhBC,SAOgB,QAPhBA,SAOgB;AAAA,MANhBC,UAMgB,QANhBA,UAMgB;AAAA,MALhBC,KAKgB,QALhBA,KAKgB;AAAA,MAJhBC,KAIgB,QAJhBA,KAIgB;AAAA,MAHhBC,MAGgB,QAHhBA,MAGgB;AAAA,MAFhBC,KAEgB,QAFhBA,KAEgB;AAAA,MADbC,SACa;;AAChB,MAAMC,QAAQ,GAAGZ,WAAW,EAA5B;AACA,SACE,oBAAC,SAAD;AACE,IAAA,SAAS,EAAEH,UAAU,CACnBD,YAAY,CAAC,OAAD,EAAUgB,QAAV,CADO,EAEnB,CAAC,CAACT,KAAF,qBAAqBA,KAArB,CAFmB,yBAGHI,KAHG,EADvB;AAME,IAAA,KAAK,EAAEC,KANT;AAOE,IAAA,SAAS,EAAEH,SAPb;AAQE,IAAA,UAAU,EAAEC,UARd;AASE,IAAA,MAAM,EAAEG,MATV;AAUE,IAAA,KAAK,EAAEC,KAVT;AAWE,IAAA,QAAQ,EAAEC,SAAS,CAACE;AAXtB,KAaE,0CAAWF,SAAX;AAAsB,IAAA,IAAI,EAAET,IAA5B;AAAkC,IAAA,SAAS,EAAC,WAA5C;AAAwD,IAAA,GAAG,EAAEE;AAA7D,KAbF,CADF;AAiBD,CA9BD;;AAgCA,OAAO,IAAMU,KAAK,GAAGf,cAAc,CAACE,cAAD,EAAiB;AAClDM,EAAAA,KAAK,EAAE;AAD2C,CAAjB,CAA5B","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { FormField, FormFieldProps } from \"../FormField/FormField\";\nimport { HasAlign, HasRef, HasRootRef } from \"../../types\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport \"./Input.css\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n HasRef<HTMLInputElement>,\n HasRootRef<HTMLDivElement>,\n HasAlign,\n AdaptivityProps,\n FormFieldProps {}\n\nconst InputComponent: React.FunctionComponent<InputProps> = ({\n type = \"text\",\n align,\n getRef,\n className,\n getRootRef,\n sizeY,\n style,\n before,\n after,\n ...restProps\n}: InputProps) => {\n const platform = usePlatform();\n return (\n <FormField\n vkuiClass={classNames(\n getClassName(\"Input\", platform),\n !!align && `Input--${align}`,\n `Input--sizeY-${sizeY}`\n )}\n style={style}\n className={className}\n getRootRef={getRootRef}\n before={before}\n after={after}\n disabled={restProps.disabled}\n >\n <input {...restProps} type={type} vkuiClass=\"Input__el\" ref={getRef} />\n </FormField>\n );\n};\n\nexport const Input = withAdaptivity(InputComponent, {\n sizeY: true,\n});\n"],"file":"Input.js"}
@@ -6,12 +6,13 @@ import * as React from "react";
6
6
  import { getClassName } from "../../helpers/getClassName";
7
7
  import { classNames } from "../../lib/classNames";
8
8
  import { withPlatform } from "../../hoc/withPlatform";
9
- import { withAdaptivity, ViewHeight, ViewWidth } from "../../hoc/withAdaptivity";
9
+ import { withAdaptivity } from "../../hoc/withAdaptivity";
10
10
  import ModalRootContext, { useModalRegistry } from "../ModalRoot/ModalRootContext";
11
11
  import { ModalType } from "../ModalRoot/types";
12
12
  import { getNavId } from "../../lib/getNavId";
13
13
  import { warnOnce } from "../../lib/warnOnce";
14
14
  import { ModalCardBase } from "../ModalCardBase/ModalCardBase";
15
+ import { useAdaptivityIsDesktop } from "../../hooks/useAdaptivity";
15
16
  var warn = warnOnce("ModalCard");
16
17
 
17
18
  var ModalCard = function ModalCard(props) {
@@ -29,7 +30,7 @@ var ModalCard = function ModalCard(props) {
29
30
  nav = props.nav,
30
31
  restProps = _objectWithoutProperties(props, _excluded);
31
32
 
32
- var isDesktop = viewWidth >= ViewWidth.SMALL_TABLET && (hasMouse || viewHeight >= ViewHeight.MEDIUM);
33
+ var isDesktop = useAdaptivityIsDesktop();
33
34
  var modalContext = React.useContext(ModalRootContext);
34
35
 
35
36
  var _useModalRegistry = useModalRegistry(getNavId(props, warn), ModalType.CARD),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ModalCard/ModalCard.tsx"],"names":["React","getClassName","classNames","withPlatform","withAdaptivity","ViewHeight","ViewWidth","ModalRootContext","useModalRegistry","ModalType","getNavId","warnOnce","ModalCardBase","warn","ModalCard","props","icon","header","subheader","children","actions","actionsLayout","onClose","platform","viewWidth","viewHeight","hasMouse","nav","restProps","isDesktop","SMALL_TABLET","MEDIUM","modalContext","useContext","CARD","refs","innerElement","defaultProps"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AAEA,SACEC,cADF,EAEEC,UAFF,EAGEC,SAHF;AAKA,OAAOC,gBAAP,IACEC,gBADF;AAGA,SAASC,SAAT;AACA,SAASC,QAAT;AACA,SAASC,QAAT;AACA,SACEC,aADF;AAgBA,IAAMC,IAAI,GAAGF,QAAQ,CAAC,WAAD,CAArB;;AAEA,IAAMG,SAAgE,GAAG,SAAnEA,SAAmE,CACvEC,KADuE,EAEpE;AACH,MACEC,IADF,GAcID,KAdJ,CACEC,IADF;AAAA,MAEEC,MAFF,GAcIF,KAdJ,CAEEE,MAFF;AAAA,MAGEC,SAHF,GAcIH,KAdJ,CAGEG,SAHF;AAAA,MAIEC,QAJF,GAcIJ,KAdJ,CAIEI,QAJF;AAAA,MAKEC,OALF,GAcIL,KAdJ,CAKEK,OALF;AAAA,MAMEC,aANF,GAcIN,KAdJ,CAMEM,aANF;AAAA,MAOEC,OAPF,GAcIP,KAdJ,CAOEO,OAPF;AAAA,MAQEC,QARF,GAcIR,KAdJ,CAQEQ,QARF;AAAA,MASEC,SATF,GAcIT,KAdJ,CASES,SATF;AAAA,MAUEC,UAVF,GAcIV,KAdJ,CAUEU,UAVF;AAAA,MAWEC,QAXF,GAcIX,KAdJ,CAWEW,QAXF;AAAA,MAYEC,GAZF,GAcIZ,KAdJ,CAYEY,GAZF;AAAA,MAaKC,SAbL,4BAcIb,KAdJ;;AAgBA,MAAMc,SAAS,GACbL,SAAS,IAAIlB,SAAS,CAACwB,YAAvB,KACCJ,QAAQ,IAAID,UAAU,IAAIpB,UAAU,CAAC0B,MADtC,CADF;AAIA,MAAMC,YAAY,GAAGhC,KAAK,CAACiC,UAAN,CAAiB1B,gBAAjB,CAArB;;AACA,0BAAiBC,gBAAgB,CAACE,QAAQ,CAACK,KAAD,EAAQF,IAAR,CAAT,EAAwBJ,SAAS,CAACyB,IAAlC,CAAjC;AAAA,MAAQC,IAAR,qBAAQA,IAAR;;AAEA,SACE,wCACMP,SADN;AAEE;AACA,IAAA,SAAS,EAAE1B,UAAU,CAACD,YAAY,CAAC,WAAD,EAAcsB,QAAd,CAAb,EAAsC;AACzD,4BAAsBM;AADmC,KAAtC;AAHvB,MAOE,oBAAC,aAAD;AACE,IAAA,SAAS,EAAC,eADZ;AAEE,IAAA,UAAU,EAAEM,IAAI,CAACC,YAFnB;AAGE,IAAA,IAAI,EAAEpB,IAHR;AAIE,IAAA,MAAM,EAAEC,MAJV;AAKE,IAAA,SAAS,EAAEC,SALb;AAME,IAAA,OAAO,EAAEE,OANX;AAOE,IAAA,aAAa,EAAEC,aAPjB;AAQE,IAAA,OAAO,EAAEC,OAAO,IAAIU,YAAY,CAACV;AARnC,KAUGH,QAVH,CAPF,CADF;AAsBD,CAhDD;;AAkDAL,SAAS,CAACuB,YAAV,GAAyB;AACvBhB,EAAAA,aAAa,EAAE;AADQ,CAAzB,C,CAIA;;AACA,eAAejB,cAAc,CAACD,YAAY,CAACW,SAAD,CAAb,EAA0B;AACrDU,EAAAA,SAAS,EAAE,IAD0C;AAErDC,EAAAA,UAAU,EAAE,IAFyC;AAGrDC,EAAAA,QAAQ,EAAE;AAH2C,CAA1B,CAA7B","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { withPlatform } from \"../../hoc/withPlatform\";\nimport { HasPlatform } from \"../../types\";\nimport {\n withAdaptivity,\n ViewHeight,\n ViewWidth,\n} from \"../../hoc/withAdaptivity\";\nimport ModalRootContext, {\n useModalRegistry,\n} from \"../ModalRoot/ModalRootContext\";\nimport { ModalType } from \"../ModalRoot/types\";\nimport { getNavId, NavIdProps } from \"../../lib/getNavId\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n ModalCardBase,\n ModalCardBaseProps,\n} from \"../ModalCardBase/ModalCardBase\";\nimport {\n AdaptivityContextInterface,\n AdaptivityProps,\n} from \"../AdaptivityProvider/AdaptivityContext\";\nimport \"./ModalCard.css\";\n\nexport interface ModalCardProps\n extends HasPlatform,\n AdaptivityProps,\n NavIdProps,\n ModalCardBaseProps {}\n\nconst warn = warnOnce(\"ModalCard\");\n\nconst ModalCard: React.FC<ModalCardProps & AdaptivityContextInterface> = (\n props\n) => {\n const {\n icon,\n header,\n subheader,\n children,\n actions,\n actionsLayout,\n onClose,\n platform,\n viewWidth,\n viewHeight,\n hasMouse,\n nav,\n ...restProps\n } = props;\n\n const isDesktop =\n viewWidth >= ViewWidth.SMALL_TABLET &&\n (hasMouse || viewHeight >= ViewHeight.MEDIUM);\n\n const modalContext = React.useContext(ModalRootContext);\n const { refs } = useModalRegistry(getNavId(props, warn), ModalType.CARD);\n\n return (\n <div\n {...restProps}\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(getClassName(\"ModalCard\", platform), {\n \"ModalCard--desktop\": isDesktop,\n })}\n >\n <ModalCardBase\n vkuiClass=\"ModalCard__in\"\n getRootRef={refs.innerElement}\n icon={icon}\n header={header}\n subheader={subheader}\n actions={actions}\n actionsLayout={actionsLayout}\n onClose={onClose || modalContext.onClose}\n >\n {children}\n </ModalCardBase>\n </div>\n );\n};\n\nModalCard.defaultProps = {\n actionsLayout: \"horizontal\",\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(withPlatform(ModalCard), {\n viewWidth: true,\n viewHeight: true,\n hasMouse: true,\n});\n"],"file":"ModalCard.js"}
1
+ {"version":3,"sources":["../../../src/components/ModalCard/ModalCard.tsx"],"names":["React","getClassName","classNames","withPlatform","withAdaptivity","ModalRootContext","useModalRegistry","ModalType","getNavId","warnOnce","ModalCardBase","useAdaptivityIsDesktop","warn","ModalCard","props","icon","header","subheader","children","actions","actionsLayout","onClose","platform","viewWidth","viewHeight","hasMouse","nav","restProps","isDesktop","modalContext","useContext","CARD","refs","innerElement","defaultProps"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AAEA,SAASC,cAAT;AACA,OAAOC,gBAAP,IACEC,gBADF;AAGA,SAASC,SAAT;AACA,SAASC,QAAT;AACA,SAASC,QAAT;AACA,SACEC,aADF;AAQA,SAASC,sBAAT;AASA,IAAMC,IAAI,GAAGH,QAAQ,CAAC,WAAD,CAArB;;AAEA,IAAMI,SAAgE,GAAG,SAAnEA,SAAmE,CACvEC,KADuE,EAEpE;AACH,MACEC,IADF,GAcID,KAdJ,CACEC,IADF;AAAA,MAEEC,MAFF,GAcIF,KAdJ,CAEEE,MAFF;AAAA,MAGEC,SAHF,GAcIH,KAdJ,CAGEG,SAHF;AAAA,MAIEC,QAJF,GAcIJ,KAdJ,CAIEI,QAJF;AAAA,MAKEC,OALF,GAcIL,KAdJ,CAKEK,OALF;AAAA,MAMEC,aANF,GAcIN,KAdJ,CAMEM,aANF;AAAA,MAOEC,OAPF,GAcIP,KAdJ,CAOEO,OAPF;AAAA,MAQEC,QARF,GAcIR,KAdJ,CAQEQ,QARF;AAAA,MASEC,SATF,GAcIT,KAdJ,CASES,SATF;AAAA,MAUEC,UAVF,GAcIV,KAdJ,CAUEU,UAVF;AAAA,MAWEC,QAXF,GAcIX,KAdJ,CAWEW,QAXF;AAAA,MAYEC,GAZF,GAcIZ,KAdJ,CAYEY,GAZF;AAAA,MAaKC,SAbL,4BAcIb,KAdJ;;AAgBA,MAAMc,SAAS,GAAGjB,sBAAsB,EAAxC;AAEA,MAAMkB,YAAY,GAAG7B,KAAK,CAAC8B,UAAN,CAAiBzB,gBAAjB,CAArB;;AACA,0BAAiBC,gBAAgB,CAACE,QAAQ,CAACM,KAAD,EAAQF,IAAR,CAAT,EAAwBL,SAAS,CAACwB,IAAlC,CAAjC;AAAA,MAAQC,IAAR,qBAAQA,IAAR;;AAEA,SACE,wCACML,SADN;AAEE;AACA,IAAA,SAAS,EAAEzB,UAAU,CAACD,YAAY,CAAC,WAAD,EAAcqB,QAAd,CAAb,EAAsC;AACzD,4BAAsBM;AADmC,KAAtC;AAHvB,MAOE,oBAAC,aAAD;AACE,IAAA,SAAS,EAAC,eADZ;AAEE,IAAA,UAAU,EAAEI,IAAI,CAACC,YAFnB;AAGE,IAAA,IAAI,EAAElB,IAHR;AAIE,IAAA,MAAM,EAAEC,MAJV;AAKE,IAAA,SAAS,EAAEC,SALb;AAME,IAAA,OAAO,EAAEE,OANX;AAOE,IAAA,aAAa,EAAEC,aAPjB;AAQE,IAAA,OAAO,EAAEC,OAAO,IAAIQ,YAAY,CAACR;AARnC,KAUGH,QAVH,CAPF,CADF;AAsBD,CA9CD;;AAgDAL,SAAS,CAACqB,YAAV,GAAyB;AACvBd,EAAAA,aAAa,EAAE;AADQ,CAAzB,C,CAIA;;AACA,eAAehB,cAAc,CAACD,YAAY,CAACU,SAAD,CAAb,EAA0B;AACrDU,EAAAA,SAAS,EAAE,IAD0C;AAErDC,EAAAA,UAAU,EAAE,IAFyC;AAGrDC,EAAAA,QAAQ,EAAE;AAH2C,CAA1B,CAA7B","sourcesContent":["import * as React from \"react\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { classNames } from \"../../lib/classNames\";\nimport { withPlatform } from \"../../hoc/withPlatform\";\nimport { HasPlatform } from \"../../types\";\nimport { withAdaptivity } from \"../../hoc/withAdaptivity\";\nimport ModalRootContext, {\n useModalRegistry,\n} from \"../ModalRoot/ModalRootContext\";\nimport { ModalType } from \"../ModalRoot/types\";\nimport { getNavId, NavIdProps } from \"../../lib/getNavId\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport {\n ModalCardBase,\n ModalCardBaseProps,\n} from \"../ModalCardBase/ModalCardBase\";\nimport {\n AdaptivityContextInterface,\n AdaptivityProps,\n} from \"../AdaptivityProvider/AdaptivityContext\";\nimport { useAdaptivityIsDesktop } from \"../../hooks/useAdaptivity\";\nimport \"./ModalCard.css\";\n\nexport interface ModalCardProps\n extends HasPlatform,\n AdaptivityProps,\n NavIdProps,\n ModalCardBaseProps {}\n\nconst warn = warnOnce(\"ModalCard\");\n\nconst ModalCard: React.FC<ModalCardProps & AdaptivityContextInterface> = (\n props\n) => {\n const {\n icon,\n header,\n subheader,\n children,\n actions,\n actionsLayout,\n onClose,\n platform,\n viewWidth,\n viewHeight,\n hasMouse,\n nav,\n ...restProps\n } = props;\n\n const isDesktop = useAdaptivityIsDesktop();\n\n const modalContext = React.useContext(ModalRootContext);\n const { refs } = useModalRegistry(getNavId(props, warn), ModalType.CARD);\n\n return (\n <div\n {...restProps}\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(getClassName(\"ModalCard\", platform), {\n \"ModalCard--desktop\": isDesktop,\n })}\n >\n <ModalCardBase\n vkuiClass=\"ModalCard__in\"\n getRootRef={refs.innerElement}\n icon={icon}\n header={header}\n subheader={subheader}\n actions={actions}\n actionsLayout={actionsLayout}\n onClose={onClose || modalContext.onClose}\n >\n {children}\n </ModalCardBase>\n </div>\n );\n};\n\nModalCard.defaultProps = {\n actionsLayout: \"horizontal\",\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default withAdaptivity(withPlatform(ModalCard), {\n viewWidth: true,\n viewHeight: true,\n hasMouse: true,\n});\n"],"file":"ModalCard.js"}
@@ -8,12 +8,13 @@ import Headline from "../Typography/Headline/Headline";
8
8
  import { classNames } from "../../lib/classNames";
9
9
  import { getClassName } from "../../helpers/getClassName";
10
10
  import { usePlatform } from "../../hooks/usePlatform";
11
- import { ViewHeight, ViewWidth, withAdaptivity } from "../../hoc/withAdaptivity";
11
+ import { ViewWidth, withAdaptivity } from "../../hoc/withAdaptivity";
12
12
  import { PanelHeaderButton } from "../PanelHeaderButton/PanelHeaderButton";
13
- import { ANDROID, IOS } from "../../lib/platform";
13
+ import { ANDROID, IOS, Platform } from "../../lib/platform";
14
14
  import ModalDismissButton from "../ModalDismissButton/ModalDismissButton";
15
15
  import { Icon24Dismiss } from "@vkontakte/icons";
16
16
  import { useKeyboard } from "../../hooks/useKeyboard";
17
+ import { useAdaptivityIsDesktop } from "../../hooks/useAdaptivity";
17
18
  export var ModalCardBase = withAdaptivity(function (_ref) {
18
19
  var getRootRef = _ref.getRootRef,
19
20
  icon = _ref.icon,
@@ -31,9 +32,9 @@ export var ModalCardBase = withAdaptivity(function (_ref) {
31
32
  restProps = _objectWithoutProperties(_ref, _excluded);
32
33
 
33
34
  var platform = usePlatform();
34
- var isDesktop = viewWidth >= ViewWidth.SMALL_TABLET && (hasMouse || viewHeight >= ViewHeight.MEDIUM);
35
+ var isDesktop = useAdaptivityIsDesktop();
35
36
  var isSoftwareKeyboardOpened = useKeyboard().isOpened;
36
- var canShowCloseBtn = viewWidth >= ViewWidth.SMALL_TABLET;
37
+ var canShowCloseBtn = viewWidth >= ViewWidth.SMALL_TABLET || platform === Platform.VKCOM;
37
38
  var canShowCloseBtnIos = platform === IOS && !canShowCloseBtn;
38
39
  return createScopedElement("div", _extends({}, restProps, {
39
40
  // eslint-disable-next-line vkui/no-object-expression-in-arguments
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/ModalCardBase/ModalCardBase.tsx"],"names":["hasReactNode","Title","Headline","classNames","getClassName","usePlatform","ViewHeight","ViewWidth","withAdaptivity","PanelHeaderButton","ANDROID","IOS","ModalDismissButton","Icon24Dismiss","useKeyboard","ModalCardBase","getRootRef","icon","header","subheader","children","actions","actionsLayout","viewWidth","hasMouse","viewHeight","onClose","dismissLabel","restProps","platform","isDesktop","SMALL_TABLET","MEDIUM","isSoftwareKeyboardOpened","isOpened","canShowCloseBtn","canShowCloseBtnIos"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { Title } from \"../Typography/Title/Title\";\nimport Headline from \"../Typography/Headline/Headline\";\nimport { classNames } from \"../../lib/classNames\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport {\n ViewHeight,\n ViewWidth,\n withAdaptivity,\n} from \"../../hoc/withAdaptivity\";\nimport { HasRootRef } from \"../../types\";\nimport { PanelHeaderButton } from \"../PanelHeaderButton/PanelHeaderButton\";\nimport { ANDROID, IOS } from \"../../lib/platform\";\nimport ModalDismissButton from \"../ModalDismissButton/ModalDismissButton\";\nimport { Icon24Dismiss } from \"@vkontakte/icons\";\nimport { useKeyboard } from \"../../hooks/useKeyboard\";\nimport { AdaptivityContextInterface } from \"../AdaptivityProvider/AdaptivityContext\";\nimport \"./ModalCardBase.css\";\n\nexport interface ModalCardBaseProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * Иконка.\n *\n * Может быть компонентом иконки, например, `<Icon56MoneyTransferOutline />`, или `<Avatar size={72} src=\"\" />`\n */\n icon?: React.ReactNode;\n\n /**\n * Заголовок карточки\n */\n header?: React.ReactNode;\n\n /**\n * Подзаголовок\n */\n subheader?: React.ReactNode;\n\n /**\n * Кнопки-действия.\n *\n * Рекомендуется использовать `<Button size=\"l\" mode=\"primary\" />` или `<Button size=\"l\" mode=\"secondary\" />`\n */\n actions?: React.ReactNode;\n\n /**\n * Тип отображения кнопок: вертикальный или горизонтальный\n */\n actionsLayout?: \"vertical\" | \"horizontal\";\n onClose?: VoidFunction;\n\n /**\n * `aria-label` для кнопки закрытия. Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n}\n\nexport const ModalCardBase = withAdaptivity<\n ModalCardBaseProps & AdaptivityContextInterface\n>(\n ({\n getRootRef,\n icon,\n header,\n subheader,\n children,\n actions,\n actionsLayout,\n viewWidth,\n hasMouse,\n viewHeight,\n onClose,\n dismissLabel = \"Скрыть\",\n ...restProps\n }) => {\n const platform = usePlatform();\n const isDesktop =\n viewWidth >= ViewWidth.SMALL_TABLET &&\n (hasMouse || viewHeight >= ViewHeight.MEDIUM);\n const isSoftwareKeyboardOpened = useKeyboard().isOpened;\n\n const canShowCloseBtn = viewWidth >= ViewWidth.SMALL_TABLET;\n const canShowCloseBtnIos = platform === IOS && !canShowCloseBtn;\n\n return (\n <div\n {...restProps}\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(getClassName(\"ModalCardBase\", platform), {\n \"ModalCardBase--desktop\": isDesktop,\n })}\n ref={getRootRef}\n >\n <div\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(\"ModalCardBase__container\", {\n \"ModalCardBase__container--softwareKeyboardOpened\":\n isSoftwareKeyboardOpened,\n })}\n >\n {hasReactNode(icon) && (\n <div vkuiClass=\"ModalCardBase__icon\">{icon}</div>\n )}\n {hasReactNode(header) && (\n <Title\n level=\"2\"\n weight={platform === ANDROID ? \"2\" : \"1\"}\n vkuiClass=\"ModalCardBase__header\"\n >\n {header}\n </Title>\n )}\n {hasReactNode(subheader) && (\n <Headline weight=\"regular\" vkuiClass=\"ModalCardBase__subheader\">\n {subheader}\n </Headline>\n )}\n\n {children}\n\n {hasReactNode(actions) && (\n <div\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(\"ModalCardBase__actions\", {\n \"ModalCardBase__actions--v\": actionsLayout === \"vertical\",\n })}\n >\n {actions}\n </div>\n )}\n\n {canShowCloseBtn && <ModalDismissButton onClick={onClose} />}\n {canShowCloseBtnIos && (\n <PanelHeaderButton\n aria-label={dismissLabel}\n vkuiClass=\"ModalCardBase__dismiss\"\n onClick={onClose}\n >\n <Icon24Dismiss />\n </PanelHeaderButton>\n )}\n </div>\n </div>\n );\n },\n {\n viewWidth: true,\n viewHeight: true,\n hasMouse: true,\n }\n);\n"],"file":"ModalCardBase.js"}
1
+ {"version":3,"sources":["../../../src/components/ModalCardBase/ModalCardBase.tsx"],"names":["hasReactNode","Title","Headline","classNames","getClassName","usePlatform","ViewWidth","withAdaptivity","PanelHeaderButton","ANDROID","IOS","Platform","ModalDismissButton","Icon24Dismiss","useKeyboard","useAdaptivityIsDesktop","ModalCardBase","getRootRef","icon","header","subheader","children","actions","actionsLayout","viewWidth","hasMouse","viewHeight","onClose","dismissLabel","restProps","platform","isDesktop","isSoftwareKeyboardOpened","isOpened","canShowCloseBtn","SMALL_TABLET","VKCOM","canShowCloseBtnIos"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { Title } from \"../Typography/Title/Title\";\nimport Headline from \"../Typography/Headline/Headline\";\nimport { classNames } from \"../../lib/classNames\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { ViewWidth, withAdaptivity } from \"../../hoc/withAdaptivity\";\nimport { HasRootRef } from \"../../types\";\nimport { PanelHeaderButton } from \"../PanelHeaderButton/PanelHeaderButton\";\nimport { ANDROID, IOS, Platform } from \"../../lib/platform\";\nimport ModalDismissButton from \"../ModalDismissButton/ModalDismissButton\";\nimport { Icon24Dismiss } from \"@vkontakte/icons\";\nimport { useKeyboard } from \"../../hooks/useKeyboard\";\nimport { AdaptivityContextInterface } from \"../AdaptivityProvider/AdaptivityContext\";\nimport { useAdaptivityIsDesktop } from \"../../hooks/useAdaptivity\";\nimport \"./ModalCardBase.css\";\n\nexport interface ModalCardBaseProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n /**\n * Иконка.\n *\n * Может быть компонентом иконки, например, `<Icon56MoneyTransferOutline />`, или `<Avatar size={72} src=\"\" />`\n */\n icon?: React.ReactNode;\n\n /**\n * Заголовок карточки\n */\n header?: React.ReactNode;\n\n /**\n * Подзаголовок\n */\n subheader?: React.ReactNode;\n\n /**\n * Кнопки-действия.\n *\n * Рекомендуется использовать `<Button size=\"l\" mode=\"primary\" />` или `<Button size=\"l\" mode=\"secondary\" />`\n */\n actions?: React.ReactNode;\n\n /**\n * Тип отображения кнопок: вертикальный или горизонтальный\n */\n actionsLayout?: \"vertical\" | \"horizontal\";\n onClose?: VoidFunction;\n\n /**\n * `aria-label` для кнопки закрытия. Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n}\n\nexport const ModalCardBase = withAdaptivity<\n ModalCardBaseProps & AdaptivityContextInterface\n>(\n ({\n getRootRef,\n icon,\n header,\n subheader,\n children,\n actions,\n actionsLayout,\n viewWidth,\n hasMouse,\n viewHeight,\n onClose,\n dismissLabel = \"Скрыть\",\n ...restProps\n }) => {\n const platform = usePlatform();\n const isDesktop = useAdaptivityIsDesktop();\n const isSoftwareKeyboardOpened = useKeyboard().isOpened;\n\n const canShowCloseBtn =\n viewWidth >= ViewWidth.SMALL_TABLET || platform === Platform.VKCOM;\n const canShowCloseBtnIos = platform === IOS && !canShowCloseBtn;\n\n return (\n <div\n {...restProps}\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(getClassName(\"ModalCardBase\", platform), {\n \"ModalCardBase--desktop\": isDesktop,\n })}\n ref={getRootRef}\n >\n <div\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(\"ModalCardBase__container\", {\n \"ModalCardBase__container--softwareKeyboardOpened\":\n isSoftwareKeyboardOpened,\n })}\n >\n {hasReactNode(icon) && (\n <div vkuiClass=\"ModalCardBase__icon\">{icon}</div>\n )}\n {hasReactNode(header) && (\n <Title\n level=\"2\"\n weight={platform === ANDROID ? \"2\" : \"1\"}\n vkuiClass=\"ModalCardBase__header\"\n >\n {header}\n </Title>\n )}\n {hasReactNode(subheader) && (\n <Headline weight=\"regular\" vkuiClass=\"ModalCardBase__subheader\">\n {subheader}\n </Headline>\n )}\n\n {children}\n\n {hasReactNode(actions) && (\n <div\n // eslint-disable-next-line vkui/no-object-expression-in-arguments\n vkuiClass={classNames(\"ModalCardBase__actions\", {\n \"ModalCardBase__actions--v\": actionsLayout === \"vertical\",\n })}\n >\n {actions}\n </div>\n )}\n\n {canShowCloseBtn && <ModalDismissButton onClick={onClose} />}\n {canShowCloseBtnIos && (\n <PanelHeaderButton\n aria-label={dismissLabel}\n vkuiClass=\"ModalCardBase__dismiss\"\n onClick={onClose}\n >\n <Icon24Dismiss />\n </PanelHeaderButton>\n )}\n </div>\n </div>\n );\n },\n {\n viewWidth: true,\n viewHeight: true,\n hasMouse: true,\n }\n);\n"],"file":"ModalCardBase.js"}