@vkontakte/vkui 6.0.1 → 6.0.3

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 (668) hide show
  1. package/dist/cjs/components/Accordion/Accordion.d.ts +1 -1
  2. package/dist/cjs/components/Accordion/Accordion.d.ts.map +1 -1
  3. package/dist/cjs/components/Accordion/Accordion.js.map +1 -1
  4. package/dist/cjs/components/ActionSheet/ActionSheet.d.ts +1 -1
  5. package/dist/cjs/components/ActionSheet/ActionSheet.d.ts.map +1 -1
  6. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  7. package/dist/cjs/components/AppRoot/ScrollContext.d.ts +4 -4
  8. package/dist/cjs/components/AppRoot/ScrollContext.d.ts.map +1 -1
  9. package/dist/cjs/components/AppRoot/ScrollContext.js.map +1 -1
  10. package/dist/cjs/components/Banner/Banner.js +3 -3
  11. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  12. package/dist/cjs/components/BaseGallery/CarouselBase/types.d.ts +1 -1
  13. package/dist/cjs/components/BaseGallery/CarouselBase/types.d.ts.map +1 -1
  14. package/dist/cjs/components/BaseGallery/types.d.ts +4 -4
  15. package/dist/cjs/components/BaseGallery/types.d.ts.map +1 -1
  16. package/dist/cjs/components/BaseGallery/types.js.map +1 -1
  17. package/dist/cjs/components/Calendar/Calendar.d.ts +4 -4
  18. package/dist/cjs/components/Calendar/Calendar.d.ts.map +1 -1
  19. package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
  20. package/dist/cjs/components/CalendarDay/CalendarDay.d.ts +3 -3
  21. package/dist/cjs/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  22. package/dist/cjs/components/CalendarDay/CalendarDay.js.map +1 -1
  23. package/dist/cjs/components/CalendarDays/CalendarDays.d.ts +12 -12
  24. package/dist/cjs/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  25. package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
  26. package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts +3 -3
  27. package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  28. package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
  29. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +3 -3
  30. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  31. package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
  32. package/dist/cjs/components/CalendarTime/CalendarTime.d.ts +3 -3
  33. package/dist/cjs/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  34. package/dist/cjs/components/CalendarTime/CalendarTime.js.map +1 -1
  35. package/dist/cjs/components/Cell/Cell.d.ts +1 -1
  36. package/dist/cjs/components/Cell/Cell.d.ts.map +1 -1
  37. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  38. package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +1 -1
  39. package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
  40. package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -1
  41. package/dist/cjs/components/ChipsInput/useChipsInput.d.ts +4 -1
  42. package/dist/cjs/components/ChipsInput/useChipsInput.d.ts.map +1 -1
  43. package/dist/cjs/components/ChipsInputBase/types.d.ts +3 -3
  44. package/dist/cjs/components/ChipsInputBase/types.d.ts.map +1 -1
  45. package/dist/cjs/components/ChipsInputBase/types.js.map +1 -1
  46. package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +2 -2
  47. package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
  48. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  49. package/dist/cjs/components/ChipsSelect/useChipsSelect.d.ts +4 -1
  50. package/dist/cjs/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
  51. package/dist/cjs/components/Clickable/Clickable.d.ts.map +1 -1
  52. package/dist/cjs/components/Clickable/Clickable.js +10 -1
  53. package/dist/cjs/components/Clickable/Clickable.js.map +1 -1
  54. package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts +1 -1
  55. package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
  56. package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
  57. package/dist/cjs/components/CustomScrollView/useTrackerVisibility.d.ts +5 -5
  58. package/dist/cjs/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
  59. package/dist/cjs/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
  60. package/dist/cjs/components/CustomSelect/CustomSelectClearButton.d.ts +1 -1
  61. package/dist/cjs/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
  62. package/dist/cjs/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
  63. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
  64. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  65. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  66. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.d.ts.map +1 -1
  67. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +2 -1
  68. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  69. package/dist/cjs/components/DateInput/DateInput.d.ts +2 -2
  70. package/dist/cjs/components/DateInput/DateInput.d.ts.map +1 -1
  71. package/dist/cjs/components/DateInput/DateInput.js +6 -2
  72. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  73. package/dist/cjs/components/DatePicker/DatePicker.d.ts.map +1 -1
  74. package/dist/cjs/components/DatePicker/DatePicker.js +2 -1
  75. package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
  76. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  77. package/dist/cjs/components/File/File.js +3 -1
  78. package/dist/cjs/components/File/File.js.map +1 -1
  79. package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +1 -1
  80. package/dist/cjs/components/FocusTrap/FocusTrap.d.ts.map +1 -1
  81. package/dist/cjs/components/FocusTrap/FocusTrap.js +1 -0
  82. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  83. package/dist/cjs/components/FormStatus/FormStatus.d.ts +1 -1
  84. package/dist/cjs/components/FormStatus/FormStatus.d.ts.map +1 -1
  85. package/dist/cjs/components/FormStatus/FormStatus.js +4 -2
  86. package/dist/cjs/components/FormStatus/FormStatus.js.map +1 -1
  87. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  88. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +2 -0
  89. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  90. package/dist/cjs/components/InputLike/InputLike.d.ts +1 -1
  91. package/dist/cjs/components/InputLike/InputLike.d.ts.map +1 -1
  92. package/dist/cjs/components/InputLike/InputLike.js.map +1 -1
  93. package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js +2 -2
  94. package/dist/cjs/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  95. package/dist/cjs/components/ModalRoot/ModalRootContext.d.ts +1 -1
  96. package/dist/cjs/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
  97. package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
  98. package/dist/cjs/components/ModalRoot/types.d.ts +4 -4
  99. package/dist/cjs/components/ModalRoot/types.d.ts.map +1 -1
  100. package/dist/cjs/components/OnboardingTooltip/OnboardingTooltip.d.ts +1 -1
  101. package/dist/cjs/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
  102. package/dist/cjs/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  103. package/dist/cjs/components/Pagination/Pagination.d.ts +2 -2
  104. package/dist/cjs/components/Pagination/Pagination.d.ts.map +1 -1
  105. package/dist/cjs/components/Pagination/Pagination.js.map +1 -1
  106. package/dist/cjs/components/Pagination/PaginationPage/PaginationPageButton.d.ts.map +1 -1
  107. package/dist/cjs/components/Pagination/PaginationPage/PaginationPageButton.js +0 -2
  108. package/dist/cjs/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
  109. package/dist/cjs/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  110. package/dist/cjs/components/PullToRefresh/PullToRefresh.js +5 -1
  111. package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
  112. package/dist/cjs/components/Root/Root.d.ts +2 -2
  113. package/dist/cjs/components/Root/Root.d.ts.map +1 -1
  114. package/dist/cjs/components/Root/Root.js.map +1 -1
  115. package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
  116. package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +9 -13
  117. package/dist/cjs/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
  118. package/dist/cjs/components/Select/Select.d.ts.map +1 -1
  119. package/dist/cjs/components/Select/Select.js +9 -4
  120. package/dist/cjs/components/Select/Select.js.map +1 -1
  121. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts.map +1 -1
  122. package/dist/cjs/components/SimpleCell/SimpleCell.js +1 -1
  123. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  124. package/dist/cjs/components/Slider/Slider.d.ts +4 -4
  125. package/dist/cjs/components/Slider/Slider.d.ts.map +1 -1
  126. package/dist/cjs/components/Slider/Slider.js.map +1 -1
  127. package/dist/cjs/components/Snackbar/Snackbar.js +2 -2
  128. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  129. package/dist/cjs/components/Snackbar/subcomponents/Basic/Basic.d.ts +2 -1
  130. package/dist/cjs/components/Snackbar/subcomponents/Basic/Basic.d.ts.map +1 -1
  131. package/dist/cjs/components/Snackbar/subcomponents/Basic/Basic.js +2 -2
  132. package/dist/cjs/components/Snackbar/subcomponents/Basic/Basic.js.map +1 -1
  133. package/dist/cjs/components/Textarea/Textarea.d.ts +1 -1
  134. package/dist/cjs/components/Textarea/Textarea.d.ts.map +1 -1
  135. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  136. package/dist/cjs/components/View/View.d.ts +5 -5
  137. package/dist/cjs/components/View/View.d.ts.map +1 -1
  138. package/dist/cjs/components/View/View.js.map +1 -1
  139. package/dist/cjs/components/View/ViewInfinite.d.ts +6 -6
  140. package/dist/cjs/components/View/ViewInfinite.d.ts.map +1 -1
  141. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  142. package/dist/cjs/hooks/useDateInput.d.ts +4 -4
  143. package/dist/cjs/hooks/useDateInput.d.ts.map +1 -1
  144. package/dist/cjs/hooks/useDateInput.js.map +1 -1
  145. package/dist/cjs/hooks/useDraggableWithDomApi/types.d.ts +4 -4
  146. package/dist/cjs/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
  147. package/dist/cjs/hooks/useDraggableWithDomApi/types.js.map +1 -1
  148. package/dist/cjs/hooks/useEnsuredControl.d.ts +2 -2
  149. package/dist/cjs/hooks/useEnsuredControl.d.ts.map +1 -1
  150. package/dist/cjs/hooks/useEnsuredControl.js.map +1 -1
  151. package/dist/cjs/lib/floating/useFloatingWithInteractions/types.d.ts +3 -3
  152. package/dist/cjs/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  153. package/dist/cjs/lib/rafSchd.d.ts +1 -1
  154. package/dist/cjs/lib/rafSchd.d.ts.map +1 -1
  155. package/dist/cjs/lib/rafSchd.js.map +1 -1
  156. package/dist/cjs/lib/react/simulateReactInput.d.ts +3 -3
  157. package/dist/cjs/lib/react/simulateReactInput.d.ts.map +1 -1
  158. package/dist/cjs/lib/react/simulateReactInput.js.map +1 -1
  159. package/dist/cjs/types.d.ts +36 -0
  160. package/dist/cjs/types.d.ts.map +1 -1
  161. package/dist/cjs/types.js.map +1 -1
  162. package/dist/components/Accordion/Accordion.d.ts +1 -1
  163. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  164. package/dist/components/Accordion/Accordion.js.map +1 -1
  165. package/dist/components/ActionSheet/ActionSheet.d.ts +1 -1
  166. package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
  167. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  168. package/dist/components/AppRoot/ScrollContext.d.ts +4 -4
  169. package/dist/components/AppRoot/ScrollContext.d.ts.map +1 -1
  170. package/dist/components/AppRoot/ScrollContext.js.map +1 -1
  171. package/dist/components/Banner/Banner.js +3 -3
  172. package/dist/components/Banner/Banner.js.map +1 -1
  173. package/dist/components/BaseGallery/CarouselBase/types.d.ts +1 -1
  174. package/dist/components/BaseGallery/CarouselBase/types.d.ts.map +1 -1
  175. package/dist/components/BaseGallery/CarouselBase/types.js.map +1 -1
  176. package/dist/components/BaseGallery/types.d.ts +4 -4
  177. package/dist/components/BaseGallery/types.d.ts.map +1 -1
  178. package/dist/components/BaseGallery/types.js.map +1 -1
  179. package/dist/components/Calendar/Calendar.d.ts +4 -4
  180. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  181. package/dist/components/Calendar/Calendar.js.map +1 -1
  182. package/dist/components/CalendarDay/CalendarDay.d.ts +3 -3
  183. package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  184. package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
  185. package/dist/components/CalendarDays/CalendarDays.d.ts +12 -12
  186. package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  187. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  188. package/dist/components/CalendarHeader/CalendarHeader.d.ts +3 -3
  189. package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  190. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
  191. package/dist/components/CalendarRange/CalendarRange.d.ts +3 -3
  192. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  193. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  194. package/dist/components/CalendarTime/CalendarTime.d.ts +3 -3
  195. package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  196. package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
  197. package/dist/components/Cell/Cell.d.ts +1 -1
  198. package/dist/components/Cell/Cell.d.ts.map +1 -1
  199. package/dist/components/Cell/Cell.js.map +1 -1
  200. package/dist/components/Cell/CellDragger/CellDragger.d.ts +1 -1
  201. package/dist/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
  202. package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -1
  203. package/dist/components/ChipsInput/useChipsInput.d.ts +4 -1
  204. package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
  205. package/dist/components/ChipsInputBase/types.d.ts +3 -3
  206. package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
  207. package/dist/components/ChipsInputBase/types.js.map +1 -1
  208. package/dist/components/ChipsSelect/ChipsSelect.d.ts +2 -2
  209. package/dist/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
  210. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  211. package/dist/components/ChipsSelect/useChipsSelect.d.ts +4 -1
  212. package/dist/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
  213. package/dist/components/Clickable/Clickable.d.ts.map +1 -1
  214. package/dist/components/Clickable/Clickable.js +10 -1
  215. package/dist/components/Clickable/Clickable.js.map +1 -1
  216. package/dist/components/CustomScrollView/CustomScrollView.d.ts +1 -1
  217. package/dist/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
  218. package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
  219. package/dist/components/CustomScrollView/useTrackerVisibility.d.ts +5 -5
  220. package/dist/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
  221. package/dist/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
  222. package/dist/components/CustomSelect/CustomSelectClearButton.d.ts +1 -1
  223. package/dist/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
  224. package/dist/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
  225. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
  226. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  227. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  228. package/dist/components/CustomSelectOption/CustomSelectOption.d.ts.map +1 -1
  229. package/dist/components/CustomSelectOption/CustomSelectOption.js +2 -1
  230. package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  231. package/dist/components/DateInput/DateInput.d.ts +2 -2
  232. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  233. package/dist/components/DateInput/DateInput.js +6 -2
  234. package/dist/components/DateInput/DateInput.js.map +1 -1
  235. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
  236. package/dist/components/DatePicker/DatePicker.js +2 -1
  237. package/dist/components/DatePicker/DatePicker.js.map +1 -1
  238. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  239. package/dist/components/File/File.js +3 -1
  240. package/dist/components/File/File.js.map +1 -1
  241. package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
  242. package/dist/components/FocusTrap/FocusTrap.d.ts.map +1 -1
  243. package/dist/components/FocusTrap/FocusTrap.js +1 -0
  244. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  245. package/dist/components/FormStatus/FormStatus.d.ts +1 -1
  246. package/dist/components/FormStatus/FormStatus.d.ts.map +1 -1
  247. package/dist/components/FormStatus/FormStatus.js +4 -2
  248. package/dist/components/FormStatus/FormStatus.js.map +1 -1
  249. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  250. package/dist/components/HorizontalScroll/HorizontalScroll.js +2 -0
  251. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  252. package/dist/components/InputLike/InputLike.d.ts +1 -1
  253. package/dist/components/InputLike/InputLike.d.ts.map +1 -1
  254. package/dist/components/InputLike/InputLike.js.map +1 -1
  255. package/dist/components/ModalPageHeader/ModalPageHeader.js +2 -2
  256. package/dist/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  257. package/dist/components/ModalRoot/ModalRootContext.d.ts +1 -1
  258. package/dist/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
  259. package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
  260. package/dist/components/ModalRoot/types.d.ts +4 -4
  261. package/dist/components/ModalRoot/types.d.ts.map +1 -1
  262. package/dist/components/ModalRoot/types.js.map +1 -1
  263. package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts +1 -1
  264. package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
  265. package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  266. package/dist/components/Pagination/Pagination.d.ts +2 -2
  267. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  268. package/dist/components/Pagination/Pagination.js.map +1 -1
  269. package/dist/components/Pagination/PaginationPage/PaginationPageButton.d.ts.map +1 -1
  270. package/dist/components/Pagination/PaginationPage/PaginationPageButton.js +0 -2
  271. package/dist/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
  272. package/dist/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  273. package/dist/components/PullToRefresh/PullToRefresh.js +5 -1
  274. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  275. package/dist/components/Root/Root.d.ts +2 -2
  276. package/dist/components/Root/Root.d.ts.map +1 -1
  277. package/dist/components/Root/Root.js.map +1 -1
  278. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
  279. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +10 -14
  280. package/dist/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
  281. package/dist/components/Select/Select.d.ts.map +1 -1
  282. package/dist/components/Select/Select.js +9 -4
  283. package/dist/components/Select/Select.js.map +1 -1
  284. package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
  285. package/dist/components/SimpleCell/SimpleCell.js +1 -1
  286. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  287. package/dist/components/Slider/Slider.d.ts +4 -4
  288. package/dist/components/Slider/Slider.d.ts.map +1 -1
  289. package/dist/components/Slider/Slider.js.map +1 -1
  290. package/dist/components/Snackbar/Snackbar.js +2 -2
  291. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  292. package/dist/components/Snackbar/subcomponents/Basic/Basic.d.ts +2 -1
  293. package/dist/components/Snackbar/subcomponents/Basic/Basic.d.ts.map +1 -1
  294. package/dist/components/Snackbar/subcomponents/Basic/Basic.js +2 -2
  295. package/dist/components/Snackbar/subcomponents/Basic/Basic.js.map +1 -1
  296. package/dist/components/Textarea/Textarea.d.ts +1 -1
  297. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  298. package/dist/components/Textarea/Textarea.js.map +1 -1
  299. package/dist/components/View/View.d.ts +5 -5
  300. package/dist/components/View/View.d.ts.map +1 -1
  301. package/dist/components/View/View.js.map +1 -1
  302. package/dist/components/View/ViewInfinite.d.ts +6 -6
  303. package/dist/components/View/ViewInfinite.d.ts.map +1 -1
  304. package/dist/components/View/ViewInfinite.js.map +1 -1
  305. package/dist/components.css +13 -13
  306. package/dist/components.css.map +1 -1
  307. package/dist/components.js.tmp +70 -46
  308. package/dist/cssm/components/Accordion/Accordion.d.ts +1 -1
  309. package/dist/cssm/components/Accordion/Accordion.d.ts.map +1 -1
  310. package/dist/cssm/components/Accordion/Accordion.js.map +1 -1
  311. package/dist/cssm/components/ActionSheet/ActionSheet.d.ts +1 -1
  312. package/dist/cssm/components/ActionSheet/ActionSheet.d.ts.map +1 -1
  313. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  314. package/dist/cssm/components/ActionSheet/ActionSheet.module.css +1 -2
  315. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.module.css +1 -1
  316. package/dist/cssm/components/AppRoot/AppRoot.module.css +1 -0
  317. package/dist/cssm/components/AppRoot/ScrollContext.d.ts +4 -4
  318. package/dist/cssm/components/AppRoot/ScrollContext.d.ts.map +1 -1
  319. package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
  320. package/dist/cssm/components/Banner/Banner.js +3 -3
  321. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  322. package/dist/cssm/components/BaseGallery/CarouselBase/types.d.ts +1 -1
  323. package/dist/cssm/components/BaseGallery/CarouselBase/types.d.ts.map +1 -1
  324. package/dist/cssm/components/BaseGallery/CarouselBase/types.js.map +1 -1
  325. package/dist/cssm/components/BaseGallery/types.d.ts +4 -4
  326. package/dist/cssm/components/BaseGallery/types.d.ts.map +1 -1
  327. package/dist/cssm/components/BaseGallery/types.js.map +1 -1
  328. package/dist/cssm/components/Button/Button.module.css +6 -5
  329. package/dist/cssm/components/Calendar/Calendar.d.ts +4 -4
  330. package/dist/cssm/components/Calendar/Calendar.d.ts.map +1 -1
  331. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  332. package/dist/cssm/components/CalendarDay/CalendarDay.d.ts +3 -3
  333. package/dist/cssm/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  334. package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
  335. package/dist/cssm/components/CalendarDays/CalendarDays.d.ts +12 -12
  336. package/dist/cssm/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  337. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  338. package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts +3 -3
  339. package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  340. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
  341. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +3 -3
  342. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  343. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  344. package/dist/cssm/components/CalendarTime/CalendarTime.d.ts +3 -3
  345. package/dist/cssm/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  346. package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
  347. package/dist/cssm/components/Cell/Cell.d.ts +1 -1
  348. package/dist/cssm/components/Cell/Cell.d.ts.map +1 -1
  349. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  350. package/dist/cssm/components/Cell/CellDragger/CellDragger.d.ts +1 -1
  351. package/dist/cssm/components/Cell/CellDragger/CellDragger.d.ts.map +1 -1
  352. package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -1
  353. package/dist/cssm/components/ChipsInput/useChipsInput.d.ts +4 -1
  354. package/dist/cssm/components/ChipsInput/useChipsInput.d.ts.map +1 -1
  355. package/dist/cssm/components/ChipsInputBase/types.d.ts +3 -3
  356. package/dist/cssm/components/ChipsInputBase/types.d.ts.map +1 -1
  357. package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
  358. package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts +2 -2
  359. package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
  360. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  361. package/dist/cssm/components/ChipsSelect/useChipsSelect.d.ts +4 -1
  362. package/dist/cssm/components/ChipsSelect/useChipsSelect.d.ts.map +1 -1
  363. package/dist/cssm/components/Clickable/Clickable.d.ts.map +1 -1
  364. package/dist/cssm/components/Clickable/Clickable.js +10 -1
  365. package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
  366. package/dist/cssm/components/Clickable/Clickable.module.css +21 -0
  367. package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts +1 -1
  368. package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts.map +1 -1
  369. package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
  370. package/dist/cssm/components/CustomScrollView/useTrackerVisibility.d.ts +5 -5
  371. package/dist/cssm/components/CustomScrollView/useTrackerVisibility.d.ts.map +1 -1
  372. package/dist/cssm/components/CustomScrollView/useTrackerVisibility.js.map +1 -1
  373. package/dist/cssm/components/CustomSelect/CustomSelectClearButton.d.ts +1 -1
  374. package/dist/cssm/components/CustomSelect/CustomSelectClearButton.d.ts.map +1 -1
  375. package/dist/cssm/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
  376. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
  377. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  378. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  379. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.d.ts.map +1 -1
  380. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +2 -1
  381. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  382. package/dist/cssm/components/DateInput/DateInput.d.ts +2 -2
  383. package/dist/cssm/components/DateInput/DateInput.d.ts.map +1 -1
  384. package/dist/cssm/components/DateInput/DateInput.js +4 -2
  385. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  386. package/dist/cssm/components/DatePicker/DatePicker.d.ts.map +1 -1
  387. package/dist/cssm/components/DatePicker/DatePicker.js +2 -1
  388. package/dist/cssm/components/DatePicker/DatePicker.js.map +1 -1
  389. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  390. package/dist/cssm/components/File/File.js +1 -0
  391. package/dist/cssm/components/File/File.js.map +1 -1
  392. package/dist/cssm/components/FocusTrap/FocusTrap.d.ts +1 -1
  393. package/dist/cssm/components/FocusTrap/FocusTrap.d.ts.map +1 -1
  394. package/dist/cssm/components/FocusTrap/FocusTrap.js +1 -0
  395. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  396. package/dist/cssm/components/FormItem/FormItem.module.css +2 -2
  397. package/dist/cssm/components/FormStatus/FormStatus.d.ts +1 -1
  398. package/dist/cssm/components/FormStatus/FormStatus.d.ts.map +1 -1
  399. package/dist/cssm/components/FormStatus/FormStatus.js +2 -1
  400. package/dist/cssm/components/FormStatus/FormStatus.js.map +1 -1
  401. package/dist/cssm/components/HorizontalCell/HorizontalCell.module.css +1 -1
  402. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  403. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +2 -0
  404. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  405. package/dist/cssm/components/InputLike/InputLike.d.ts +1 -1
  406. package/dist/cssm/components/InputLike/InputLike.d.ts.map +1 -1
  407. package/dist/cssm/components/InputLike/InputLike.js.map +1 -1
  408. package/dist/cssm/components/Link/Link.module.css +1 -2
  409. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js +2 -2
  410. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.js.map +1 -1
  411. package/dist/cssm/components/ModalRoot/ModalRootContext.d.ts +1 -1
  412. package/dist/cssm/components/ModalRoot/ModalRootContext.d.ts.map +1 -1
  413. package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
  414. package/dist/cssm/components/ModalRoot/types.d.ts +4 -4
  415. package/dist/cssm/components/ModalRoot/types.d.ts.map +1 -1
  416. package/dist/cssm/components/ModalRoot/types.js.map +1 -1
  417. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.d.ts +1 -1
  418. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
  419. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  420. package/dist/cssm/components/Pagination/Pagination.d.ts +2 -2
  421. package/dist/cssm/components/Pagination/Pagination.d.ts.map +1 -1
  422. package/dist/cssm/components/Pagination/Pagination.js.map +1 -1
  423. package/dist/cssm/components/Pagination/PaginationPage/PaginationPageButton.d.ts.map +1 -1
  424. package/dist/cssm/components/Pagination/PaginationPage/PaginationPageButton.js +0 -2
  425. package/dist/cssm/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
  426. package/dist/cssm/components/Panel/Panel.module.css +8 -21
  427. package/dist/cssm/components/PullToRefresh/PullToRefresh.d.ts.map +1 -1
  428. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +5 -1
  429. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  430. package/dist/cssm/components/Root/Root.d.ts +2 -2
  431. package/dist/cssm/components/Root/Root.d.ts.map +1 -1
  432. package/dist/cssm/components/Root/Root.js.map +1 -1
  433. package/dist/cssm/components/Search/Search.module.css +1 -1
  434. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts.map +1 -1
  435. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js +10 -16
  436. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.js.map +1 -1
  437. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +1 -1
  438. package/dist/cssm/components/Select/Select.d.ts.map +1 -1
  439. package/dist/cssm/components/Select/Select.js +2 -2
  440. package/dist/cssm/components/Select/Select.js.map +1 -1
  441. package/dist/cssm/components/SimpleCell/SimpleCell.d.ts.map +1 -1
  442. package/dist/cssm/components/SimpleCell/SimpleCell.js +1 -1
  443. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  444. package/dist/cssm/components/SimpleCell/SimpleCell.module.css +7 -0
  445. package/dist/cssm/components/Slider/Slider.d.ts +4 -4
  446. package/dist/cssm/components/Slider/Slider.d.ts.map +1 -1
  447. package/dist/cssm/components/Slider/Slider.js.map +1 -1
  448. package/dist/cssm/components/Snackbar/Snackbar.js +2 -2
  449. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  450. package/dist/cssm/components/Snackbar/subcomponents/Basic/Basic.d.ts +2 -1
  451. package/dist/cssm/components/Snackbar/subcomponents/Basic/Basic.d.ts.map +1 -1
  452. package/dist/cssm/components/Snackbar/subcomponents/Basic/Basic.js +2 -2
  453. package/dist/cssm/components/Snackbar/subcomponents/Basic/Basic.js.map +1 -1
  454. package/dist/cssm/components/TabsItem/TabsItem.module.css +0 -8
  455. package/dist/cssm/components/Textarea/Textarea.d.ts +1 -1
  456. package/dist/cssm/components/Textarea/Textarea.d.ts.map +1 -1
  457. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  458. package/dist/cssm/components/View/View.d.ts +5 -5
  459. package/dist/cssm/components/View/View.d.ts.map +1 -1
  460. package/dist/cssm/components/View/View.js.map +1 -1
  461. package/dist/cssm/components/View/ViewInfinite.d.ts +6 -6
  462. package/dist/cssm/components/View/ViewInfinite.d.ts.map +1 -1
  463. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  464. package/dist/cssm/hooks/useDateInput.d.ts +4 -4
  465. package/dist/cssm/hooks/useDateInput.d.ts.map +1 -1
  466. package/dist/cssm/hooks/useDateInput.js.map +1 -1
  467. package/dist/cssm/hooks/useDraggableWithDomApi/types.d.ts +4 -4
  468. package/dist/cssm/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
  469. package/dist/cssm/hooks/useDraggableWithDomApi/types.js.map +1 -1
  470. package/dist/cssm/hooks/useEnsuredControl.d.ts +2 -2
  471. package/dist/cssm/hooks/useEnsuredControl.d.ts.map +1 -1
  472. package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
  473. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.d.ts +3 -3
  474. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  475. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  476. package/dist/cssm/lib/rafSchd.d.ts +1 -1
  477. package/dist/cssm/lib/rafSchd.d.ts.map +1 -1
  478. package/dist/cssm/lib/rafSchd.js.map +1 -1
  479. package/dist/cssm/lib/react/simulateReactInput.d.ts +3 -3
  480. package/dist/cssm/lib/react/simulateReactInput.d.ts.map +1 -1
  481. package/dist/cssm/lib/react/simulateReactInput.js.map +1 -1
  482. package/dist/cssm/types.d.ts +36 -0
  483. package/dist/cssm/types.d.ts.map +1 -1
  484. package/dist/cssm/types.js.map +1 -1
  485. package/dist/hooks/useDateInput.d.ts +4 -4
  486. package/dist/hooks/useDateInput.d.ts.map +1 -1
  487. package/dist/hooks/useDateInput.js.map +1 -1
  488. package/dist/hooks/useDraggableWithDomApi/types.d.ts +4 -4
  489. package/dist/hooks/useDraggableWithDomApi/types.d.ts.map +1 -1
  490. package/dist/hooks/useDraggableWithDomApi/types.js.map +1 -1
  491. package/dist/hooks/useEnsuredControl.d.ts +2 -2
  492. package/dist/hooks/useEnsuredControl.d.ts.map +1 -1
  493. package/dist/hooks/useEnsuredControl.js.map +1 -1
  494. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +3 -3
  495. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  496. package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  497. package/dist/lib/rafSchd.d.ts +1 -1
  498. package/dist/lib/rafSchd.d.ts.map +1 -1
  499. package/dist/lib/rafSchd.js.map +1 -1
  500. package/dist/lib/react/simulateReactInput.d.ts +3 -3
  501. package/dist/lib/react/simulateReactInput.d.ts.map +1 -1
  502. package/dist/lib/react/simulateReactInput.js.map +1 -1
  503. package/dist/types.d.ts +36 -0
  504. package/dist/types.d.ts.map +1 -1
  505. package/dist/types.js.map +1 -1
  506. package/dist/vkui.css +13 -13
  507. package/dist/vkui.css.map +1 -1
  508. package/dist/vkui.js.tmp +70 -46
  509. package/package.json +1 -1
  510. package/src/components/Accordion/Accordion.tsx +1 -1
  511. package/src/components/Accordion/__image_snapshots__/accordion-ios-webkit-dark-1-snap.png +2 -2
  512. package/src/components/Accordion/__image_snapshots__/accordion-ios-webkit-light-1-snap.png +2 -2
  513. package/src/components/ActionSheet/ActionSheet.module.css +1 -2
  514. package/src/components/ActionSheet/ActionSheet.tsx +1 -1
  515. package/src/components/ActionSheet/Readme.md +6 -6
  516. package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-dark-1-snap.png +2 -2
  517. package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-light-1-snap.png +2 -2
  518. package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-dark-1-snap.png +2 -2
  519. package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-light-1-snap.png +2 -2
  520. package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-dark-1-snap.png +2 -2
  521. package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-light-1-snap.png +2 -2
  522. package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-android-chromium-dark-1-snap.png +2 -2
  523. package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-android-chromium-light-1-snap.png +2 -2
  524. package/src/components/ActionSheetItem/ActionSheetItem.module.css +1 -1
  525. package/src/components/AppRoot/AppRoot.module.css +1 -0
  526. package/src/components/AppRoot/ScrollContext.tsx +4 -4
  527. package/src/components/Avatar/Avatar.stories.tsx +6 -1
  528. package/src/components/Avatar/Readme.md +1 -1
  529. package/src/components/Banner/Banner.tsx +3 -3
  530. package/src/components/BaseGallery/CarouselBase/types.ts +1 -1
  531. package/src/components/BaseGallery/types.ts +4 -4
  532. package/src/components/Button/Button.module.css +6 -2
  533. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +58 -9
  534. package/src/components/ButtonGroup/Readme.md +64 -10
  535. package/src/components/Calendar/Calendar.stories.tsx +2 -2
  536. package/src/components/Calendar/Calendar.tsx +4 -4
  537. package/src/components/CalendarDay/CalendarDay.tsx +3 -3
  538. package/src/components/CalendarDays/CalendarDays.tsx +12 -12
  539. package/src/components/CalendarHeader/CalendarHeader.tsx +3 -3
  540. package/src/components/CalendarRange/CalendarRange.tsx +3 -3
  541. package/src/components/CalendarTime/CalendarTime.tsx +3 -3
  542. package/src/components/Cell/Cell.tsx +1 -1
  543. package/src/components/Cell/CellDragger/CellDragger.tsx +1 -1
  544. package/src/components/CellButton/__image_snapshots__/cellbutton-ios-webkit-dark-1-snap.png +2 -2
  545. package/src/components/CellButton/__image_snapshots__/cellbutton-ios-webkit-light-1-snap.png +2 -2
  546. package/src/components/ChipsInputBase/types.ts +3 -3
  547. package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
  548. package/src/components/Clickable/Clickable.module.css +14 -0
  549. package/src/components/Clickable/Clickable.tsx +15 -1
  550. package/src/components/CustomScrollView/CustomScrollView.tsx +1 -1
  551. package/src/components/CustomScrollView/useTrackerVisibility.ts +5 -5
  552. package/src/components/CustomSelect/CustomSelect.test.tsx +1 -1
  553. package/src/components/CustomSelect/CustomSelectClearButton.tsx +1 -1
  554. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +1 -1
  555. package/src/components/CustomSelectOption/CustomSelectOption.stories.tsx +10 -1
  556. package/src/components/CustomSelectOption/CustomSelectOption.tsx +5 -1
  557. package/src/components/DateInput/DateInput.tsx +6 -0
  558. package/src/components/DatePicker/DatePicker.tsx +4 -3
  559. package/src/components/DateRangeInput/DateRangeInput.tsx +1 -1
  560. package/src/components/File/File.tsx +1 -1
  561. package/src/components/FocusTrap/FocusTrap.tsx +2 -1
  562. package/src/components/FormItem/FormItem.module.css +1 -1
  563. package/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-android-chromium-dark-1-snap.png +2 -2
  564. package/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-android-chromium-light-1-snap.png +2 -2
  565. package/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-ios-webkit-dark-1-snap.png +2 -2
  566. package/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-ios-webkit-light-1-snap.png +2 -2
  567. package/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-chromium-dark-1-snap.png +2 -2
  568. package/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-chromium-light-1-snap.png +2 -2
  569. package/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-firefox-dark-1-snap.png +2 -2
  570. package/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-firefox-light-1-snap.png +2 -2
  571. package/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-webkit-dark-1-snap.png +2 -2
  572. package/src/components/FormLayoutGroup/__image_snapshots__/formlayoutgroup-vkcom-webkit-light-1-snap.png +2 -2
  573. package/src/components/FormStatus/FormStatus.tsx +8 -1
  574. package/src/components/HorizontalCell/HorizontalCell.e2e-playground.tsx +59 -0
  575. package/src/components/HorizontalCell/HorizontalCell.e2e.tsx +12 -0
  576. package/src/components/HorizontalCell/HorizontalCell.module.css +1 -1
  577. package/src/components/HorizontalCell/__image_snapshots__/horizontalcell-android-chromium-dark-1-snap.png +3 -0
  578. package/src/components/HorizontalCell/__image_snapshots__/horizontalcell-android-chromium-light-1-snap.png +3 -0
  579. package/src/components/HorizontalCell/__image_snapshots__/horizontalcell-ios-webkit-dark-1-snap.png +3 -0
  580. package/src/components/HorizontalCell/__image_snapshots__/horizontalcell-ios-webkit-light-1-snap.png +3 -0
  581. package/src/components/HorizontalCell/__image_snapshots__/horizontalcell-vkcom-chromium-dark-1-snap.png +3 -0
  582. package/src/components/HorizontalCell/__image_snapshots__/horizontalcell-vkcom-chromium-light-1-snap.png +3 -0
  583. package/src/components/HorizontalCell/__image_snapshots__/horizontalcell-vkcom-firefox-dark-1-snap.png +3 -0
  584. package/src/components/HorizontalCell/__image_snapshots__/horizontalcell-vkcom-firefox-light-1-snap.png +3 -0
  585. package/src/components/HorizontalCell/__image_snapshots__/horizontalcell-vkcom-webkit-dark-1-snap.png +3 -0
  586. package/src/components/HorizontalCell/__image_snapshots__/horizontalcell-vkcom-webkit-light-1-snap.png +3 -0
  587. package/src/components/HorizontalScroll/HorizontalScroll.test.tsx +51 -20
  588. package/src/components/HorizontalScroll/HorizontalScroll.tsx +2 -0
  589. package/src/components/Image/Image.stories.tsx +1 -0
  590. package/src/components/Image/Readme.md +6 -2
  591. package/src/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.stories.tsx +9 -5
  592. package/src/components/Input/Readme.md +1 -1
  593. package/src/components/InputLike/InputLike.tsx +1 -1
  594. package/src/components/Link/Link.module.css +1 -2
  595. package/src/components/ModalPageHeader/ModalPageHeader.tsx +2 -2
  596. package/src/components/ModalPageHeader/__image_snapshots__/modalpageheader-viewwidth-mobile-android-chromium-dark-1-snap.png +2 -2
  597. package/src/components/ModalPageHeader/__image_snapshots__/modalpageheader-viewwidth-mobile-android-chromium-light-1-snap.png +2 -2
  598. package/src/components/ModalPageHeader/__image_snapshots__/modalpageheader-viewwidth-mobile-ios-only-ios-webkit-dark-1-snap.png +2 -2
  599. package/src/components/ModalPageHeader/__image_snapshots__/modalpageheader-viewwidth-mobile-ios-only-ios-webkit-light-1-snap.png +2 -2
  600. package/src/components/ModalRoot/ModalRootContext.tsx +1 -1
  601. package/src/components/ModalRoot/types.ts +4 -4
  602. package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +1 -1
  603. package/src/components/Pagination/Pagination.tsx +2 -2
  604. package/src/components/Pagination/PaginationPage/PaginationPageButton.tsx +0 -2
  605. package/src/components/Panel/Panel.module.css +8 -21
  606. package/src/components/Popover/Readme.md +1 -1
  607. package/src/components/Popper/Readme.md +1 -1
  608. package/src/components/PullToRefresh/PullToRefresh.e2e.tsx +2 -0
  609. package/src/components/PullToRefresh/PullToRefresh.tsx +6 -1
  610. package/src/components/Root/Root.tsx +1 -1
  611. package/src/components/Search/Search.module.css +1 -1
  612. package/src/components/Search/__image_snapshots__/search-ios-webkit-dark-1-snap.png +2 -2
  613. package/src/components/Search/__image_snapshots__/search-ios-webkit-light-1-snap.png +2 -2
  614. package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +1 -1
  615. package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.tsx +21 -36
  616. package/src/components/Select/Select.tsx +11 -4
  617. package/src/components/SimpleCell/SimpleCell.e2e-playground.tsx +4 -0
  618. package/src/components/SimpleCell/SimpleCell.module.css +5 -0
  619. package/src/components/SimpleCell/SimpleCell.tsx +8 -1
  620. package/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-dark-1-snap.png +2 -2
  621. package/src/components/SimpleCell/__image_snapshots__/simplecell-android-chromium-light-1-snap.png +2 -2
  622. package/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-dark-1-snap.png +2 -2
  623. package/src/components/SimpleCell/__image_snapshots__/simplecell-ios-webkit-light-1-snap.png +2 -2
  624. package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-dark-1-snap.png +2 -2
  625. package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-chromium-light-1-snap.png +2 -2
  626. package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-dark-1-snap.png +2 -2
  627. package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-firefox-light-1-snap.png +2 -2
  628. package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-dark-1-snap.png +2 -2
  629. package/src/components/SimpleCell/__image_snapshots__/simplecell-vkcom-webkit-light-1-snap.png +2 -2
  630. package/src/components/Slider/Slider.test.tsx +11 -5
  631. package/src/components/Slider/Slider.tsx +4 -4
  632. package/src/components/Snackbar/Snackbar.test.tsx +26 -0
  633. package/src/components/Snackbar/Snackbar.tsx +2 -2
  634. package/src/components/Snackbar/subcomponents/Basic/Basic.tsx +4 -3
  635. package/src/components/Tabs/__image_snapshots__/tabs-android-chromium-dark-1-snap.png +2 -2
  636. package/src/components/Tabs/__image_snapshots__/tabs-android-chromium-light-1-snap.png +2 -2
  637. package/src/components/Tabs/__image_snapshots__/tabs-ios-webkit-dark-1-snap.png +2 -2
  638. package/src/components/Tabs/__image_snapshots__/tabs-ios-webkit-light-1-snap.png +2 -2
  639. package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-android-chromium-light-1-snap.png +2 -2
  640. package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-ios-webkit-light-1-snap.png +2 -2
  641. package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-vkcom-chromium-light-1-snap.png +2 -2
  642. package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-vkcom-firefox-light-1-snap.png +2 -2
  643. package/src/components/Tabs/__image_snapshots__/tabs-layout-fill-mode-vkcom-webkit-light-1-snap.png +2 -2
  644. package/src/components/Tabs/__image_snapshots__/tabs-vkcom-chromium-dark-1-snap.png +2 -2
  645. package/src/components/Tabs/__image_snapshots__/tabs-vkcom-chromium-light-1-snap.png +2 -2
  646. package/src/components/Tabs/__image_snapshots__/tabs-vkcom-firefox-dark-1-snap.png +2 -2
  647. package/src/components/Tabs/__image_snapshots__/tabs-vkcom-firefox-light-1-snap.png +2 -2
  648. package/src/components/Tabs/__image_snapshots__/tabs-vkcom-webkit-dark-1-snap.png +2 -2
  649. package/src/components/Tabs/__image_snapshots__/tabs-vkcom-webkit-light-1-snap.png +2 -2
  650. package/src/components/TabsItem/TabsItem.module.css +0 -9
  651. package/src/components/Tappable/Tappable.stories.tsx +1 -1
  652. package/src/components/Textarea/Textarea.tsx +1 -1
  653. package/src/components/Touch/Readme.md +1 -1
  654. package/src/components/View/View.stories.tsx +1 -1
  655. package/src/components/View/View.tsx +4 -4
  656. package/src/components/View/ViewInfinite.tsx +5 -5
  657. package/src/components/WriteBar/Readme.md +1 -1
  658. package/src/hooks/useDateInput.ts +4 -4
  659. package/src/hooks/useDraggableWithDomApi/types.ts +4 -4
  660. package/src/hooks/useEnsuredControl.ts +2 -2
  661. package/src/hooks/useGlobalOnClickOutside.test.tsx +1 -1
  662. package/src/lib/floating/useFloatingWithInteractions/types.ts +3 -3
  663. package/src/lib/rafSchd.ts +1 -1
  664. package/src/lib/react/simulateReactInput.ts +3 -3
  665. package/src/storybook/VKUIDecorators.tsx +14 -18
  666. package/src/testing/e2e/ComponentPlayground.tsx +1 -1
  667. package/src/testing/e2e/types.ts +1 -1
  668. package/src/types.ts +37 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Done } from '@vkontakte/icons';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Paragraph } from '../Typography/Paragraph/Paragraph';\nimport styles from './CustomSelectOption.module.css';\n\nconst sizeYClassNames = {\n none: styles['CustomSelectOption--sizeY-none'],\n ['regular']: styles['CustomSelectOption--sizeY-regular'],\n};\n\nexport interface CustomSelectOptionProps extends HTMLAttributesWithRootRef<HTMLDivElement> {\n /**\n * Добавляет описание под основным блоком.\n */\n description?: React.ReactNode;\n /**\n * Вставляет элемент в начало блока перед основным контентом.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n before?: React.ReactNode;\n /**\n * Вставляет элемент в конец блока после основного контента.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n after?: React.ReactNode;\n /**\n * Позволяет создавать вложенность.\n */\n hierarchy?: number;\n /**\n * Включает состояние выбранного элемента списка.\n */\n selected?: boolean;\n /**\n * Включает состояние наведения.\n */\n hovered?: boolean;\n /**\n * Включает состояние фокуса.\n */\n focused?: boolean;\n /**\n * Блокирует весь блок.\n *\n * > ⚠️ Важно: если CustomSelectOption используется внутри [Select](https://vkcom.github.io/VKUI/#/Select), [CustomSelect](https://vkcom.github.io/VKUI/#/CustomSelect) или [ChipsSelect](https://vkcom.github.io/VKUI/#/ChipsSelect), то свойство явно должно выставляться только через структуру `options`.\n * > Запрещается выставлять `disabled` проп опциям в обход `options`, иначе [CustomSelect](https://vkcom.github.io/VKUI/#/CustomSelect) и [ChipsSelect](https://vkcom.github.io/VKUI/#/ChipsSelect) не будут знать об актуальном состоянии\n * опции.\n */\n disabled?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CustomSelectOption\n */\nexport const CustomSelectOption = ({\n children,\n hierarchy = 0,\n hovered: hoveredProp,\n selected,\n before,\n after,\n description,\n disabled,\n style: styleProp,\n className,\n onClick,\n ...restProps\n}: CustomSelectOptionProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n const style = React.useMemo(\n () =>\n hierarchy > 0\n ? {\n '--vkui_internal--custom_select_option_hierarchy_level': hierarchy,\n ...styleProp,\n }\n : styleProp,\n [hierarchy, styleProp],\n );\n const hovered = hoveredProp && !disabled ? true : false;\n\n return (\n <Paragraph\n {...restProps}\n onClick={disabled ? undefined : onClick}\n Component=\"div\"\n role=\"option\"\n aria-disabled={disabled}\n aria-selected={selected}\n data-hovered={hovered}\n className={classNames(\n styles['CustomSelectOption'],\n sizeY !== 'compact' && sizeYClassNames[sizeY],\n hovered && styles['CustomSelectOption--hover'],\n disabled && styles['CustomSelectOption--disabled'],\n hierarchy > 0 && styles['CustomSelectOption--hierarchy'],\n className,\n )}\n style={style}\n >\n {hasReactNode(before) && <div className={styles['CustomSelectOption__before']}>{before}</div>}\n <div className={styles['CustomSelectOption__main']}>\n <div className={styles['CustomSelectOption__children']}>{children}</div>\n {hasReactNode(description) && (\n <Footnote className={styles['CustomSelectOption__description']}>{description}</Footnote>\n )}\n </div>\n <div className={styles['CustomSelectOption__after']}>\n {hasReactNode(after) && <div>{after}</div>}\n {selected && <Icon16Done className={styles['CustomSelectOption__selectedIcon']} />}\n </div>\n </Paragraph>\n );\n};\n"],"names":["React","Icon16Done","classNames","hasReactNode","useAdaptivity","Footnote","Paragraph","sizeYClassNames","none","CustomSelectOption","children","hierarchy","hovered","hoveredProp","selected","before","after","description","disabled","style","styleProp","className","onClick","restProps","sizeY","useMemo","undefined","Component","role","aria-disabled","aria-selected","data-hovered","div"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,aAAa,QAAQ,4BAA4B;AAE1D,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,SAAS,QAAQ,oCAAoC;AAG9D,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;AACb;AA2CA;;CAEC,GACD,OAAO,MAAMC,qBAAqB;QAAC,EACjCC,QAAQ,EACRC,YAAY,CAAC,EACbC,SAASC,WAAW,EACpBC,QAAQ,EACRC,MAAM,EACNC,KAAK,EACLC,WAAW,EACXC,QAAQ,EACRC,OAAOC,SAAS,EAChBC,SAAS,EACTC,OAAO,EAEiB,WADrBC;QAXHb;QACAC;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;QACAC;;IAGA,MAAM,EAAEE,QAAQ,MAAM,EAAE,GAAGpB;IAC3B,MAAMe,QAAQnB,MAAMyB,OAAO,CACzB,IACEd,YAAY,IACR;YACE,yDAAyDA;WACtDS,aAELA,WACN;QAACT;QAAWS;KAAU;IAExB,MAAMR,UAAUC,eAAe,CAACK,WAAW,OAAO;IAElD,qBACE,oBAACZ,mDACKiB;QACJD,SAASJ,WAAWQ,YAAYJ;QAChCK,WAAU;QACVC,MAAK;QACLC,iBAAeX;QACfY,iBAAehB;QACfiB,gBAAcnB;QACdS,WAAWnB,qCAETsB,UAAU,aAAajB,eAAe,CAACiB,MAAM,EAC7CZ,4CACAM,gDACAP,YAAY,0CACZU;QAEFF,OAAOA;QAENhB,aAAaY,yBAAW,oBAACiB;QAAIX,SAAS;OAAyCN,uBAChF,oBAACiB;QAAIX,SAAS;qBACZ,oBAACW;QAAIX,SAAS;OAA2CX,WACxDP,aAAac,8BACZ,oBAACZ;QAASgB,SAAS;OAA8CJ,6BAGrE,oBAACe;QAAIX,SAAS;OACXlB,aAAaa,wBAAU,oBAACgB,aAAKhB,QAC7BF,0BAAY,oBAACb;QAAWoB,SAAS;;AAI1C,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Done } from '@vkontakte/icons';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Paragraph } from '../Typography/Paragraph/Paragraph';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './CustomSelectOption.module.css';\n\nconst sizeYClassNames = {\n none: styles['CustomSelectOption--sizeY-none'],\n ['regular']: styles['CustomSelectOption--sizeY-regular'],\n};\n\nexport interface CustomSelectOptionProps extends HTMLAttributesWithRootRef<HTMLDivElement> {\n /**\n * Добавляет описание под основным блоком.\n */\n description?: React.ReactNode;\n /**\n * Вставляет элемент в начало блока перед основным контентом.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n before?: React.ReactNode;\n /**\n * Вставляет элемент в конец блока после основного контента.\n * Например, можно передать компонент `Avatar`, `Icon<Name>` или другие изображения.\n */\n after?: React.ReactNode;\n /**\n * Позволяет создавать вложенность.\n */\n hierarchy?: number;\n /**\n * Включает состояние выбранного элемента списка.\n */\n selected?: boolean;\n /**\n * Включает состояние наведения.\n */\n hovered?: boolean;\n /**\n * Включает состояние фокуса.\n */\n focused?: boolean;\n /**\n * Блокирует весь блок.\n *\n * > ⚠️ Важно: если CustomSelectOption используется внутри [Select](https://vkcom.github.io/VKUI/#/Select), [CustomSelect](https://vkcom.github.io/VKUI/#/CustomSelect) или [ChipsSelect](https://vkcom.github.io/VKUI/#/ChipsSelect), то свойство явно должно выставляться только через структуру `options`.\n * > Запрещается выставлять `disabled` проп опциям в обход `options`, иначе [CustomSelect](https://vkcom.github.io/VKUI/#/CustomSelect) и [ChipsSelect](https://vkcom.github.io/VKUI/#/ChipsSelect) не будут знать об актуальном состоянии\n * опции.\n */\n disabled?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CustomSelectOption\n */\nexport const CustomSelectOption = ({\n children,\n hierarchy = 0,\n hovered: hoveredProp,\n selected,\n before,\n after,\n description,\n disabled,\n style: styleProp,\n className,\n onClick,\n ...restProps\n}: CustomSelectOptionProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n const style = React.useMemo(\n () =>\n hierarchy > 0\n ? {\n '--vkui_internal--custom_select_option_hierarchy_level': hierarchy,\n ...styleProp,\n }\n : styleProp,\n [hierarchy, styleProp],\n );\n const hovered = hoveredProp && !disabled ? true : false;\n\n return (\n <Paragraph\n {...restProps}\n onClick={disabled ? undefined : onClick}\n Component=\"div\"\n role=\"option\"\n aria-disabled={disabled}\n aria-selected={selected}\n data-hovered={hovered}\n className={classNames(\n styles['CustomSelectOption'],\n sizeY !== 'compact' && sizeYClassNames[sizeY],\n hovered && styles['CustomSelectOption--hover'],\n disabled && styles['CustomSelectOption--disabled'],\n hierarchy > 0 && styles['CustomSelectOption--hierarchy'],\n className,\n )}\n style={style}\n >\n {hasReactNode(before) && <div className={styles['CustomSelectOption__before']}>{before}</div>}\n <div className={styles['CustomSelectOption__main']}>\n <div className={styles['CustomSelectOption__children']}>{children}</div>\n {hasReactNode(description) && (\n <Footnote className={styles['CustomSelectOption__description']}>\n <VisuallyHidden>&nbsp;</VisuallyHidden>\n {description}\n </Footnote>\n )}\n </div>\n <div className={styles['CustomSelectOption__after']}>\n {hasReactNode(after) && <div>{after}</div>}\n {selected && <Icon16Done className={styles['CustomSelectOption__selectedIcon']} />}\n </div>\n </Paragraph>\n );\n};\n"],"names":["React","Icon16Done","classNames","hasReactNode","useAdaptivity","Footnote","Paragraph","VisuallyHidden","sizeYClassNames","none","CustomSelectOption","children","hierarchy","hovered","hoveredProp","selected","before","after","description","disabled","style","styleProp","className","onClick","restProps","sizeY","useMemo","undefined","Component","role","aria-disabled","aria-selected","data-hovered","div"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,mBAAmB;AAC9C,SAASC,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAC3D,SAASC,aAAa,QAAQ,4BAA4B;AAE1D,SAASC,QAAQ,QAAQ,kCAAkC;AAC3D,SAASC,SAAS,QAAQ,oCAAoC;AAC9D,SAASC,cAAc,QAAQ,mCAAmC;AAGlE,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;AACb;AA2CA;;CAEC,GACD,OAAO,MAAMC,qBAAqB;QAAC,EACjCC,QAAQ,EACRC,YAAY,CAAC,EACbC,SAASC,WAAW,EACpBC,QAAQ,EACRC,MAAM,EACNC,KAAK,EACLC,WAAW,EACXC,QAAQ,EACRC,OAAOC,SAAS,EAChBC,SAAS,EACTC,OAAO,EAEiB,WADrBC;QAXHb;QACAC;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;QACAC;;IAGA,MAAM,EAAEE,QAAQ,MAAM,EAAE,GAAGrB;IAC3B,MAAMgB,QAAQpB,MAAM0B,OAAO,CACzB,IACEd,YAAY,IACR;YACE,yDAAyDA;WACtDS,aAELA,WACN;QAACT;QAAWS;KAAU;IAExB,MAAMR,UAAUC,eAAe,CAACK,WAAW,OAAO;IAElD,qBACE,oBAACb,mDACKkB;QACJD,SAASJ,WAAWQ,YAAYJ;QAChCK,WAAU;QACVC,MAAK;QACLC,iBAAeX;QACfY,iBAAehB;QACfiB,gBAAcnB;QACdS,WAAWpB,qCAETuB,UAAU,aAAajB,eAAe,CAACiB,MAAM,EAC7CZ,4CACAM,gDACAP,YAAY,0CACZU;QAEFF,OAAOA;QAENjB,aAAaa,yBAAW,oBAACiB;QAAIX,SAAS;OAAyCN,uBAChF,oBAACiB;QAAIX,SAAS;qBACZ,oBAACW;QAAIX,SAAS;OAA2CX,WACxDR,aAAae,8BACZ,oBAACb;QAASiB,SAAS;qBACjB,oBAACf,sBAAe,MACfW,6BAIP,oBAACe;QAAIX,SAAS;OACXnB,aAAac,wBAAU,oBAACgB,aAAKhB,QAC7BF,0BAAY,oBAACd;QAAWqB,SAAS;;AAI1C,EAAE"}
@@ -4,7 +4,7 @@ import { HasRootRef } from '../../types';
4
4
  import { CalendarProps } from '../Calendar/Calendar';
5
5
  import { FormFieldProps } from '../FormField/FormField';
6
6
  import '../InputLike/InputLike.module.css';
7
- export interface DateInputProps extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange' | 'size'>, Pick<CalendarProps, 'disablePast' | 'disableFuture' | 'enableTime' | 'shouldDisableDate' | 'onChange' | 'value' | 'doneButtonText' | 'weekStartsOn' | 'disablePickers' | 'changeHoursLabel' | 'changeMinutesLabel' | 'prevMonthLabel' | 'nextMonthLabel' | 'changeMonthLabel' | 'changeYearLabel' | 'changeDayLabel' | 'showNeighboringMonth' | 'size' | 'viewDate' | 'onHeaderChange' | 'onNextMonth' | 'onPrevMonth' | 'prevMonthIcon' | 'nextMonthIcon'>, HasRootRef<HTMLDivElement>, FormFieldProps {
7
+ export interface DateInputProps extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange' | 'size'>, Pick<CalendarProps, 'disablePast' | 'disableFuture' | 'enableTime' | 'shouldDisableDate' | 'onChange' | 'value' | 'doneButtonText' | 'weekStartsOn' | 'disablePickers' | 'changeHoursLabel' | 'changeMinutesLabel' | 'prevMonthLabel' | 'nextMonthLabel' | 'changeMonthLabel' | 'changeYearLabel' | 'changeDayLabel' | 'showNeighboringMonth' | 'size' | 'viewDate' | 'onHeaderChange' | 'onNextMonth' | 'onPrevMonth' | 'prevMonthIcon' | 'nextMonthIcon' | 'minDateTime' | 'maxDateTime'>, HasRootRef<HTMLDivElement>, FormFieldProps {
8
8
  calendarPlacement?: PlacementWithAuto;
9
9
  closeOnChange?: boolean;
10
10
  clearFieldLabel?: string;
@@ -14,5 +14,5 @@ export interface DateInputProps extends Omit<React.InputHTMLAttributes<HTMLDivEl
14
14
  /**
15
15
  * @see https://vkcom.github.io/VKUI/#/DateInput
16
16
  */
17
- export declare const DateInput: ({ enableTime, shouldDisableDate, disableFuture, disablePast, value, onChange, calendarPlacement, style, className, doneButtonText, closeOnChange, disablePickers, getRootRef, name, autoFocus, disabled, onClick, onFocus, prevMonthLabel, nextMonthLabel, showNeighboringMonth, size, changeMonthLabel, changeYearLabel, changeDayLabel, changeHoursLabel, changeMinutesLabel, clearFieldLabel, showCalendarLabel, viewDate, onHeaderChange, onNextMonth, onPrevMonth, prevMonthIcon, nextMonthIcon, disableCalendar, ...props }: DateInputProps) => React.JSX.Element;
17
+ export declare const DateInput: ({ enableTime, shouldDisableDate, disableFuture, disablePast, minDateTime, maxDateTime, value, onChange, calendarPlacement, style, className, doneButtonText, closeOnChange, disablePickers, getRootRef, name, autoFocus, disabled, onClick, onFocus, prevMonthLabel, nextMonthLabel, showNeighboringMonth, size, changeMonthLabel, changeYearLabel, changeDayLabel, changeHoursLabel, changeMinutesLabel, clearFieldLabel, showCalendarLabel, viewDate, onHeaderChange, onNextMonth, onPrevMonth, prevMonthIcon, nextMonthIcon, disableCalendar, ...props }: DateInputProps) => React.JSX.Element;
18
18
  //# sourceMappingURL=DateInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../../src/components/DateInput/DateInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAa,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAMnE,OAAO,mCAAmC,CAAC;AAQ3C,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC,EACpF,IAAI,CACF,aAAa,EACX,aAAa,GACb,eAAe,GACf,YAAY,GACZ,mBAAmB,GACnB,UAAU,GACV,OAAO,GACP,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,sBAAsB,GACtB,MAAM,GACN,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,eAAe,GACf,eAAe,CAClB,EACD,UAAU,CAAC,cAAc,CAAC,EAC1B,cAAc;IAChB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA0CD;;GAEG;AACH,eAAO,MAAM,SAAS,sgBAsCnB,cAAc,sBA6LhB,CAAC"}
1
+ {"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../../src/components/DateInput/DateInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAa,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAMnE,OAAO,mCAAmC,CAAC;AAQ3C,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC,EACpF,IAAI,CACF,aAAa,EACX,aAAa,GACb,eAAe,GACf,YAAY,GACZ,mBAAmB,GACnB,UAAU,GACV,OAAO,GACP,gBAAgB,GAChB,cAAc,GACd,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,sBAAsB,GACtB,MAAM,GACN,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,aAAa,GACb,eAAe,GACf,eAAe,GACf,aAAa,GACb,aAAa,CAChB,EACD,UAAU,CAAC,cAAc,CAAC,EAC1B,cAAc;IAChB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA0CD;;GAEG;AACH,eAAO,MAAM,SAAS,giBAwCnB,cAAc,sBA+LhB,CAAC"}
@@ -68,11 +68,13 @@ const getInternalValue = (value)=>{
68
68
  /**
69
69
  * @see https://vkcom.github.io/VKUI/#/DateInput
70
70
  */ export const DateInput = (_param)=>{
71
- var { enableTime, shouldDisableDate, disableFuture, disablePast, value, onChange, calendarPlacement = 'bottom-start', style, className, doneButtonText, closeOnChange = true, disablePickers, getRootRef, name, autoFocus, disabled, onClick, onFocus, prevMonthLabel = 'Предыдущий месяц', nextMonthLabel = 'Следующий месяц', showNeighboringMonth, size, changeMonthLabel = 'Изменить месяц', changeYearLabel = 'Изменить год', changeDayLabel = 'Изменить день', changeHoursLabel = 'Изменить час', changeMinutesLabel = 'Изменить минуту', clearFieldLabel = 'Очистить поле', showCalendarLabel = 'Показать календарь', viewDate, onHeaderChange, onNextMonth, onPrevMonth, prevMonthIcon, nextMonthIcon, disableCalendar = false } = _param, props = _object_without_properties(_param, [
71
+ var { enableTime, shouldDisableDate, disableFuture, disablePast, minDateTime, maxDateTime, value, onChange, calendarPlacement = 'bottom-start', style, className, doneButtonText, closeOnChange = true, disablePickers, getRootRef, name, autoFocus, disabled, onClick, onFocus, prevMonthLabel = 'Предыдущий месяц', nextMonthLabel = 'Следующий месяц', showNeighboringMonth, size, changeMonthLabel = 'Изменить месяц', changeYearLabel = 'Изменить год', changeDayLabel = 'Изменить день', changeHoursLabel = 'Изменить час', changeMinutesLabel = 'Изменить минуту', clearFieldLabel = 'Очистить поле', showCalendarLabel = 'Показать календарь', viewDate, onHeaderChange, onNextMonth, onPrevMonth, prevMonthIcon, nextMonthIcon, disableCalendar = false } = _param, props = _object_without_properties(_param, [
72
72
  "enableTime",
73
73
  "shouldDisableDate",
74
74
  "disableFuture",
75
75
  "disablePast",
76
+ "minDateTime",
77
+ "maxDateTime",
76
78
  "value",
77
79
  "onChange",
78
80
  "calendarPlacement",
@@ -260,7 +262,9 @@ const getInternalValue = (value)=>{
260
262
  onNextMonth: onNextMonth,
261
263
  onPrevMonth: onPrevMonth,
262
264
  prevMonthIcon: prevMonthIcon,
263
- nextMonthIcon: nextMonthIcon
265
+ nextMonthIcon: nextMonthIcon,
266
+ minDateTime: minDateTime,
267
+ maxDateTime: maxDateTime
264
268
  })));
265
269
  };
266
270
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/DateInput/DateInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { format, isMatch, parse } from '../../lib/date';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport { HasRootRef } from '../../types';\nimport { Calendar, CalendarProps } from '../Calendar/Calendar';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { Popper } from '../Popper/Popper';\nimport { Text } from '../Typography/Text/Text';\nimport '../InputLike/InputLike.module.css'; // Reorder css\nimport styles from './DateInput.module.css';\n\nconst sizeYClassNames = {\n none: styles['DateInput--sizeY-none'],\n ['compact']: styles['DateInput--sizeY-compact'],\n};\n\nexport interface DateInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange' | 'size'>,\n Pick<\n CalendarProps,\n | 'disablePast'\n | 'disableFuture'\n | 'enableTime'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'doneButtonText'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'changeHoursLabel'\n | 'changeMinutesLabel'\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'changeDayLabel'\n | 'showNeighboringMonth'\n | 'size'\n | 'viewDate'\n | 'onHeaderChange'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldLabel?: string;\n showCalendarLabel?: string;\n disableCalendar?: boolean;\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 max = 31;\n break;\n case 1:\n max = 12;\n break;\n case 2:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n case 3:\n max = 23;\n break;\n case 4:\n max = 59;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarProps['value']) => {\n const newValue = ['', '', '', '', ''];\n if (value) {\n newValue[0] = String(value.getDate()).padStart(2, '0');\n newValue[1] = String(value.getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value.getFullYear()).padStart(4, '0');\n newValue[3] = String(value.getHours()).padStart(2, '0');\n newValue[4] = String(value.getMinutes()).padStart(2, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateInput\n */\nexport const DateInput = ({\n enableTime,\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n doneButtonText,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n showNeighboringMonth,\n size,\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeDayLabel = 'Изменить день',\n changeHoursLabel = 'Изменить час',\n changeMinutesLabel = 'Изменить минуту',\n clearFieldLabel = 'Очистить поле',\n showCalendarLabel = 'Показать календарь',\n viewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateInputProps) => {\n const daysRef = React.useRef<HTMLSpanElement>(null);\n const monthsRef = React.useRef<HTMLSpanElement>(null);\n const yearsRef = React.useRef<HTMLSpanElement>(null);\n const hoursRef = React.useRef<HTMLSpanElement>(null);\n const minutesRef = React.useRef<HTMLSpanElement>(null);\n\n const maxElement = enableTime ? 4 : 2;\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n for (let i = 0; i <= maxElement; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n return;\n }\n }\n\n let formattedValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n let mask = 'DD.MM.YYYY';\n if (enableTime) {\n formattedValue += ` ${internalValue[3]}:${internalValue[4]}`;\n mask += ' HH:mm';\n }\n\n if (isMatch(formattedValue, mask)) {\n onChange?.(parse(formattedValue, mask, value ?? new Date()));\n }\n },\n [enableTime, maxElement, onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY = 'none' } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (value?: Date | undefined) => {\n onChange?.(value);\n if (closeOnChange && !enableTime) {\n removeFocusFromField();\n }\n },\n [onChange, removeFocusFromField, closeOnChange, enableTime],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(sizeY !== 'regular' && sizeYClassNames[sizeY], className)}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" label={clearFieldLabel} onClick={clear}>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" label={showCalendarLabel} onClick={openCalendar}>\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={value ? format(value, enableTime ? 'DD.MM.YYYYTHH:mm' : 'DD.MM.YYYY') : ''}\n />\n <Text className={styles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n label={changeDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n label={changeMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n label={changeYearLabel}\n />\n {enableTime && (\n <React.Fragment>\n <InputLikeDivider className={styles['DateInput__input--time-divider']}>\n {' '}\n </InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={hoursRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n label={changeHoursLabel}\n />\n <InputLikeDivider>:</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={minutesRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n label={changeMinutesLabel}\n />\n </React.Fragment>\n )}\n </Text>\n {open && !disableCalendar && (\n <Popper\n targetRef={rootRef}\n offsetByMainAxis={8}\n placement={calendarPlacement}\n autoUpdateOnTargetResize\n >\n <Calendar\n value={value}\n onChange={onCalendarChange}\n enableTime={enableTime}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={removeFocusFromField}\n getRootRef={calendarRef}\n doneButtonText={doneButtonText}\n disablePickers={disablePickers}\n changeHoursLabel={changeHoursLabel}\n changeMinutesLabel={changeMinutesLabel}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n changeDayLabel={changeDayLabel}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n viewDate={viewDate}\n onHeaderChange={onHeaderChange}\n onNextMonth={onNextMonth}\n onPrevMonth={onPrevMonth}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"names":["React","Icon16Clear","Icon20CalendarOutline","classNames","useAdaptivity","useDateInput","useExternRef","callMultiple","format","isMatch","parse","Calendar","FormField","IconButton","InputLike","InputLikeDivider","Popper","Text","sizeYClassNames","none","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","getHours","getMinutes","DateInput","enableTime","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","doneButtonText","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthLabel","nextMonthLabel","showNeighboringMonth","size","changeMonthLabel","changeYearLabel","changeDayLabel","changeHoursLabel","changeMinutesLabel","clearFieldLabel","showCalendarLabel","viewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysRef","useRef","monthsRef","yearsRef","hoursRef","minutesRef","maxElement","onInternalValueChange","useCallback","internalValue","i","formattedValue","mask","Date","refs","useMemo","rootRef","calendarRef","open","openCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","handleRootRef","onCalendarChange","after","hoverMode","label","input","type","onKeyDown","onElementSelect","Fragment","targetRef","offsetByMainAxis","placement","autoUpdateOnTargetResize","onClose"],"mappings":";;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,WAAW,EAAEC,qBAAqB,QAAQ,mBAAmB;AACtE,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,MAAM,EAAEC,OAAO,EAAEC,KAAK,QAAQ,iBAAiB;AAGxD,SAASC,QAAQ,QAAuB,uBAAuB;AAC/D,SAASC,SAAS,QAAwB,yBAAyB;AACnE,SAASC,UAAU,QAAQ,2BAA2B;AACtD,SAASC,SAAS,QAAQ,yBAAyB;AACnD,SAASC,gBAAgB,QAAQ,gCAAgC;AACjE,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,IAAI,QAAQ,0BAA0B;AAI/C,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;AACb;AAwCA,MAAMC,iBAAiB,CAACC;IACtB,IAAIC,SAAS;IACb,IAAIC,MAAM;IACV,IAAIC,MAAM;IAEV,OAAQH;QACN,KAAK;YACHG,MAAM;YACN;QACF,KAAK;YACHA,MAAM;YACN;QACF,KAAK;YACHA,MAAM;YACND,MAAM;YACND,SAAS;YACT;QACF,KAAK;YACHE,MAAM;YACN;QACF,KAAK;YACHA,MAAM;YACN;IACJ;IAEA,OAAO;QAAEF;QAAQC;QAAKC;IAAI;AAC5B;AAEA,MAAMC,mBAAmB,CAACC;IACxB,MAAMC,WAAW;QAAC;QAAI;QAAI;QAAI;QAAI;KAAG;IACrC,IAAID,OAAO;QACTC,QAAQ,CAAC,EAAE,GAAGC,OAAOF,MAAMG,OAAO,IAAIC,QAAQ,CAAC,GAAG;QAClDH,QAAQ,CAAC,EAAE,GAAGC,OAAOF,MAAMK,QAAQ,KAAK,GAAGD,QAAQ,CAAC,GAAG;QACvDH,QAAQ,CAAC,EAAE,GAAGC,OAAOF,MAAMM,WAAW,IAAIF,QAAQ,CAAC,GAAG;QACtDH,QAAQ,CAAC,EAAE,GAAGC,OAAOF,MAAMO,QAAQ,IAAIH,QAAQ,CAAC,GAAG;QACnDH,QAAQ,CAAC,EAAE,GAAGC,OAAOF,MAAMQ,UAAU,IAAIJ,QAAQ,CAAC,GAAG;IACvD;IACA,OAAOH;AACT;AAEA;;CAEC,GACD,OAAO,MAAMQ,YAAY;QAAC,EACxBC,UAAU,EACVC,iBAAiB,EACjBC,aAAa,EACbC,WAAW,EACXb,KAAK,EACLc,QAAQ,EACRC,oBAAoB,cAAc,EAClCC,KAAK,EACLC,SAAS,EACTC,cAAc,EACdC,gBAAgB,IAAI,EACpBC,cAAc,EACdC,UAAU,EACVC,IAAI,EACJC,SAAS,EACTC,QAAQ,EACRC,OAAO,EACPC,OAAO,EACPC,iBAAiB,kBAAkB,EACnCC,iBAAiB,iBAAiB,EAClCC,oBAAoB,EACpBC,IAAI,EACJC,mBAAmB,gBAAgB,EACnCC,kBAAkB,cAAc,EAChCC,iBAAiB,eAAe,EAChCC,mBAAmB,cAAc,EACjCC,qBAAqB,iBAAiB,EACtCC,kBAAkB,eAAe,EACjCC,oBAAoB,oBAAoB,EACxCC,QAAQ,EACRC,cAAc,EACdC,WAAW,EACXC,WAAW,EACXC,aAAa,EACbC,aAAa,EACbC,kBAAkB,KAAK,EAER,WADZC;QApCHnC;QACAC;QACAC;QACAC;QACAb;QACAc;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAME,UAAUxE,MAAMyE,MAAM,CAAkB;IAC9C,MAAMC,YAAY1E,MAAMyE,MAAM,CAAkB;IAChD,MAAME,WAAW3E,MAAMyE,MAAM,CAAkB;IAC/C,MAAMG,WAAW5E,MAAMyE,MAAM,CAAkB;IAC/C,MAAMI,aAAa7E,MAAMyE,MAAM,CAAkB;IAEjD,MAAMK,aAAa1C,aAAa,IAAI;IAEpC,MAAM2C,wBAAwB/E,MAAMgF,WAAW,CAC7C,CAACC;QACC,IAAK,IAAIC,IAAI,GAAGA,KAAKJ,YAAYI,KAAK,EAAG;YACvC,IAAID,aAAa,CAACC,EAAE,CAAC5D,MAAM,GAAGF,eAAe8D,GAAG5D,MAAM,EAAE;gBACtD;YACF;QACF;QAEA,IAAI6D,iBAAiB,CAAC,EAAEF,aAAa,CAAC,EAAE,CAAC,CAAC,EAAEA,aAAa,CAAC,EAAE,CAAC,CAAC,EAAEA,aAAa,CAAC,EAAE,CAAC,CAAC;QAClF,IAAIG,OAAO;QACX,IAAIhD,YAAY;YACd+C,kBAAkB,CAAC,CAAC,EAAEF,aAAa,CAAC,EAAE,CAAC,CAAC,EAAEA,aAAa,CAAC,EAAE,CAAC,CAAC;YAC5DG,QAAQ;QACV;QAEA,IAAI3E,QAAQ0E,gBAAgBC,OAAO;YACjC5C,qBAAAA,+BAAAA,SAAW9B,MAAMyE,gBAAgBC,MAAM1D,kBAAAA,mBAAAA,QAAS,IAAI2D;QACtD;IACF,GACA;QAACjD;QAAY0C;QAAYtC;QAAUd;KAAM;IAG3C,MAAM4D,OAAOtF,MAAMuF,OAAO,CACxB,IAAM;YAACf;YAASE;YAAWC;YAAUC;YAAUC;SAAW,EAC1D;QAACL;QAASE;QAAWC;QAAUC;QAAUC;KAAW;IAGtD,MAAM,EACJW,OAAO,EACPC,WAAW,EACXC,IAAI,EACJC,YAAY,EACZV,aAAa,EACbW,aAAa,EACbC,iBAAiB,EACjBC,gBAAgB,EAChBC,KAAK,EACLC,oBAAoB,EACrB,GAAG3F,aAAa;QACfyE;QACAQ;QACArC;QACAC;QACA9B;QACAoB;QACAuC;QACAtD;QACAC;IACF;IAEA,MAAM,EAAEuE,QAAQ,MAAM,EAAE,GAAG7F;IAE3B,MAAM8F,gBAAgB5F,aAAakF,SAASzC;IAE5C,MAAMoD,mBAAmBnG,MAAMgF,WAAW,CACxC,CAACtD;QACCc,qBAAAA,+BAAAA,SAAWd;QACX,IAAImB,iBAAiB,CAACT,YAAY;YAChC4D;QACF;IACF,GACA;QAACxD;QAAUwD;QAAsBnD;QAAeT;KAAW;IAG7D,qBACE,oBAACxB;QACC8B,OAAOA;QACPC,WAAWxC,WAAW8F,UAAU,aAAa/E,eAAe,CAAC+E,MAAM,EAAEtD;QACrEI,YAAYmD;QACZE,OACE1E,sBACE,oBAACb;YAAWwF,WAAU;YAAUC,OAAOxC;YAAiBX,SAAS4C;yBAC/D,oBAAC9F,oCAGH,oBAACY;YAAWwF,WAAU;YAAUC,OAAOvC;YAAmBZ,SAASwC;yBACjE,oBAACzF;QAIPgD,UAAUA;QACVC,SAAS5C,aAAauF,kBAAkB3C;QACxCC,SAAS7C,aAAauF,kBAAkB1C;OACpCmB,sBAEJ,oBAACgC;QACCC,MAAK;QACLxD,MAAMA;QACNtB,OAAOA,QAAQlB,OAAOkB,OAAOU,aAAa,qBAAqB,gBAAgB;sBAEjF,oBAACnB;QAAK0B,SAAS;QAA8B8D,WAAWb;qBACtD,oBAAC9E;QACCQ,QAAQ;QACRyB,YAAYyB;QACZnD,OAAO;QACPqF,iBAAiBb;QACjBnE,OAAOuD,aAAa,CAAC,EAAE;QACvBqB,OAAO3C;sBAET,oBAAC5C,wBAAiB,oBAClB,oBAACD;QACCQ,QAAQ;QACRyB,YAAY2B;QACZrD,OAAO;QACPqF,iBAAiBb;QACjBnE,OAAOuD,aAAa,CAAC,EAAE;QACvBqB,OAAO7C;sBAET,oBAAC1C,wBAAiB,oBAClB,oBAACD;QACCQ,QAAQ;QACRyB,YAAY4B;QACZtD,OAAO;QACPqF,iBAAiBb;QACjBnE,OAAOuD,aAAa,CAAC,EAAE;QACvBqB,OAAO5C;QAERtB,4BACC,oBAACpC,MAAM2G,QAAQ,sBACb,oBAAC5F;QAAiB4B,SAAS;OACxB,oBAEH,oBAAC7B;QACCQ,QAAQ;QACRyB,YAAY6B;QACZvD,OAAO;QACPqF,iBAAiBb;QACjBnE,OAAOuD,aAAa,CAAC,EAAE;QACvBqB,OAAO1C;sBAET,oBAAC7C,wBAAiB,oBAClB,oBAACD;QACCQ,QAAQ;QACRyB,YAAY8B;QACZxD,OAAO;QACPqF,iBAAiBb;QACjBnE,OAAOuD,aAAa,CAAC,EAAE;QACvBqB,OAAOzC;UAKd6B,QAAQ,CAACpB,iCACR,oBAACtD;QACC4F,WAAWpB;QACXqB,kBAAkB;QAClBC,WAAWrE;QACXsE,0BAAAA;qBAEA,oBAACpG;QACCe,OAAOA;QACPc,UAAU2D;QACV/D,YAAYA;QACZG,aAAaA;QACbD,eAAeA;QACfD,mBAAmBA;QACnB2E,SAAShB;QACTjD,YAAY0C;QACZ7C,gBAAgBA;QAChBE,gBAAgBA;QAChBc,kBAAkBA;QAClBC,oBAAoBA;QACpBR,gBAAgBA;QAChBC,gBAAgBA;QAChBG,kBAAkBA;QAClBC,iBAAiBA;QACjBC,gBAAgBA;QAChBJ,sBAAsBA;QACtBC,MAAMA;QACNQ,UAAUA;QACVC,gBAAgBA;QAChBC,aAAaA;QACbC,aAAaA;QACbC,eAAeA;QACfC,eAAeA;;AAM3B,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/DateInput/DateInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { format, isMatch, parse } from '../../lib/date';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport { HasRootRef } from '../../types';\nimport { Calendar, CalendarProps } from '../Calendar/Calendar';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { Popper } from '../Popper/Popper';\nimport { Text } from '../Typography/Text/Text';\nimport '../InputLike/InputLike.module.css'; // Reorder css\nimport styles from './DateInput.module.css';\n\nconst sizeYClassNames = {\n none: styles['DateInput--sizeY-none'],\n ['compact']: styles['DateInput--sizeY-compact'],\n};\n\nexport interface DateInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange' | 'size'>,\n Pick<\n CalendarProps,\n | 'disablePast'\n | 'disableFuture'\n | 'enableTime'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'doneButtonText'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'changeHoursLabel'\n | 'changeMinutesLabel'\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'changeDayLabel'\n | 'showNeighboringMonth'\n | 'size'\n | 'viewDate'\n | 'onHeaderChange'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n | 'minDateTime'\n | 'maxDateTime'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldLabel?: string;\n showCalendarLabel?: string;\n disableCalendar?: boolean;\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 max = 31;\n break;\n case 1:\n max = 12;\n break;\n case 2:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n case 3:\n max = 23;\n break;\n case 4:\n max = 59;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarProps['value']) => {\n const newValue = ['', '', '', '', ''];\n if (value) {\n newValue[0] = String(value.getDate()).padStart(2, '0');\n newValue[1] = String(value.getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value.getFullYear()).padStart(4, '0');\n newValue[3] = String(value.getHours()).padStart(2, '0');\n newValue[4] = String(value.getMinutes()).padStart(2, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateInput\n */\nexport const DateInput = ({\n enableTime,\n shouldDisableDate,\n disableFuture,\n disablePast,\n minDateTime,\n maxDateTime,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n doneButtonText,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n showNeighboringMonth,\n size,\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeDayLabel = 'Изменить день',\n changeHoursLabel = 'Изменить час',\n changeMinutesLabel = 'Изменить минуту',\n clearFieldLabel = 'Очистить поле',\n showCalendarLabel = 'Показать календарь',\n viewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateInputProps) => {\n const daysRef = React.useRef<HTMLSpanElement>(null);\n const monthsRef = React.useRef<HTMLSpanElement>(null);\n const yearsRef = React.useRef<HTMLSpanElement>(null);\n const hoursRef = React.useRef<HTMLSpanElement>(null);\n const minutesRef = React.useRef<HTMLSpanElement>(null);\n\n const maxElement = enableTime ? 4 : 2;\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n for (let i = 0; i <= maxElement; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n return;\n }\n }\n\n let formattedValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n let mask = 'DD.MM.YYYY';\n if (enableTime) {\n formattedValue += ` ${internalValue[3]}:${internalValue[4]}`;\n mask += ' HH:mm';\n }\n\n if (isMatch(formattedValue, mask)) {\n onChange?.(parse(formattedValue, mask, value ?? new Date()));\n }\n },\n [enableTime, maxElement, onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY = 'none' } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (value?: Date | undefined) => {\n onChange?.(value);\n if (closeOnChange && !enableTime) {\n removeFocusFromField();\n }\n },\n [onChange, removeFocusFromField, closeOnChange, enableTime],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(sizeY !== 'regular' && sizeYClassNames[sizeY], className)}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" label={clearFieldLabel} onClick={clear}>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" label={showCalendarLabel} onClick={openCalendar}>\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={value ? format(value, enableTime ? 'DD.MM.YYYYTHH:mm' : 'DD.MM.YYYY') : ''}\n />\n <Text className={styles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n label={changeDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n label={changeMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n label={changeYearLabel}\n />\n {enableTime && (\n <React.Fragment>\n <InputLikeDivider className={styles['DateInput__input--time-divider']}>\n {' '}\n </InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={hoursRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n label={changeHoursLabel}\n />\n <InputLikeDivider>:</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={minutesRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n label={changeMinutesLabel}\n />\n </React.Fragment>\n )}\n </Text>\n {open && !disableCalendar && (\n <Popper\n targetRef={rootRef}\n offsetByMainAxis={8}\n placement={calendarPlacement}\n autoUpdateOnTargetResize\n >\n <Calendar\n value={value}\n onChange={onCalendarChange}\n enableTime={enableTime}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={removeFocusFromField}\n getRootRef={calendarRef}\n doneButtonText={doneButtonText}\n disablePickers={disablePickers}\n changeHoursLabel={changeHoursLabel}\n changeMinutesLabel={changeMinutesLabel}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n changeDayLabel={changeDayLabel}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n viewDate={viewDate}\n onHeaderChange={onHeaderChange}\n onNextMonth={onNextMonth}\n onPrevMonth={onPrevMonth}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n minDateTime={minDateTime}\n maxDateTime={maxDateTime}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"names":["React","Icon16Clear","Icon20CalendarOutline","classNames","useAdaptivity","useDateInput","useExternRef","callMultiple","format","isMatch","parse","Calendar","FormField","IconButton","InputLike","InputLikeDivider","Popper","Text","sizeYClassNames","none","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","getHours","getMinutes","DateInput","enableTime","shouldDisableDate","disableFuture","disablePast","minDateTime","maxDateTime","onChange","calendarPlacement","style","className","doneButtonText","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthLabel","nextMonthLabel","showNeighboringMonth","size","changeMonthLabel","changeYearLabel","changeDayLabel","changeHoursLabel","changeMinutesLabel","clearFieldLabel","showCalendarLabel","viewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysRef","useRef","monthsRef","yearsRef","hoursRef","minutesRef","maxElement","onInternalValueChange","useCallback","internalValue","i","formattedValue","mask","Date","refs","useMemo","rootRef","calendarRef","open","openCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","handleRootRef","onCalendarChange","after","hoverMode","label","input","type","onKeyDown","onElementSelect","Fragment","targetRef","offsetByMainAxis","placement","autoUpdateOnTargetResize","onClose"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAqBxD,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC;IACvF,GAAG,CAAC,EAAE,oBAAoB,CAAC;IAC3B,GAAG,CAAC,EAAE,oBAAoB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAyID;;GAEG;AACH,eAAO,MAAM,UAAU,+BAAgC,eAAe,sBAkBrE,CAAC"}
1
+ {"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DatePicker/DatePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAwB,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAqB9E,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,KAAK,GAAG,KAAK,CAAC;IACvF,GAAG,CAAC,EAAE,oBAAoB,CAAC;IAC3B,GAAG,CAAC,EAAE,oBAAoB,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA0ID;;GAEG;AACH,eAAO,MAAM,UAAU,+BAAgC,eAAe,sBAkBrE,CAAC"}
@@ -163,7 +163,8 @@ const DatePickerNative = (_param)=>{
163
163
  }, [
164
164
  onDateChange
165
165
  ]);
166
- return /*#__PURE__*/ React.createElement(Input, _object_spread(_object_spread_props(_object_spread({}, restProps), {
166
+ const inputProps = restProps;
167
+ return /*#__PURE__*/ React.createElement(Input, _object_spread(_object_spread_props(_object_spread({}, inputProps), {
167
168
  type: "date",
168
169
  onChange: onStringChange,
169
170
  min: convertToInputFormat(min),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { leadingZero } from '@vkontakte/vkjs';\nimport { range } from '../../helpers/range';\nimport { useAdaptivityHasPointer } from '../../hooks/useAdaptivityHasPointer';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { CustomSelect } from '../CustomSelect/CustomSelect';\nimport { Input } from '../Input/Input';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './DatePicker.module.css';\n\nconst DefaultMonths: string[] = [\n 'Января',\n 'Февраля',\n 'Марта',\n 'Апреля',\n 'Мая',\n 'Июня',\n 'Июля',\n 'Августа',\n 'Сентября',\n 'Октября',\n 'Ноября',\n 'Декабря',\n];\n\nexport type DatePickerDateFormat = {\n day: number;\n month: number;\n year: number;\n};\n\nexport interface DatePickerProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'defaultValue' | 'min' | 'max'> {\n min?: DatePickerDateFormat;\n max?: DatePickerDateFormat;\n name?: string;\n defaultValue?: DatePickerDateFormat;\n popupDirection?: 'top' | 'bottom';\n monthNames?: string[];\n dayPlaceholder?: string;\n monthPlaceholder?: string;\n yearPlaceholder?: string;\n onDateChange?: (value: DatePickerDateFormat) => void;\n disabled?: boolean;\n}\n\n// Переводим state к формату гг-мм-дд\nfunction convertToInputFormat({ day = 0, month = 0, year = 0 }: Partial<DatePickerDateFormat>) {\n return `${year}-${leadingZero(month)}-${leadingZero(day)}`;\n}\n\n// Переводим дату формата гг-мм-дд к объекту\nfunction parseInputDate(date: string): DatePickerDateFormat {\n const splited = date.split('-');\n\n return {\n day: Number(splited[2]),\n month: Number(splited[1]),\n year: Number(splited[0]),\n };\n}\n\nfunction getMonthMaxDay(month?: number, year?: number) {\n return month ? new Date(year || 2016, month, 0).getDate() : 31;\n}\n\nconst DatePickerCustom = ({\n name,\n min = { day: 0, month: 0, year: 0 },\n max = { day: 31, month: 12, year: 2100 },\n dayPlaceholder,\n monthPlaceholder,\n yearPlaceholder,\n popupDirection,\n defaultValue,\n monthNames,\n day = 0,\n month = 0,\n year = 0,\n onDateChange,\n disabled,\n ...restProps\n}: DatePickerProps & Partial<DatePickerDateFormat>) => {\n const onSelectChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {\n onDateChange?.({\n day,\n month,\n year,\n [e.target.name]: Number(e.target.value),\n });\n };\n const dayOptions = range(1, getMonthMaxDay(month, year)).map((value) => ({\n label: String(value),\n value,\n }));\n const monthOptions = (monthNames || DefaultMonths).map((name, index) => ({\n label: name,\n value: index + 1,\n }));\n const yearOptions = range(max.year, min.year).map((value) => ({\n label: String(value),\n value: value,\n }));\n return (\n <RootComponent baseClassName={styles['DatePicker']} {...restProps}>\n <div className={styles['DatePicker__container']}>\n <div className={styles['DatePicker__day']}>\n <CustomSelect\n name=\"day\"\n value={day}\n options={dayOptions}\n placeholder={dayPlaceholder}\n popupDirection={popupDirection}\n onChange={onSelectChange}\n disabled={disabled}\n />\n </div>\n <div className={styles['DatePicker__month']}>\n <CustomSelect\n className={styles['DatePicker__monthSelect']}\n name=\"month\"\n value={month}\n options={monthOptions}\n placeholder={monthPlaceholder}\n popupDirection={popupDirection}\n onChange={onSelectChange}\n disabled={disabled}\n />\n </div>\n <div className={styles['DatePicker__year']}>\n <CustomSelect\n name=\"year\"\n value={year}\n options={yearOptions}\n placeholder={yearPlaceholder}\n popupDirection={popupDirection}\n onChange={onSelectChange}\n disabled={disabled}\n />\n </div>\n </div>\n <input type=\"hidden\" name={name} value={convertToInputFormat({ day, month, year })} />\n </RootComponent>\n );\n};\n\nconst DatePickerNative = ({\n min = { day: 0, month: 0, year: 0 },\n max = { day: 31, month: 12, year: 2100 },\n monthNames,\n popupDirection,\n dayPlaceholder,\n monthPlaceholder,\n yearPlaceholder,\n defaultValue,\n day,\n month,\n year,\n onDateChange,\n ...restProps\n}: DatePickerProps & Partial<DatePickerDateFormat>) => {\n const defProps =\n day && month && year ? { defaultValue: convertToInputFormat({ day, month, year }) } : {};\n const onStringChange: React.ChangeEventHandler<HTMLInputElement> = React.useCallback(\n (e) => {\n onDateChange?.(parseInputDate(e.currentTarget.value));\n },\n [onDateChange],\n );\n return (\n <Input\n {...restProps}\n type=\"date\"\n onChange={onStringChange}\n min={convertToInputFormat(min)}\n max={convertToInputFormat(max)}\n {...defProps}\n />\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DatePicker\n */\nexport const DatePicker = ({ defaultValue, ...props }: DatePickerProps) => {\n const hasPointer = useAdaptivityHasPointer();\n const [value, setValue] = React.useState<Partial<DatePickerDateFormat>>(() => ({\n day: defaultValue?.day || 0,\n month: defaultValue?.month || 0,\n year: defaultValue?.year || 0,\n }));\n\n const onDateChange = React.useCallback(\n (update: DatePickerDateFormat) => {\n setValue(update);\n props.onDateChange && props.onDateChange({ ...update });\n },\n [props],\n );\n\n const Cmp = hasPointer ? DatePickerCustom : DatePickerNative;\n return <Cmp {...props} {...value} onDateChange={onDateChange} />;\n};\n"],"names":["React","leadingZero","range","useAdaptivityHasPointer","CustomSelect","Input","RootComponent","DefaultMonths","convertToInputFormat","day","month","year","parseInputDate","date","splited","split","Number","getMonthMaxDay","Date","getDate","DatePickerCustom","name","min","max","dayPlaceholder","monthPlaceholder","yearPlaceholder","popupDirection","defaultValue","monthNames","onDateChange","disabled","restProps","onSelectChange","e","target","value","dayOptions","map","label","String","monthOptions","index","yearOptions","baseClassName","div","className","options","placeholder","onChange","input","type","DatePickerNative","defProps","onStringChange","useCallback","currentTarget","DatePicker","props","hasPointer","setValue","useState","update","Cmp"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { leadingZero } from '@vkontakte/vkjs';\nimport { range } from '../../helpers/range';\nimport { useAdaptivityHasPointer } from '../../hooks/useAdaptivityHasPointer';\nimport { HasOnlyExpectedProps, HTMLAttributesWithRootRef } from '../../types';\nimport { CustomSelect } from '../CustomSelect/CustomSelect';\nimport { Input, type InputProps } from '../Input/Input';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './DatePicker.module.css';\n\nconst DefaultMonths: string[] = [\n 'Января',\n 'Февраля',\n 'Марта',\n 'Апреля',\n 'Мая',\n 'Июня',\n 'Июля',\n 'Августа',\n 'Сентября',\n 'Октября',\n 'Ноября',\n 'Декабря',\n];\n\nexport type DatePickerDateFormat = {\n day: number;\n month: number;\n year: number;\n};\n\nexport interface DatePickerProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'defaultValue' | 'min' | 'max'> {\n min?: DatePickerDateFormat;\n max?: DatePickerDateFormat;\n name?: string;\n defaultValue?: DatePickerDateFormat;\n popupDirection?: 'top' | 'bottom';\n monthNames?: string[];\n dayPlaceholder?: string;\n monthPlaceholder?: string;\n yearPlaceholder?: string;\n onDateChange?: (value: DatePickerDateFormat) => void;\n disabled?: boolean;\n}\n\n// Переводим state к формату гг-мм-дд\nfunction convertToInputFormat({ day = 0, month = 0, year = 0 }: Partial<DatePickerDateFormat>) {\n return `${year}-${leadingZero(month)}-${leadingZero(day)}`;\n}\n\n// Переводим дату формата гг-мм-дд к объекту\nfunction parseInputDate(date: string): DatePickerDateFormat {\n const splited = date.split('-');\n\n return {\n day: Number(splited[2]),\n month: Number(splited[1]),\n year: Number(splited[0]),\n };\n}\n\nfunction getMonthMaxDay(month?: number, year?: number) {\n return month ? new Date(year || 2016, month, 0).getDate() : 31;\n}\n\nconst DatePickerCustom = ({\n name,\n min = { day: 0, month: 0, year: 0 },\n max = { day: 31, month: 12, year: 2100 },\n dayPlaceholder,\n monthPlaceholder,\n yearPlaceholder,\n popupDirection,\n defaultValue,\n monthNames,\n day = 0,\n month = 0,\n year = 0,\n onDateChange,\n disabled,\n ...restProps\n}: DatePickerProps & Partial<DatePickerDateFormat>) => {\n const onSelectChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {\n onDateChange?.({\n day,\n month,\n year,\n [e.target.name]: Number(e.target.value),\n });\n };\n const dayOptions = range(1, getMonthMaxDay(month, year)).map((value) => ({\n label: String(value),\n value,\n }));\n const monthOptions = (monthNames || DefaultMonths).map((name, index) => ({\n label: name,\n value: index + 1,\n }));\n const yearOptions = range(max.year, min.year).map((value) => ({\n label: String(value),\n value: value,\n }));\n return (\n <RootComponent baseClassName={styles['DatePicker']} {...restProps}>\n <div className={styles['DatePicker__container']}>\n <div className={styles['DatePicker__day']}>\n <CustomSelect\n name=\"day\"\n value={day}\n options={dayOptions}\n placeholder={dayPlaceholder}\n popupDirection={popupDirection}\n onChange={onSelectChange}\n disabled={disabled}\n />\n </div>\n <div className={styles['DatePicker__month']}>\n <CustomSelect\n className={styles['DatePicker__monthSelect']}\n name=\"month\"\n value={month}\n options={monthOptions}\n placeholder={monthPlaceholder}\n popupDirection={popupDirection}\n onChange={onSelectChange}\n disabled={disabled}\n />\n </div>\n <div className={styles['DatePicker__year']}>\n <CustomSelect\n name=\"year\"\n value={year}\n options={yearOptions}\n placeholder={yearPlaceholder}\n popupDirection={popupDirection}\n onChange={onSelectChange}\n disabled={disabled}\n />\n </div>\n </div>\n <input type=\"hidden\" name={name} value={convertToInputFormat({ day, month, year })} />\n </RootComponent>\n );\n};\n\nconst DatePickerNative = ({\n min = { day: 0, month: 0, year: 0 },\n max = { day: 31, month: 12, year: 2100 },\n monthNames,\n popupDirection,\n dayPlaceholder,\n monthPlaceholder,\n yearPlaceholder,\n defaultValue,\n day,\n month,\n year,\n onDateChange,\n ...restProps\n}: DatePickerProps & Partial<DatePickerDateFormat>) => {\n const defProps =\n day && month && year ? { defaultValue: convertToInputFormat({ day, month, year }) } : {};\n const onStringChange: React.ChangeEventHandler<HTMLInputElement> = React.useCallback(\n (e) => {\n onDateChange?.(parseInputDate(e.currentTarget.value));\n },\n [onDateChange],\n );\n const inputProps: HasOnlyExpectedProps<typeof restProps, InputProps> = restProps;\n return (\n <Input\n {...inputProps}\n type=\"date\"\n onChange={onStringChange}\n min={convertToInputFormat(min)}\n max={convertToInputFormat(max)}\n {...defProps}\n />\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DatePicker\n */\nexport const DatePicker = ({ defaultValue, ...props }: DatePickerProps) => {\n const hasPointer = useAdaptivityHasPointer();\n const [value, setValue] = React.useState<Partial<DatePickerDateFormat>>(() => ({\n day: defaultValue?.day || 0,\n month: defaultValue?.month || 0,\n year: defaultValue?.year || 0,\n }));\n\n const onDateChange = React.useCallback(\n (update: DatePickerDateFormat) => {\n setValue(update);\n props.onDateChange && props.onDateChange({ ...update });\n },\n [props],\n );\n\n const Cmp = hasPointer ? DatePickerCustom : DatePickerNative;\n return <Cmp {...props} {...value} onDateChange={onDateChange} />;\n};\n"],"names":["React","leadingZero","range","useAdaptivityHasPointer","CustomSelect","Input","RootComponent","DefaultMonths","convertToInputFormat","day","month","year","parseInputDate","date","splited","split","Number","getMonthMaxDay","Date","getDate","DatePickerCustom","name","min","max","dayPlaceholder","monthPlaceholder","yearPlaceholder","popupDirection","defaultValue","monthNames","onDateChange","disabled","restProps","onSelectChange","e","target","value","dayOptions","map","label","String","monthOptions","index","yearOptions","baseClassName","div","className","options","placeholder","onChange","input","type","DatePickerNative","defProps","onStringChange","useCallback","currentTarget","inputProps","DatePicker","props","hasPointer","setValue","useState","update","Cmp"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { format, isAfter, isMatch, parse } from '../../lib/date';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport { HasRootRef } from '../../types';\nimport { CalendarRange, CalendarRangeProps, DateRangeType } from '../CalendarRange/CalendarRange';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { Popper } from '../Popper/Popper';\nimport { Text } from '../Typography/Text/Text';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './DateRangeInput.module.css';\nimport dateInputStyles from '../DateInput/DateInput.module.css';\n\nconst sizeYClassNames = {\n none: styles['DateRangeInput--sizeY-none'],\n ['compact']: styles['DateRangeInput--sizeY-compact'],\n};\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 | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'changeDayLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldLabel?: string;\n showCalendarLabel?: string;\n changeStartDayLabel?: string;\n changeStartMonthLabel?: string;\n changeStartYearLabel?: string;\n changeEndDayLabel?: string;\n changeEndMonthLabel?: string;\n changeEndYearLabel?: string;\n disableCalendar?: boolean;\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\n/**\n * @see https://vkcom.github.io/VKUI/#/DateRangeInput\n */\nexport const DateRangeInput = ({\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 prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeDayLabel = 'Изменить день',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeStartDayLabel = 'Изменить день начала',\n changeStartMonthLabel = 'Изменить месяц начала',\n changeStartYearLabel = 'Изменить год начала',\n changeEndDayLabel = 'Изменить день окончания',\n changeEndMonthLabel = 'Изменить месяц окончания',\n changeEndYearLabel = 'Изменить год окончания',\n clearFieldLabel = 'Очистить поле',\n showCalendarLabel = 'Показать календарь',\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateRangeInputProps) => {\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 () => [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\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 = 'none' } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (newValue?: DateRangeType) => {\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 style={style}\n className={classNames(sizeY !== 'regular' && sizeYClassNames[sizeY], className)}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" onClick={clear}>\n <VisuallyHidden>{clearFieldLabel}</VisuallyHidden>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" onClick={openCalendar}>\n <VisuallyHidden>{showCalendarLabel}</VisuallyHidden>\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 <Text className={dateInputStyles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n label={changeStartDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n label={changeStartMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n label={changeStartYearLabel}\n />\n <InputLikeDivider>{' — '}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n label={changeEndDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n label={changeEndMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n label={changeEndYearLabel}\n />\n </Text>\n {open && !disableCalendar && (\n <Popper targetRef={rootRef} offsetByMainAxis={8} placement={calendarPlacement}>\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 prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n changeDayLabel={changeDayLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"names":["React","Icon16Clear","Icon20CalendarOutline","classNames","useAdaptivity","useDateInput","useExternRef","callMultiple","format","isAfter","isMatch","parse","CalendarRange","FormField","IconButton","InputLike","InputLikeDivider","Popper","Text","VisuallyHidden","sizeYClassNames","none","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","prevMonthLabel","nextMonthLabel","changeDayLabel","changeMonthLabel","changeYearLabel","changeStartDayLabel","changeStartMonthLabel","changeStartYearLabel","changeEndDayLabel","changeEndMonthLabel","changeEndYearLabel","clearFieldLabel","showCalendarLabel","prevMonthIcon","nextMonthIcon","disableCalendar","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","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","maxElement","sizeY","handleRootRef","onCalendarChange","after","hoverMode","input","type","onKeyDown","onElementSelect","label","targetRef","offsetByMainAxis","placement","onClose"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { format, isAfter, isMatch, parse } from '../../lib/date';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport { HasRootRef } from '../../types';\nimport { CalendarRange, CalendarRangeProps, DateRangeType } from '../CalendarRange/CalendarRange';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { Popper } from '../Popper/Popper';\nimport { Text } from '../Typography/Text/Text';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './DateRangeInput.module.css';\nimport dateInputStyles from '../DateInput/DateInput.module.css';\n\nconst sizeYClassNames = {\n none: styles['DateRangeInput--sizeY-none'],\n ['compact']: styles['DateRangeInput--sizeY-compact'],\n};\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 | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'changeDayLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldLabel?: string;\n showCalendarLabel?: string;\n changeStartDayLabel?: string;\n changeStartMonthLabel?: string;\n changeStartYearLabel?: string;\n changeEndDayLabel?: string;\n changeEndMonthLabel?: string;\n changeEndYearLabel?: string;\n disableCalendar?: boolean;\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\n/**\n * @see https://vkcom.github.io/VKUI/#/DateRangeInput\n */\nexport const DateRangeInput = ({\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 prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeDayLabel = 'Изменить день',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeStartDayLabel = 'Изменить день начала',\n changeStartMonthLabel = 'Изменить месяц начала',\n changeStartYearLabel = 'Изменить год начала',\n changeEndDayLabel = 'Изменить день окончания',\n changeEndMonthLabel = 'Изменить месяц окончания',\n changeEndYearLabel = 'Изменить год окончания',\n clearFieldLabel = 'Очистить поле',\n showCalendarLabel = 'Показать календарь',\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateRangeInputProps) => {\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 () => [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\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 = 'none' } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (newValue: DateRangeType | 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 style={style}\n className={classNames(sizeY !== 'regular' && sizeYClassNames[sizeY], className)}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" onClick={clear}>\n <VisuallyHidden>{clearFieldLabel}</VisuallyHidden>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" onClick={openCalendar}>\n <VisuallyHidden>{showCalendarLabel}</VisuallyHidden>\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 <Text className={dateInputStyles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n label={changeStartDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n label={changeStartMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n label={changeStartYearLabel}\n />\n <InputLikeDivider>{' — '}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n label={changeEndDayLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n label={changeEndMonthLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n label={changeEndYearLabel}\n />\n </Text>\n {open && !disableCalendar && (\n <Popper targetRef={rootRef} offsetByMainAxis={8} placement={calendarPlacement}>\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 prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n changeDayLabel={changeDayLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"names":["React","Icon16Clear","Icon20CalendarOutline","classNames","useAdaptivity","useDateInput","useExternRef","callMultiple","format","isAfter","isMatch","parse","CalendarRange","FormField","IconButton","InputLike","InputLikeDivider","Popper","Text","VisuallyHidden","sizeYClassNames","none","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","prevMonthLabel","nextMonthLabel","changeDayLabel","changeMonthLabel","changeYearLabel","changeStartDayLabel","changeStartMonthLabel","changeStartYearLabel","changeEndDayLabel","changeEndMonthLabel","changeEndYearLabel","clearFieldLabel","showCalendarLabel","prevMonthIcon","nextMonthIcon","disableCalendar","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","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","maxElement","sizeY","handleRootRef","onCalendarChange","after","hoverMode","input","type","onKeyDown","onElementSelect","label","targetRef","offsetByMainAxis","placement","onClose"],"mappings":"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"}
@@ -36,7 +36,9 @@ import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';
36
36
  style: style,
37
37
  getRootRef: getRootRef,
38
38
  disabled: restProps.disabled
39
- }, /*#__PURE__*/ React.createElement(VisuallyHidden, _object_spread_props(_object_spread({}, restProps), {
39
+ }, /*#__PURE__*/ React.createElement(VisuallyHidden, _object_spread_props(_object_spread({
40
+ title: ""
41
+ }, restProps), {
40
42
  Component: "input",
41
43
  type: "file",
42
44
  getRootRef: getRef
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/File/File.tsx"],"sourcesContent":["import * as React from 'react';\nimport { HasRef, HasRootRef } from '../../types';\nimport { Button, VKUIButtonProps } from '../Button/Button';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\n\nexport interface FileProps\n extends Omit<VKUIButtonProps, 'type'>,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'>,\n HasRef<HTMLInputElement>,\n HasRootRef<HTMLElement> {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/File\n */\nexport const File = ({\n children = 'Выберите файл',\n align = 'left',\n size,\n mode,\n stretched,\n before,\n after,\n loading,\n className,\n style,\n getRef,\n getRootRef,\n appearance,\n ...restProps\n}: FileProps) => {\n return (\n <Button\n Component=\"label\"\n align={align}\n className={className}\n stretched={stretched}\n mode={mode}\n appearance={appearance}\n size={size}\n before={before}\n after={after}\n loading={loading}\n style={style}\n getRootRef={getRootRef}\n disabled={restProps.disabled}\n >\n <VisuallyHidden {...restProps} Component=\"input\" type=\"file\" getRootRef={getRef} />\n {children}\n </Button>\n );\n};\n"],"names":["React","Button","VisuallyHidden","File","children","align","size","mode","stretched","before","after","loading","className","style","getRef","getRootRef","appearance","restProps","Component","disabled","type"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,MAAM,QAAyB,mBAAmB;AAC3D,SAASC,cAAc,QAAQ,mCAAmC;AAQlE;;CAEC,GACD,OAAO,MAAMC,OAAO;QAAC,EACnBC,WAAW,eAAe,EAC1BC,QAAQ,MAAM,EACdC,IAAI,EACJC,IAAI,EACJC,SAAS,EACTC,MAAM,EACNC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,KAAK,EACLC,MAAM,EACNC,UAAU,EACVC,UAAU,EAEA,WADPC;QAbHb;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,qBACE,oBAACf;QACCiB,WAAU;QACVb,OAAOA;QACPO,WAAWA;QACXJ,WAAWA;QACXD,MAAMA;QACNS,YAAYA;QACZV,MAAMA;QACNG,QAAQA;QACRC,OAAOA;QACPC,SAASA;QACTE,OAAOA;QACPE,YAAYA;QACZI,UAAUF,UAAUE,QAAQ;qBAE5B,oBAACjB,wDAAmBe;QAAWC,WAAU;QAAQE,MAAK;QAAOL,YAAYD;SACxEV;AAGP,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/File/File.tsx"],"sourcesContent":["import * as React from 'react';\nimport { HasRef, HasRootRef } from '../../types';\nimport { Button, VKUIButtonProps } from '../Button/Button';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\n\nexport interface FileProps\n extends Omit<VKUIButtonProps, 'type'>,\n Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'>,\n HasRef<HTMLInputElement>,\n HasRootRef<HTMLElement> {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/File\n */\nexport const File = ({\n children = 'Выберите файл',\n align = 'left',\n size,\n mode,\n stretched,\n before,\n after,\n loading,\n className,\n style,\n getRef,\n getRootRef,\n appearance,\n ...restProps\n}: FileProps) => {\n return (\n <Button\n Component=\"label\"\n align={align}\n className={className}\n stretched={stretched}\n mode={mode}\n appearance={appearance}\n size={size}\n before={before}\n after={after}\n loading={loading}\n style={style}\n getRootRef={getRootRef}\n disabled={restProps.disabled}\n >\n <VisuallyHidden title=\"\" {...restProps} Component=\"input\" type=\"file\" getRootRef={getRef} />\n {children}\n </Button>\n );\n};\n"],"names":["React","Button","VisuallyHidden","File","children","align","size","mode","stretched","before","after","loading","className","style","getRef","getRootRef","appearance","restProps","Component","disabled","title","type"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,MAAM,QAAyB,mBAAmB;AAC3D,SAASC,cAAc,QAAQ,mCAAmC;AAQlE;;CAEC,GACD,OAAO,MAAMC,OAAO;QAAC,EACnBC,WAAW,eAAe,EAC1BC,QAAQ,MAAM,EACdC,IAAI,EACJC,IAAI,EACJC,SAAS,EACTC,MAAM,EACNC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,KAAK,EACLC,MAAM,EACNC,UAAU,EACVC,UAAU,EAEA,WADPC;QAbHb;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,qBACE,oBAACf;QACCiB,WAAU;QACVb,OAAOA;QACPO,WAAWA;QACXJ,WAAWA;QACXD,MAAMA;QACNS,YAAYA;QACZV,MAAMA;QACNG,QAAQA;QACRC,OAAOA;QACPC,SAASA;QACTE,OAAOA;QACPE,YAAYA;QACZI,UAAUF,UAAUE,QAAQ;qBAE5B,oBAACjB;QAAekB,OAAM;OAAOH;QAAWC,WAAU;QAAQG,MAAK;QAAON,YAAYD;SACjFV;AAGP,EAAE"}
@@ -4,7 +4,7 @@ export interface FocusTrapProps<T extends HTMLElement = HTMLElement> extends Rea
4
4
  autoFocus?: boolean;
5
5
  restoreFocus?: boolean | (() => boolean);
6
6
  timeout?: number;
7
- onClose?(): void;
7
+ onClose?: () => void;
8
8
  }
9
9
  /**
10
10
  * @see https://vkcom.github.io/VKUI/#/FocusTrap
@@ -1 +1 @@
1
- {"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../../src/components/FocusTrap/FocusTrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIvD,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CACjE,SAAQ,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAChC,UAAU,CAAC,CAAC,CAAC,EACb,YAAY;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,6KAkJrB,CAAC"}
1
+ {"version":3,"file":"FocusTrap.d.ts","sourceRoot":"","sources":["../../../src/components/FocusTrap/FocusTrap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIvD,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CACjE,SAAQ,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAChC,UAAU,CAAC,CAAC,CAAC,EACb,YAAY;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,6KAmJrB,CAAC"}
@@ -112,6 +112,7 @@ const FOCUSABLE_ELEMENTS = FOCUSABLE_ELEMENTS_LIST.join();
112
112
  case Keys.ESCAPE:
113
113
  {
114
114
  if (onClose) {
115
+ event.preventDefault();
115
116
  onClose();
116
117
  }
117
118
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FocusTrap/FocusTrap.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { FOCUSABLE_ELEMENTS_LIST, Keys, pressedKey } from '../../lib/accessibility';\nimport {\n contains,\n getActiveElementByAnotherElement,\n getWindow,\n isHTMLElement,\n} from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { AppRootContext } from '../AppRoot/AppRootContext';\n\nconst FOCUSABLE_ELEMENTS: string = FOCUSABLE_ELEMENTS_LIST.join();\nexport interface FocusTrapProps<T extends HTMLElement = HTMLElement>\n extends React.AllHTMLAttributes<T>,\n HasRootRef<T>,\n HasComponent {\n autoFocus?: boolean;\n restoreFocus?: boolean | (() => boolean);\n timeout?: number;\n onClose?(): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FocusTrap\n */\nexport const FocusTrap = <T extends HTMLElement = HTMLElement>({\n Component = 'div',\n onClose,\n autoFocus = true,\n restoreFocus = true,\n timeout = 0,\n getRootRef,\n children,\n ...restProps\n}: FocusTrapProps<T>) => {\n const ref = useExternRef<T>(getRootRef);\n\n const { keyboardInput } = React.useContext(AppRootContext);\n const focusableNodesRef = React.useRef<HTMLElement[]>([]);\n\n useIsomorphicLayoutEffect(\n function collectFocusableNodesRef() {\n if (!ref.current) {\n return;\n }\n\n const nodes: HTMLElement[] = [];\n // eslint-disable-next-line no-restricted-properties\n ref.current.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS).forEach((focusableEl) => {\n const { display, visibility } = getComputedStyle(focusableEl);\n if (display !== 'none' && visibility !== 'hidden') {\n nodes.push(focusableEl);\n }\n });\n\n if (nodes.length === 0) {\n // Чтобы фокус был хотя бы на родителе\n nodes.push(ref.current);\n }\n\n focusableNodesRef.current = nodes;\n },\n [children],\n );\n\n useIsomorphicLayoutEffect(\n function tryToAutoFocusToFirstNode() {\n if (!ref.current || !autoFocus || !keyboardInput) {\n return;\n }\n const autoFocusToFirstNode = () => {\n if (!ref.current || !focusableNodesRef.current.length) {\n return;\n }\n const activeElement = getActiveElementByAnotherElement(ref.current);\n if (!contains(ref.current, activeElement)) {\n focusableNodesRef.current[0].focus();\n }\n };\n const timeoutId = setTimeout(autoFocusToFirstNode, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n },\n [autoFocus, timeout, keyboardInput],\n );\n\n useIsomorphicLayoutEffect(\n function tryToRestoreFocusOnUnmount() {\n if (!ref.current || !restoreFocus) {\n return;\n }\n\n const restoreFocusTo = getActiveElementByAnotherElement(ref.current);\n\n return () => {\n const shouldRestoreFocus =\n typeof restoreFocus === 'function' ? restoreFocus() : restoreFocus;\n\n if (!shouldRestoreFocus || !isHTMLElement(restoreFocusTo)) {\n return;\n }\n\n setTimeout(() => {\n if (restoreFocusTo) {\n restoreFocusTo.focus();\n }\n }, timeout);\n };\n },\n [restoreFocus, timeout],\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const onDocumentKeydown = (event: KeyboardEvent) => {\n const pressedKeyResult = pressedKey(event);\n\n switch (pressedKeyResult) {\n case Keys.TAB: {\n if (!focusableNodesRef.current.length) {\n return false;\n }\n\n const lastIdx = focusableNodesRef.current.length - 1;\n const targetIdx = focusableNodesRef.current.findIndex((node) => node === event.target);\n\n const shouldFocusFirstNode =\n targetIdx === -1 || (targetIdx === lastIdx && !event.shiftKey);\n\n if (shouldFocusFirstNode || (targetIdx === 0 && event.shiftKey)) {\n event.preventDefault();\n\n const node = focusableNodesRef.current[shouldFocusFirstNode ? 0 : lastIdx];\n\n if (node !== getActiveElementByAnotherElement(node)) {\n node.focus();\n }\n\n return false;\n }\n\n break;\n }\n case Keys.ESCAPE: {\n if (onClose) {\n onClose();\n }\n }\n }\n\n return true;\n };\n\n const doc = getWindow(ref.current).document;\n doc.addEventListener('keydown', onDocumentKeydown, {\n capture: true,\n });\n return () => {\n doc.removeEventListener('keydown', onDocumentKeydown, true);\n };\n }, [onClose, ref]);\n\n return (\n <Component tabIndex={-1} ref={ref} {...restProps}>\n {children}\n </Component>\n );\n};\n"],"names":["React","useExternRef","FOCUSABLE_ELEMENTS_LIST","Keys","pressedKey","contains","getActiveElementByAnotherElement","getWindow","isHTMLElement","useIsomorphicLayoutEffect","AppRootContext","FOCUSABLE_ELEMENTS","join","FocusTrap","Component","onClose","autoFocus","restoreFocus","timeout","getRootRef","children","restProps","ref","keyboardInput","useContext","focusableNodesRef","useRef","collectFocusableNodesRef","current","nodes","querySelectorAll","forEach","focusableEl","display","visibility","getComputedStyle","push","length","tryToAutoFocusToFirstNode","autoFocusToFirstNode","activeElement","focus","timeoutId","setTimeout","clearTimeout","tryToRestoreFocusOnUnmount","restoreFocusTo","shouldRestoreFocus","onDocumentKeydown","event","pressedKeyResult","TAB","lastIdx","targetIdx","findIndex","node","target","shouldFocusFirstNode","shiftKey","preventDefault","ESCAPE","doc","document","addEventListener","capture","removeEventListener","tabIndex"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/FocusTrap/FocusTrap.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { FOCUSABLE_ELEMENTS_LIST, Keys, pressedKey } from '../../lib/accessibility';\nimport {\n contains,\n getActiveElementByAnotherElement,\n getWindow,\n isHTMLElement,\n} from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { AppRootContext } from '../AppRoot/AppRootContext';\n\nconst FOCUSABLE_ELEMENTS: string = FOCUSABLE_ELEMENTS_LIST.join();\nexport interface FocusTrapProps<T extends HTMLElement = HTMLElement>\n extends React.AllHTMLAttributes<T>,\n HasRootRef<T>,\n HasComponent {\n autoFocus?: boolean;\n restoreFocus?: boolean | (() => boolean);\n timeout?: number;\n onClose?: () => void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FocusTrap\n */\nexport const FocusTrap = <T extends HTMLElement = HTMLElement>({\n Component = 'div',\n onClose,\n autoFocus = true,\n restoreFocus = true,\n timeout = 0,\n getRootRef,\n children,\n ...restProps\n}: FocusTrapProps<T>) => {\n const ref = useExternRef<T>(getRootRef);\n\n const { keyboardInput } = React.useContext(AppRootContext);\n const focusableNodesRef = React.useRef<HTMLElement[]>([]);\n\n useIsomorphicLayoutEffect(\n function collectFocusableNodesRef() {\n if (!ref.current) {\n return;\n }\n\n const nodes: HTMLElement[] = [];\n // eslint-disable-next-line no-restricted-properties\n ref.current.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS).forEach((focusableEl) => {\n const { display, visibility } = getComputedStyle(focusableEl);\n if (display !== 'none' && visibility !== 'hidden') {\n nodes.push(focusableEl);\n }\n });\n\n if (nodes.length === 0) {\n // Чтобы фокус был хотя бы на родителе\n nodes.push(ref.current);\n }\n\n focusableNodesRef.current = nodes;\n },\n [children],\n );\n\n useIsomorphicLayoutEffect(\n function tryToAutoFocusToFirstNode() {\n if (!ref.current || !autoFocus || !keyboardInput) {\n return;\n }\n const autoFocusToFirstNode = () => {\n if (!ref.current || !focusableNodesRef.current.length) {\n return;\n }\n const activeElement = getActiveElementByAnotherElement(ref.current);\n if (!contains(ref.current, activeElement)) {\n focusableNodesRef.current[0].focus();\n }\n };\n const timeoutId = setTimeout(autoFocusToFirstNode, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n },\n [autoFocus, timeout, keyboardInput],\n );\n\n useIsomorphicLayoutEffect(\n function tryToRestoreFocusOnUnmount() {\n if (!ref.current || !restoreFocus) {\n return;\n }\n\n const restoreFocusTo = getActiveElementByAnotherElement(ref.current);\n\n return () => {\n const shouldRestoreFocus =\n typeof restoreFocus === 'function' ? restoreFocus() : restoreFocus;\n\n if (!shouldRestoreFocus || !isHTMLElement(restoreFocusTo)) {\n return;\n }\n\n setTimeout(() => {\n if (restoreFocusTo) {\n restoreFocusTo.focus();\n }\n }, timeout);\n };\n },\n [restoreFocus, timeout],\n );\n\n useIsomorphicLayoutEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const onDocumentKeydown = (event: KeyboardEvent) => {\n const pressedKeyResult = pressedKey(event);\n\n switch (pressedKeyResult) {\n case Keys.TAB: {\n if (!focusableNodesRef.current.length) {\n return false;\n }\n\n const lastIdx = focusableNodesRef.current.length - 1;\n const targetIdx = focusableNodesRef.current.findIndex((node) => node === event.target);\n\n const shouldFocusFirstNode =\n targetIdx === -1 || (targetIdx === lastIdx && !event.shiftKey);\n\n if (shouldFocusFirstNode || (targetIdx === 0 && event.shiftKey)) {\n event.preventDefault();\n\n const node = focusableNodesRef.current[shouldFocusFirstNode ? 0 : lastIdx];\n\n if (node !== getActiveElementByAnotherElement(node)) {\n node.focus();\n }\n\n return false;\n }\n\n break;\n }\n case Keys.ESCAPE: {\n if (onClose) {\n event.preventDefault();\n onClose();\n }\n }\n }\n\n return true;\n };\n\n const doc = getWindow(ref.current).document;\n doc.addEventListener('keydown', onDocumentKeydown, {\n capture: true,\n });\n return () => {\n doc.removeEventListener('keydown', onDocumentKeydown, true);\n };\n }, [onClose, ref]);\n\n return (\n <Component tabIndex={-1} ref={ref} {...restProps}>\n {children}\n </Component>\n );\n};\n"],"names":["React","useExternRef","FOCUSABLE_ELEMENTS_LIST","Keys","pressedKey","contains","getActiveElementByAnotherElement","getWindow","isHTMLElement","useIsomorphicLayoutEffect","AppRootContext","FOCUSABLE_ELEMENTS","join","FocusTrap","Component","onClose","autoFocus","restoreFocus","timeout","getRootRef","children","restProps","ref","keyboardInput","useContext","focusableNodesRef","useRef","collectFocusableNodesRef","current","nodes","querySelectorAll","forEach","focusableEl","display","visibility","getComputedStyle","push","length","tryToAutoFocusToFirstNode","autoFocusToFirstNode","activeElement","focus","timeoutId","setTimeout","clearTimeout","tryToRestoreFocusOnUnmount","restoreFocusTo","shouldRestoreFocus","onDocumentKeydown","event","pressedKeyResult","TAB","lastIdx","targetIdx","findIndex","node","target","shouldFocusFirstNode","shiftKey","preventDefault","ESCAPE","doc","document","addEventListener","capture","removeEventListener","tabIndex"],"mappings":"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"}
@@ -7,5 +7,5 @@ export interface FormStatusProps extends HTMLAttributesWithRootRef<HTMLDivElemen
7
7
  /**
8
8
  * @see https://vkcom.github.io/VKUI/#/FormStatus
9
9
  */
10
- export declare const FormStatus: ({ mode, children, className, ...restProps }: FormStatusProps) => React.JSX.Element;
10
+ export declare const FormStatus: ({ mode, children, className, role, ...restProps }: FormStatusProps) => React.JSX.Element;
11
11
  //# sourceMappingURL=FormStatus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormStatus.d.ts","sourceRoot":"","sources":["../../../src/components/FormStatus/FormStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAIxD,MAAM,WAAW,eAAgB,SAAQ,yBAAyB,CAAC,cAAc,CAAC;IAChF,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,gDAAiD,eAAe,sBAatF,CAAC"}
1
+ {"version":3,"file":"FormStatus.d.ts","sourceRoot":"","sources":["../../../src/components/FormStatus/FormStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAIxD,MAAM,WAAW,eAAgB,SAAQ,yBAAyB,CAAC,cAAc,CAAC;IAChF,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,sDAMpB,eAAe,sBAcjB,CAAC"}
@@ -7,12 +7,14 @@ import { Banner } from '../Banner/Banner';
7
7
  /**
8
8
  * @see https://vkcom.github.io/VKUI/#/FormStatus
9
9
  */ export const FormStatus = (_param)=>{
10
- var { mode, children, className } = _param, restProps = _object_without_properties(_param, [
10
+ var { mode, children, className, role = mode === 'error' ? 'alert' : 'status' } = _param, restProps = _object_without_properties(_param, [
11
11
  "mode",
12
12
  "children",
13
- "className"
13
+ "className",
14
+ "role"
14
15
  ]);
15
16
  return /*#__PURE__*/ React.createElement(Banner, _object_spread_props(_object_spread({}, restProps), {
17
+ role: role,
16
18
  subheader: children,
17
19
  className: classNames('vkuiInternalFormStatus', mode === 'error' && classNames("vkuiFormStatus--mode-error", 'vkuiInternalFormStatus--mode-error'), className)
18
20
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/FormStatus/FormStatus.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { Banner } from '../Banner/Banner';\nimport styles from './FormStatus.module.css';\n\nexport interface FormStatusProps extends HTMLAttributesWithRootRef<HTMLDivElement> {\n mode?: 'default' | 'error';\n header?: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FormStatus\n */\nexport const FormStatus = ({ mode, children, className, ...restProps }: FormStatusProps) => {\n return (\n <Banner\n {...restProps}\n subheader={children}\n className={classNames(\n 'vkuiInternalFormStatus',\n mode === 'error' &&\n classNames(styles['FormStatus--mode-error'], 'vkuiInternalFormStatus--mode-error'),\n className,\n )}\n />\n );\n};\n"],"names":["React","classNames","Banner","FormStatus","mode","children","className","restProps","subheader"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAE7C,SAASC,MAAM,QAAQ,mBAAmB;AAQ1C;;CAEC,GACD,OAAO,MAAMC,aAAa;QAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,SAAS,EAAiC,WAA5BC;QAA9BH;QAAMC;QAAUC;;IAC3C,qBACE,oBAACJ,gDACKK;QACJC,WAAWH;QACXC,WAAWL,WACT,0BACAG,SAAS,WACPH,yCAA6C,uCAC/CK;;AAIR,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/FormStatus/FormStatus.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { Banner } from '../Banner/Banner';\nimport styles from './FormStatus.module.css';\n\nexport interface FormStatusProps extends HTMLAttributesWithRootRef<HTMLDivElement> {\n mode?: 'default' | 'error';\n header?: React.ReactNode;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FormStatus\n */\nexport const FormStatus = ({\n mode,\n children,\n className,\n role = mode === 'error' ? 'alert' : 'status',\n ...restProps\n}: FormStatusProps) => {\n return (\n <Banner\n {...restProps}\n role={role}\n subheader={children}\n className={classNames(\n 'vkuiInternalFormStatus',\n mode === 'error' &&\n classNames(styles['FormStatus--mode-error'], 'vkuiInternalFormStatus--mode-error'),\n className,\n )}\n />\n );\n};\n"],"names":["React","classNames","Banner","FormStatus","mode","children","className","role","restProps","subheader"],"mappings":";;;AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAE7C,SAASC,MAAM,QAAQ,mBAAmB;AAQ1C;;CAEC,GACD,OAAO,MAAMC,aAAa;QAAC,EACzBC,IAAI,EACJC,QAAQ,EACRC,SAAS,EACTC,OAAOH,SAAS,UAAU,UAAU,QAAQ,EAE5B,WADbI;QAJHJ;QACAC;QACAC;QACAC;;IAGA,qBACE,oBAACL,gDACKM;QACJD,MAAMA;QACNE,WAAWJ;QACXC,WAAWL,WACT,0BACAG,SAAS,WACPH,yCAA6C,uCAC/CK;;AAIR,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalScroll.d.ts","sourceRoot":"","sources":["../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAqBhE,MAAM,MAAM,qBAAqB,GAAG,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;AAExE,MAAM,WAAW,qBACf,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAC/C,MAAM,CAAC,cAAc,CAAC;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC;;OAEG;IACH,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AA2GD;;GAEG;AACH,eAAO,MAAM,gBAAgB,0JAW1B,qBAAqB,sBAmJvB,CAAC"}
1
+ {"version":3,"file":"HorizontalScroll.d.ts","sourceRoot":"","sources":["../../../src/components/HorizontalScroll/HorizontalScroll.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,EAAE,MAAM,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAqBhE,MAAM,MAAM,qBAAqB,GAAG,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;AAExE,MAAM,WAAW,qBACf,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAC/C,MAAM,CAAC,cAAc,CAAC;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC;;OAEG;IACH,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,SAAS,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AA2GD;;GAEG;AACH,eAAO,MAAM,gBAAgB,0JAW1B,qBAAqB,sBAqJvB,CAAC"}
@@ -204,6 +204,7 @@ function doScroll({ scrollElement, getScrollPosition, animationQueue, onScrollTo
204
204
  offsetY: arrowOffsetY,
205
205
  direction: "left",
206
206
  "aria-hidden": true,
207
+ tabIndex: -1,
207
208
  className: classNames("vkuiHorizontalScroll__arrow", "vkuiHorizontalScroll__arrowLeft"),
208
209
  onClick: scrollToLeft
209
210
  }), showArrows && (hasPointer || hasPointer === undefined) && canScrollRight && /*#__PURE__*/ React.createElement(ScrollArrow, {
@@ -212,6 +213,7 @@ function doScroll({ scrollElement, getScrollPosition, animationQueue, onScrollTo
212
213
  offsetY: arrowOffsetY,
213
214
  direction: "right",
214
215
  "aria-hidden": true,
216
+ tabIndex: -1,
215
217
  className: classNames("vkuiHorizontalScroll__arrow", "vkuiHorizontalScroll__arrowRight"),
216
218
  onClick: scrollToRight
217
219
  }), /*#__PURE__*/ React.createElement("div", {