@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/ChipsSelect/ChipsSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalOnClickOutside } from '../../hooks/useGlobalOnClickOutside';\nimport { Keys } from '../../lib/accessibility';\nimport type { Placement } from '../../lib/floating';\nimport { defaultFilterFn } from '../../lib/select';\nimport { ChipsInputBase } from '../ChipsInputBase/ChipsInputBase';\nimport {\n getNewOptionDataDefault,\n getOptionLabelDefault,\n getOptionValueDefault,\n renderChipDefault,\n} from '../ChipsInputBase/constants';\nimport type { ChipOption, ChipsInputBaseProps } from '../ChipsInputBase/types';\nimport { CustomSelectDropdown } from '../CustomSelectDropdown/CustomSelectDropdown';\nimport {\n CustomSelectOption,\n type CustomSelectOptionProps,\n} from '../CustomSelectOption/CustomSelectOption';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport type { FormFieldProps } from '../FormField/FormField';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport {\n DEFAULT_EMPTY_TEXT,\n DEFAULT_SELECTED_BEHAVIOR,\n FOCUS_ACTION_NEXT,\n FOCUS_ACTION_PREV,\n isCreateNewOptionPreset,\n isEmptyOptionPreset,\n isNotServicePreset,\n renderOptionDefault,\n} from './constants';\nimport type { FocusActionType, OptionPreset } from './types';\nimport { useChipsSelect, type UseChipsSelectProps } from './useChipsSelect';\nimport styles from './ChipsSelect.module.css';\n\nconst stylesDropdownVerticalPlacement = {\n top: styles['ChipsSelect--pop-up'],\n bottom: styles['ChipsSelect--pop-down'],\n} as const;\n\nconst findIndexAfter = <O extends ChipOption>(\n options: Array<OptionPreset<O>> = [],\n startIndex = -1,\n) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex(\n (option, i) => i > startIndex && (!isNotServicePreset(option) || !option.disabled),\n );\n};\n\nconst findIndexBefore = <O extends ChipOption>(\n options: Array<OptionPreset<O>> = [],\n endIndex: number = options.length,\n) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!isNotServicePreset(option) || !option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nexport interface ChipsSelectProps<O extends ChipOption>\n extends ChipsInputBaseProps<O>,\n UseChipsSelectProps<O>,\n Pick<FormFieldProps, 'status' | 'mode' | 'before'> {\n placement?: 'top' | 'bottom';\n /**\n * Отрисовка Spinner вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n /**\n * Закрытие выпадающего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n /**\n * Ширина раскрывающегося списка зависит от контента\n */\n dropdownAutoWidth?: boolean;\n /**\n * Принудительно использовать портал.\n */\n forceDropdownPortal?: boolean;\n /**\n * Передача `data-testid`.\n */\n dropdownTestId?: string;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n /**\n * Добавляет значение в список на событие `onBlur` (использовать вместе с `creatable`)\n */\n addOnBlur?: boolean;\n /**\n * Отключает максимальную высоту по умолчанию\n */\n noMaxHeight?: boolean;\n\n renderOption?(props: CustomSelectOptionProps, option: O): React.ReactNode;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?(event: React.MouseEvent | React.KeyboardEvent, option: O): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ChipsSelect\n */\nexport const ChipsSelect = <Option extends ChipOption>({\n // FormFieldProps\n id: labelledbyId,\n getRootRef,\n className,\n status = 'default',\n icon: dropdownIconProp,\n onChangeStart,\n\n // CustomSelectDropdownProps\n options: optionsProp,\n placement: placementProp = 'bottom',\n closeAfterSelect = true,\n selectedBehavior = DEFAULT_SELECTED_BEHAVIOR,\n emptyText = DEFAULT_EMPTY_TEXT,\n creatable = false,\n fetching = false,\n dropdownAutoWidth,\n forceDropdownPortal,\n noMaxHeight = false,\n filterFn = defaultFilterFn,\n dropdownTestId,\n\n // ChipsInputProps\n getRef,\n value: valueProp,\n defaultValue,\n inputValue: inputValueProp,\n defaultInputValue,\n disabled,\n readOnly,\n getOptionValue = getOptionValueDefault,\n getOptionLabel = getOptionLabelDefault,\n getNewOptionData = getNewOptionDataDefault,\n renderChip = renderChipDefault,\n renderOption = renderOptionDefault,\n onChange,\n onFocus: onFocusProp,\n onInputChange: onInputChangeProp,\n onBlur: onBlurProp,\n onKeyDown: onKeyDownProp,\n ...restProps\n}: ChipsSelectProps<Option>) => {\n const {\n // Связано с ChipsInputProps\n // option\n value,\n addOptionFromInput,\n addOption,\n removeOption,\n // input\n inputRef: inputRefHook,\n inputValue,\n clearInput,\n onInputChange,\n\n // Связано с CustomSelectDropdownProps\n options,\n opened,\n setOpened,\n focusedOption,\n focusedOptionIndex,\n setFocusedOption,\n setFocusedOptionIndex,\n } = useChipsSelect({\n // option\n value: valueProp,\n defaultValue,\n onChange,\n getOptionValue,\n getOptionLabel,\n getNewOptionData,\n\n // input\n inputValue: inputValueProp,\n defaultInputValue,\n onInputChange: onInputChangeProp,\n\n // dropdown\n options: optionsProp,\n emptyText,\n creatable,\n filterFn,\n selectedBehavior,\n\n // other\n disabled,\n });\n\n // Связано с ChipsInputProps\n const rootRef = useExternRef(getRootRef);\n const inputRef = useExternRef(getRef, inputRefHook);\n\n // Связано с CustomSelectDropdownProps\n const [dropdownVerticalPlacement, setDropdownVerticalPlacement] = React.useState<\n Extract<Placement, 'top' | 'bottom'> | undefined\n >(placementProp);\n const dropdownId = React.useId();\n const dropdownCurrentItemId =\n focusedOptionIndex !== null ? `${dropdownId}-${focusedOptionIndex}` : undefined;\n const dropdownScrollBoxRef = React.useRef<HTMLDivElement>(null);\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onFocusProp) {\n onFocusProp(event);\n }\n\n if (!readOnly) {\n setOpened(true);\n setFocusedOptionIndex(null);\n }\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onBlurProp) {\n onBlurProp(event);\n }\n\n // Не добавляем значение, если его нужно выбрать строго из списка\n if (!readOnly && !event.defaultPrevented && !creatable) {\n event.preventDefault();\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = dropdownScrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n /* istanbul ignore if: невозможный кейс (в SSR вызова этой функции не будет) */\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n /* istanbul ignore next: нет представления как воспроизвести */\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n };\n\n const focusOptionByIndex = (index: number, oldIndex: number | null) => {\n const length = options.length;\n\n if (index < 0) {\n index = length - 1;\n } else if (index >= length) {\n index = 0;\n }\n\n if (index === oldIndex) {\n /* istanbul ignore next: нет представления как воспроизвести */\n return;\n }\n\n const option = options[index];\n\n if (isNotServicePreset(option) && option.disabled) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number | null, type: FocusActionType) => {\n let index = nextIndex === null ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n const nextIndex = findIndexAfter(options, index);\n index = nextIndex === -1 ? findIndexAfter(options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === FOCUS_ACTION_PREV) {\n const beforeIndex = findIndexBefore(options, index);\n index = beforeIndex === -1 ? findIndexBefore(options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n focusOptionByIndex(index, focusedOptionIndex);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDownProp) {\n onKeyDownProp(event);\n }\n\n if (event.defaultPrevented || readOnly) {\n return;\n }\n\n switch (event.key) {\n case Keys.ARROW_UP:\n case Keys.ARROW_DOWN:\n event.preventDefault();\n\n if (!opened) {\n setOpened(true);\n focusOption(null, FOCUS_ACTION_NEXT);\n } else {\n focusOption(\n focusedOptionIndex,\n event.key === Keys.ARROW_UP ? FOCUS_ACTION_PREV : FOCUS_ACTION_NEXT,\n );\n }\n break;\n case Keys.ENTER: {\n if (!opened) {\n break;\n }\n if (focusedOptionIndex != null) {\n const foundOption = options[focusedOptionIndex];\n if (foundOption && isNotServicePreset(foundOption)) {\n event.preventDefault();\n\n if (onChangeStart) {\n onChangeStart(event, foundOption);\n }\n\n addOption(foundOption);\n setFocusedOptionIndex(null);\n clearInput();\n if (closeAfterSelect) {\n setOpened(false);\n }\n\n break;\n }\n }\n\n if (!creatable) {\n event.preventDefault();\n }\n break;\n }\n case Keys.ESCAPE:\n case Keys.TAB:\n if (opened) {\n setOpened(false);\n }\n }\n };\n\n React.useEffect(() => {\n if (focusedOptionIndex === null) {\n setFocusedOption(null);\n } else {\n const foundFocusedOptionIndex = options[focusedOptionIndex];\n\n if (foundFocusedOptionIndex && isNotServicePreset(foundFocusedOptionIndex)) {\n setFocusedOption(foundFocusedOptionIndex);\n }\n }\n }, [options, focusedOptionIndex, setFocusedOption]);\n\n const onDropdownPlacementChange = React.useCallback((placement: Placement) => {\n /* istanbul ignore next: */\n if (placement.startsWith('top')) {\n setDropdownVerticalPlacement('top');\n } else if (placement.startsWith('bottom')) {\n setDropdownVerticalPlacement('bottom');\n }\n }, []);\n\n const onDropdownMouseLeave = React.useCallback(() => {\n setFocusedOptionIndex(null);\n }, [setFocusedOptionIndex]);\n\n const handleClickOutside = React.useCallback(() => {\n setOpened(false);\n }, [setOpened]);\n\n useGlobalOnClickOutside(\n handleClickOutside,\n opened ? rootRef : null,\n opened ? dropdownScrollBoxRef : null,\n );\n\n return (\n <>\n <ChipsInputBase\n {...restProps}\n disabled={disabled}\n readOnly={readOnly}\n // FormFieldProps\n id={labelledbyId}\n getRootRef={rootRef}\n className={classNames(\n styles['ChipsSelect'],\n opened &&\n dropdownVerticalPlacement &&\n stylesDropdownVerticalPlacement[dropdownVerticalPlacement],\n className,\n )}\n status={status}\n after={dropdownIconProp || <DropdownIcon opened={opened} />}\n // option\n value={value}\n onAddChipOption={addOptionFromInput}\n onRemoveChipOption={removeOption}\n renderChip={renderChip}\n // input\n getRef={inputRef}\n inputValue={inputValue}\n onInputChange={onInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n // a11y\n role=\"combobox\"\n aria-expanded={opened}\n aria-autocomplete=\"list\"\n aria-controls={opened ? dropdownId : undefined}\n aria-activedescendant={opened ? dropdownCurrentItemId : undefined}\n aria-haspopup=\"listbox\"\n />\n {opened && (\n <CustomSelectDropdown\n data-testid={dropdownTestId}\n targetRef={rootRef}\n placement={placementProp}\n scrollBoxRef={dropdownScrollBoxRef}\n onPlacementChange={onDropdownPlacementChange}\n onMouseLeave={onDropdownMouseLeave}\n fetching={fetching}\n autoWidth={dropdownAutoWidth}\n forcePortal={forceDropdownPortal}\n noMaxHeight={noMaxHeight}\n // a11y\n id={dropdownId}\n role=\"listbox\"\n aria-labelledby={labelledbyId}\n >\n {options.map((option, index) => {\n const dropdownItemId = `${dropdownId}-${index}`;\n\n if (isEmptyOptionPreset(option)) {\n return (\n <Footnote key=\"empty-text\" className={styles['ChipsSelect__empty']}>\n {option.placeholder}\n </Footnote>\n );\n }\n if (isCreateNewOptionPreset(option)) {\n return (\n <CustomSelectOption\n key=\"create-new-option\"\n id={dropdownItemId}\n hovered={focusedOptionIndex === index}\n onMouseDown={() => addOptionFromInput(inputValue)}\n onMouseEnter={() => setFocusedOptionIndex(index)}\n >\n {option.actionText}\n </CustomSelectOption>\n );\n }\n return (\n <React.Fragment key={`${typeof option.value}-${option.label}`}>\n {renderOption(\n {\n id: dropdownItemId,\n disabled: option.disabled,\n hovered: focusedOption\n ? getOptionValue(option) === getOptionValue(focusedOption)\n : false,\n children: option.label,\n selected: !!value.find(\n (selectedOption: Option) =>\n getOptionValue(selectedOption) === getOptionValue(option),\n ),\n getRootRef(node) {\n if (node) {\n chipsSelectOptions[index] = node;\n }\n },\n onMouseDown(event: React.MouseEvent<HTMLDivElement>) {\n if (option.disabled) {\n return;\n }\n if (onChangeStart) {\n onChangeStart(event, option);\n }\n\n if (!event.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter() {\n setFocusedOptionIndex(index);\n },\n },\n option,\n )}\n </React.Fragment>\n );\n })}\n </CustomSelectDropdown>\n )}\n </>\n );\n};\n"],"names":["ChipsSelect","stylesDropdownVerticalPlacement","top","bottom","findIndexAfter","options","startIndex","length","findIndex","option","i","isNotServicePreset","disabled","findIndexBefore","endIndex","result","id","labelledbyId","getRootRef","className","status","icon","dropdownIconProp","onChangeStart","optionsProp","placement","placementProp","closeAfterSelect","selectedBehavior","DEFAULT_SELECTED_BEHAVIOR","emptyText","DEFAULT_EMPTY_TEXT","creatable","fetching","dropdownAutoWidth","forceDropdownPortal","noMaxHeight","filterFn","defaultFilterFn","dropdownTestId","getRef","value","valueProp","defaultValue","inputValue","inputValueProp","defaultInputValue","readOnly","getOptionValue","getOptionValueDefault","getOptionLabel","getOptionLabelDefault","getNewOptionData","getNewOptionDataDefault","renderChip","renderChipDefault","renderOption","renderOptionDefault","onChange","onFocus","onFocusProp","onInputChange","onInputChangeProp","onBlur","onBlurProp","onKeyDown","onKeyDownProp","restProps","addOptionFromInput","addOption","removeOption","inputRef","inputRefHook","clearInput","opened","setOpened","focusedOption","focusedOptionIndex","setFocusedOption","setFocusedOptionIndex","useChipsSelect","rootRef","useExternRef","dropdownVerticalPlacement","setDropdownVerticalPlacement","React","useState","dropdownId","useId","dropdownCurrentItemId","undefined","dropdownScrollBoxRef","useRef","handleFocus","event","handleBlur","defaultPrevented","preventDefault","chipsSelectOptions","current","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","beforeIndex","handleKeyDown","key","Keys","ARROW_UP","ARROW_DOWN","ENTER","foundOption","ESCAPE","TAB","useEffect","foundFocusedOptionIndex","onDropdownPlacementChange","useCallback","startsWith","onDropdownMouseLeave","handleClickOutside","useGlobalOnClickOutside","ChipsInputBase","classNames","after","DropdownIcon","onAddChipOption","onRemoveChipOption","role","aria-expanded","aria-autocomplete","aria-controls","aria-activedescendant","aria-haspopup","CustomSelectDropdown","data-testid","targetRef","scrollBoxRef","onPlacementChange","onMouseLeave","autoWidth","forcePortal","aria-labelledby","map","dropdownItemId","isEmptyOptionPreset","Footnote","placeholder","isCreateNewOptionPreset","CustomSelectOption","hovered","onMouseDown","onMouseEnter","actionText","Fragment","label","children","selected","find","selectedOption","node"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalOnClickOutside } from '../../hooks/useGlobalOnClickOutside';\nimport { Keys } from '../../lib/accessibility';\nimport type { Placement } from '../../lib/floating';\nimport { defaultFilterFn } from '../../lib/select';\nimport { ChipsInputBase } from '../ChipsInputBase/ChipsInputBase';\nimport {\n getNewOptionDataDefault,\n getOptionLabelDefault,\n getOptionValueDefault,\n renderChipDefault,\n} from '../ChipsInputBase/constants';\nimport type { ChipOption, ChipsInputBaseProps } from '../ChipsInputBase/types';\nimport { CustomSelectDropdown } from '../CustomSelectDropdown/CustomSelectDropdown';\nimport {\n CustomSelectOption,\n type CustomSelectOptionProps,\n} from '../CustomSelectOption/CustomSelectOption';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport type { FormFieldProps } from '../FormField/FormField';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport {\n DEFAULT_EMPTY_TEXT,\n DEFAULT_SELECTED_BEHAVIOR,\n FOCUS_ACTION_NEXT,\n FOCUS_ACTION_PREV,\n isCreateNewOptionPreset,\n isEmptyOptionPreset,\n isNotServicePreset,\n renderOptionDefault,\n} from './constants';\nimport type { FocusActionType, OptionPreset } from './types';\nimport { useChipsSelect, type UseChipsSelectProps } from './useChipsSelect';\nimport styles from './ChipsSelect.module.css';\n\nconst stylesDropdownVerticalPlacement = {\n top: styles['ChipsSelect--pop-up'],\n bottom: styles['ChipsSelect--pop-down'],\n} as const;\n\nconst findIndexAfter = <O extends ChipOption>(\n options: Array<OptionPreset<O>> = [],\n startIndex = -1,\n) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex(\n (option, i) => i > startIndex && (!isNotServicePreset(option) || !option.disabled),\n );\n};\n\nconst findIndexBefore = <O extends ChipOption>(\n options: Array<OptionPreset<O>> = [],\n endIndex: number = options.length,\n) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!isNotServicePreset(option) || !option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nexport interface ChipsSelectProps<O extends ChipOption>\n extends ChipsInputBaseProps<O>,\n UseChipsSelectProps<O>,\n Pick<FormFieldProps, 'status' | 'mode' | 'before'> {\n placement?: 'top' | 'bottom';\n /**\n * Отрисовка Spinner вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n /**\n * Закрытие выпадающего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n /**\n * Ширина раскрывающегося списка зависит от контента\n */\n dropdownAutoWidth?: boolean;\n /**\n * Принудительно использовать портал.\n */\n forceDropdownPortal?: boolean;\n /**\n * Передача `data-testid`.\n */\n dropdownTestId?: string;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n /**\n * Добавляет значение в список на событие `onBlur` (использовать вместе с `creatable`)\n */\n addOnBlur?: boolean;\n /**\n * Отключает максимальную высоту по умолчанию\n */\n noMaxHeight?: boolean;\n\n renderOption?: (props: CustomSelectOptionProps, option: O) => React.ReactNode;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (event: React.MouseEvent | React.KeyboardEvent, option: O) => void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ChipsSelect\n */\nexport const ChipsSelect = <Option extends ChipOption>({\n // FormFieldProps\n id: labelledbyId,\n getRootRef,\n className,\n status = 'default',\n icon: dropdownIconProp,\n onChangeStart,\n\n // CustomSelectDropdownProps\n options: optionsProp,\n placement: placementProp = 'bottom',\n closeAfterSelect = true,\n selectedBehavior = DEFAULT_SELECTED_BEHAVIOR,\n emptyText = DEFAULT_EMPTY_TEXT,\n creatable = false,\n fetching = false,\n dropdownAutoWidth,\n forceDropdownPortal,\n noMaxHeight = false,\n filterFn = defaultFilterFn,\n dropdownTestId,\n\n // ChipsInputProps\n getRef,\n value: valueProp,\n defaultValue,\n inputValue: inputValueProp,\n defaultInputValue,\n disabled,\n readOnly,\n getOptionValue = getOptionValueDefault,\n getOptionLabel = getOptionLabelDefault,\n getNewOptionData = getNewOptionDataDefault,\n renderChip = renderChipDefault,\n renderOption = renderOptionDefault,\n onChange,\n onFocus: onFocusProp,\n onInputChange: onInputChangeProp,\n onBlur: onBlurProp,\n onKeyDown: onKeyDownProp,\n ...restProps\n}: ChipsSelectProps<Option>) => {\n const {\n // Связано с ChipsInputProps\n // option\n value,\n addOptionFromInput,\n addOption,\n removeOption,\n // input\n inputRef: inputRefHook,\n inputValue,\n clearInput,\n onInputChange,\n\n // Связано с CustomSelectDropdownProps\n options,\n opened,\n setOpened,\n focusedOption,\n focusedOptionIndex,\n setFocusedOption,\n setFocusedOptionIndex,\n } = useChipsSelect({\n // option\n value: valueProp,\n defaultValue,\n onChange,\n getOptionValue,\n getOptionLabel,\n getNewOptionData,\n\n // input\n inputValue: inputValueProp,\n defaultInputValue,\n onInputChange: onInputChangeProp,\n\n // dropdown\n options: optionsProp,\n emptyText,\n creatable,\n filterFn,\n selectedBehavior,\n\n // other\n disabled,\n });\n\n // Связано с ChipsInputProps\n const rootRef = useExternRef(getRootRef);\n const inputRef = useExternRef(getRef, inputRefHook);\n\n // Связано с CustomSelectDropdownProps\n const [dropdownVerticalPlacement, setDropdownVerticalPlacement] = React.useState<\n Extract<Placement, 'top' | 'bottom'> | undefined\n >(placementProp);\n const dropdownId = React.useId();\n const dropdownCurrentItemId =\n focusedOptionIndex !== null ? `${dropdownId}-${focusedOptionIndex}` : undefined;\n const dropdownScrollBoxRef = React.useRef<HTMLDivElement>(null);\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onFocusProp) {\n onFocusProp(event);\n }\n\n if (!readOnly) {\n setOpened(true);\n setFocusedOptionIndex(null);\n }\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onBlurProp) {\n onBlurProp(event);\n }\n\n // Не добавляем значение, если его нужно выбрать строго из списка\n if (!readOnly && !event.defaultPrevented && !creatable) {\n event.preventDefault();\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = dropdownScrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n /* istanbul ignore if: невозможный кейс (в SSR вызова этой функции не будет) */\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n /* istanbul ignore next: нет представления как воспроизвести */\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n };\n\n const focusOptionByIndex = (index: number, oldIndex: number | null) => {\n const length = options.length;\n\n if (index < 0) {\n index = length - 1;\n } else if (index >= length) {\n index = 0;\n }\n\n if (index === oldIndex) {\n /* istanbul ignore next: нет представления как воспроизвести */\n return;\n }\n\n const option = options[index];\n\n if (isNotServicePreset(option) && option.disabled) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number | null, type: FocusActionType) => {\n let index = nextIndex === null ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n const nextIndex = findIndexAfter(options, index);\n index = nextIndex === -1 ? findIndexAfter(options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === FOCUS_ACTION_PREV) {\n const beforeIndex = findIndexBefore(options, index);\n index = beforeIndex === -1 ? findIndexBefore(options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n focusOptionByIndex(index, focusedOptionIndex);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDownProp) {\n onKeyDownProp(event);\n }\n\n if (event.defaultPrevented || readOnly) {\n return;\n }\n\n switch (event.key) {\n case Keys.ARROW_UP:\n case Keys.ARROW_DOWN:\n event.preventDefault();\n\n if (!opened) {\n setOpened(true);\n focusOption(null, FOCUS_ACTION_NEXT);\n } else {\n focusOption(\n focusedOptionIndex,\n event.key === Keys.ARROW_UP ? FOCUS_ACTION_PREV : FOCUS_ACTION_NEXT,\n );\n }\n break;\n case Keys.ENTER: {\n if (!opened) {\n break;\n }\n if (focusedOptionIndex != null) {\n const foundOption = options[focusedOptionIndex];\n if (foundOption && isNotServicePreset(foundOption)) {\n event.preventDefault();\n\n if (onChangeStart) {\n onChangeStart(event, foundOption);\n }\n\n addOption(foundOption);\n setFocusedOptionIndex(null);\n clearInput();\n if (closeAfterSelect) {\n setOpened(false);\n }\n\n break;\n }\n }\n\n if (!creatable) {\n event.preventDefault();\n }\n break;\n }\n case Keys.ESCAPE:\n case Keys.TAB:\n if (opened) {\n setOpened(false);\n }\n }\n };\n\n React.useEffect(() => {\n if (focusedOptionIndex === null) {\n setFocusedOption(null);\n } else {\n const foundFocusedOptionIndex = options[focusedOptionIndex];\n\n if (foundFocusedOptionIndex && isNotServicePreset(foundFocusedOptionIndex)) {\n setFocusedOption(foundFocusedOptionIndex);\n }\n }\n }, [options, focusedOptionIndex, setFocusedOption]);\n\n const onDropdownPlacementChange = React.useCallback((placement: Placement) => {\n /* istanbul ignore next: */\n if (placement.startsWith('top')) {\n setDropdownVerticalPlacement('top');\n } else if (placement.startsWith('bottom')) {\n setDropdownVerticalPlacement('bottom');\n }\n }, []);\n\n const onDropdownMouseLeave = React.useCallback(() => {\n setFocusedOptionIndex(null);\n }, [setFocusedOptionIndex]);\n\n const handleClickOutside = React.useCallback(() => {\n setOpened(false);\n }, [setOpened]);\n\n useGlobalOnClickOutside(\n handleClickOutside,\n opened ? rootRef : null,\n opened ? dropdownScrollBoxRef : null,\n );\n\n return (\n <>\n <ChipsInputBase\n {...restProps}\n disabled={disabled}\n readOnly={readOnly}\n // FormFieldProps\n id={labelledbyId}\n getRootRef={rootRef}\n className={classNames(\n styles['ChipsSelect'],\n opened &&\n dropdownVerticalPlacement &&\n stylesDropdownVerticalPlacement[dropdownVerticalPlacement],\n className,\n )}\n status={status}\n after={dropdownIconProp || <DropdownIcon opened={opened} />}\n // option\n value={value}\n onAddChipOption={addOptionFromInput}\n onRemoveChipOption={removeOption}\n renderChip={renderChip}\n // input\n getRef={inputRef}\n inputValue={inputValue}\n onInputChange={onInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n // a11y\n role=\"combobox\"\n aria-expanded={opened}\n aria-autocomplete=\"list\"\n aria-controls={opened ? dropdownId : undefined}\n aria-activedescendant={opened ? dropdownCurrentItemId : undefined}\n aria-haspopup=\"listbox\"\n />\n {opened && (\n <CustomSelectDropdown\n data-testid={dropdownTestId}\n targetRef={rootRef}\n placement={placementProp}\n scrollBoxRef={dropdownScrollBoxRef}\n onPlacementChange={onDropdownPlacementChange}\n onMouseLeave={onDropdownMouseLeave}\n fetching={fetching}\n autoWidth={dropdownAutoWidth}\n forcePortal={forceDropdownPortal}\n noMaxHeight={noMaxHeight}\n // a11y\n id={dropdownId}\n role=\"listbox\"\n aria-labelledby={labelledbyId}\n >\n {options.map((option, index) => {\n const dropdownItemId = `${dropdownId}-${index}`;\n\n if (isEmptyOptionPreset(option)) {\n return (\n <Footnote key=\"empty-text\" className={styles['ChipsSelect__empty']}>\n {option.placeholder}\n </Footnote>\n );\n }\n if (isCreateNewOptionPreset(option)) {\n return (\n <CustomSelectOption\n key=\"create-new-option\"\n id={dropdownItemId}\n hovered={focusedOptionIndex === index}\n onMouseDown={() => addOptionFromInput(inputValue)}\n onMouseEnter={() => setFocusedOptionIndex(index)}\n >\n {option.actionText}\n </CustomSelectOption>\n );\n }\n return (\n <React.Fragment key={`${typeof option.value}-${option.label}`}>\n {renderOption(\n {\n id: dropdownItemId,\n disabled: option.disabled,\n hovered: focusedOption\n ? getOptionValue(option) === getOptionValue(focusedOption)\n : false,\n children: option.label,\n selected: !!value.find(\n (selectedOption: Option) =>\n getOptionValue(selectedOption) === getOptionValue(option),\n ),\n getRootRef(node) {\n if (node) {\n chipsSelectOptions[index] = node;\n }\n },\n onMouseDown(event: React.MouseEvent<HTMLDivElement>) {\n if (option.disabled) {\n return;\n }\n if (onChangeStart) {\n onChangeStart(event, option);\n }\n\n if (!event.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter() {\n setFocusedOptionIndex(index);\n },\n },\n option,\n )}\n </React.Fragment>\n );\n })}\n </CustomSelectDropdown>\n )}\n </>\n );\n};\n"],"names":["ChipsSelect","stylesDropdownVerticalPlacement","top","bottom","findIndexAfter","options","startIndex","length","findIndex","option","i","isNotServicePreset","disabled","findIndexBefore","endIndex","result","id","labelledbyId","getRootRef","className","status","icon","dropdownIconProp","onChangeStart","optionsProp","placement","placementProp","closeAfterSelect","selectedBehavior","DEFAULT_SELECTED_BEHAVIOR","emptyText","DEFAULT_EMPTY_TEXT","creatable","fetching","dropdownAutoWidth","forceDropdownPortal","noMaxHeight","filterFn","defaultFilterFn","dropdownTestId","getRef","value","valueProp","defaultValue","inputValue","inputValueProp","defaultInputValue","readOnly","getOptionValue","getOptionValueDefault","getOptionLabel","getOptionLabelDefault","getNewOptionData","getNewOptionDataDefault","renderChip","renderChipDefault","renderOption","renderOptionDefault","onChange","onFocus","onFocusProp","onInputChange","onInputChangeProp","onBlur","onBlurProp","onKeyDown","onKeyDownProp","restProps","addOptionFromInput","addOption","removeOption","inputRef","inputRefHook","clearInput","opened","setOpened","focusedOption","focusedOptionIndex","setFocusedOption","setFocusedOptionIndex","useChipsSelect","rootRef","useExternRef","dropdownVerticalPlacement","setDropdownVerticalPlacement","React","useState","dropdownId","useId","dropdownCurrentItemId","undefined","dropdownScrollBoxRef","useRef","handleFocus","event","handleBlur","defaultPrevented","preventDefault","chipsSelectOptions","current","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","beforeIndex","handleKeyDown","key","Keys","ARROW_UP","ARROW_DOWN","ENTER","foundOption","ESCAPE","TAB","useEffect","foundFocusedOptionIndex","onDropdownPlacementChange","useCallback","startsWith","onDropdownMouseLeave","handleClickOutside","useGlobalOnClickOutside","ChipsInputBase","classNames","after","DropdownIcon","onAddChipOption","onRemoveChipOption","role","aria-expanded","aria-autocomplete","aria-controls","aria-activedescendant","aria-haspopup","CustomSelectDropdown","data-testid","targetRef","scrollBoxRef","onPlacementChange","onMouseLeave","autoWidth","forcePortal","aria-labelledby","map","dropdownItemId","isEmptyOptionPreset","Footnote","placeholder","isCreateNewOptionPreset","CustomSelectOption","hovered","onMouseDown","onMouseEnter","actionText","Fragment","label","children","selected","find","selectedOption","node"],"mappings":"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"}
@@ -24,7 +24,10 @@ export interface UseChipsSelectProps<O extends ChipOption = ChipOption> extends
24
24
  filterFn?: false | FilterFn<O>;
25
25
  }
26
26
  export declare const useChipsSelect: <O extends ChipOption>({ disabled, value: valueProp, defaultValue, onChange, getOptionLabel, getOptionValue, getNewOptionData, inputValue: inputValueProp, defaultInputValue, onInputChange: onInputChangeProp, creatable, emptyText, filterFn, selectedBehavior, options: optionsProp, }: UseChipsSelectProps<O>) => {
27
- value: O[];
27
+ value: (O & {
28
+ label: import("../ChipsInputBase/types").ChipOptionLabel;
29
+ value: import("../ChipsInputBase/types").ChipOptionValue;
30
+ })[];
28
31
  inputValue: string;
29
32
  onInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
30
33
  options: OptionPreset<O>[];
@@ -1 +1 @@
1
- {"version":3,"file":"useChipsSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/ChipsSelect/useChipsSelect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAQrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CACpE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACxC,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,cAAc;;;2BA+Df,MAAM,WAAW,CAAC,gBAAgB,CAAC;;;;;;;;;;;;;CAqE9C,CAAC"}
1
+ {"version":3,"file":"useChipsSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/ChipsSelect/useChipsSelect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAQrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,CACpE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACxC,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,cAAc;;;;;;2BA+Df,MAAM,WAAW,CAAC,gBAAgB,CAAC;;;;;;;;;;;;;CAqE9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Clickable.d.ts","sourceRoot":"","sources":["../../../../src/components/Clickable/Clickable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,qBAAqB,EAEtB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAiB,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EAGL,UAAU,EAEX,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,WAAW,CAC7C,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAC3B,qBAAqB,EACrB,UAAU;CAAG;AAuFjB;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAQnE;AAiCD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,mHAqBrB,CAAC"}
1
+ {"version":3,"file":"Clickable.d.ts","sourceRoot":"","sources":["../../../../src/components/Clickable/Clickable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,qBAAqB,EAEtB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAiB,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEnF,OAAO,EAGL,UAAU,EAEX,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,WAAW,CAC7C,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAC3B,qBAAqB,EACrB,UAAU;CAAG;AAuFjB;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAQnE;AA2CD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,mHAyBrB,CAAC"}
@@ -133,6 +133,15 @@ function checkClickable(props) {
133
133
  }
134
134
  return {};
135
135
  }
136
+ const getUserAgentResetClassName = (Component)=>{
137
+ if (Component === 'a') {
138
+ return "vkuiClickable__resetLinkStyle";
139
+ }
140
+ if (Component === 'button') {
141
+ return "vkuiClickable__resetButtonStyle";
142
+ }
143
+ return;
144
+ };
136
145
  const Clickable = (_param)=>{
137
146
  var { focusVisibleMode = 'inside', baseClassName: baseClassNameProp } = _param, restProps = _object_without_properties._(_param, [
138
147
  "focusVisibleMode",
@@ -140,7 +149,7 @@ const Clickable = (_param)=>{
140
149
  ]);
141
150
  const commonProps = component(restProps);
142
151
  const isClickable = checkClickable(restProps);
143
- const baseClassName = (0, _vkjs.classNames)(baseClassNameProp, "vkuiClickable__host");
152
+ const baseClassName = (0, _vkjs.classNames)(baseClassNameProp, getUserAgentResetClassName(commonProps.Component), "vkuiClickable__host");
144
153
  if (isClickable) {
145
154
  return /*#__PURE__*/ _react.createElement(RealClickable, _object_spread._({
146
155
  baseClassName: baseClassName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Clickable/Clickable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport {\n FocusVisibleModeProps,\n useFocusVisibleClassName,\n} from '../../hooks/useFocusVisibleClassName';\nimport { mergeCalls } from '../../lib/mergeCalls';\nimport { RootComponent, RootComponentProps } from '../RootComponent/RootComponent';\nimport { useKeyboard } from './useKeyboard';\nimport {\n ClickableLockStateContext,\n DEFAULT_ACTIVE_EFFECT_DELAY,\n StateProps,\n useState,\n} from './useState';\nimport styles from './Clickable.module.css';\n\nexport interface ClickableProps<T = HTMLElement>\n extends RootComponentProps<T>,\n FocusVisibleModeProps,\n StateProps {}\n\n/**\n * Некликабельный компонент. Отключаем возможность нажимать на компонент.\n */\nconst NonClickable = <T,>({\n href,\n onClick,\n onClickCapture,\n activeClassName,\n hoverClassName,\n hasActive,\n hasHover,\n hovered,\n activated,\n activeEffectDelay,\n ...restProps\n}: ClickableProps<T>) => <RootComponent {...restProps} />;\n\n/**\n * Кликабельный компонент. Добавляем кучу обвесов\n */\nconst RealClickable = <T,>({\n baseClassName,\n children,\n focusVisibleMode = 'inside',\n activeClassName,\n hoverClassName,\n activeEffectDelay = DEFAULT_ACTIVE_EFFECT_DELAY,\n hasHover = true,\n hasActive = true,\n hovered,\n activated,\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n ...restProps\n}: ClickableProps<T>) => {\n const { focusVisible, ...focusEvents } = useFocusVisible();\n const focusVisibleClassNames = useFocusVisibleClassName({ focusVisible, mode: focusVisibleMode });\n\n const { stateClassName, setLockBubblingImmediate, ...stateEvents } = useState({\n activeClassName,\n hoverClassName,\n activeEffectDelay,\n hasHover,\n hasActive,\n hovered,\n activated,\n });\n\n const keyboardHandlers = useKeyboard();\n\n const handlers = mergeCalls(focusEvents, stateEvents, keyboardHandlers, {\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n });\n\n return (\n <RootComponent\n baseClassName={classNames(\n baseClassName,\n styles['Clickable__realClickable'],\n focusVisibleClassNames,\n stateClassName,\n )}\n {...handlers}\n {...restProps}\n >\n <ClickableLockStateContext.Provider value={setLockBubblingImmediate}>\n {children}\n </ClickableLockStateContext.Provider>\n </RootComponent>\n );\n};\n\n/**\n * Проверяем, является ли компонент кликабельным\n */\nexport function checkClickable<T>(props: ClickableProps<T>): boolean {\n return (\n (props.href !== undefined ||\n props.onClick !== undefined ||\n props.onClickCapture !== undefined ||\n props.Component === 'label') &&\n !props.disabled\n );\n}\n\n/**\n * Определяет правильный компонент и его свойства\n *\n * - если передан Component, используем его\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n */\nfunction component<T>({\n Component,\n onClick,\n onClickCapture,\n href,\n disabled,\n}: RootComponentProps<T>): RootComponentProps<T> {\n if (Component !== undefined) {\n return { Component };\n } else if (href !== undefined) {\n return { 'Component': 'a', 'aria-disabled': disabled };\n } else if (onClick !== undefined || onClickCapture !== undefined) {\n return {\n 'Component': 'div',\n 'role': 'button',\n 'tabIndex': disabled ? undefined : 0,\n 'aria-disabled': disabled,\n };\n }\n\n return {};\n}\n\n/**\n * Базовый кликабельный корневой компонент.\n *\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n *\n * Отвечает за:\n *\n * - стейты наведения и нажатия\n * - a11y компонентов\n */\nexport const Clickable = <T,>({\n focusVisibleMode = 'inside',\n baseClassName: baseClassNameProp,\n ...restProps\n}: ClickableProps<T>) => {\n const commonProps = component(restProps);\n const isClickable = checkClickable(restProps);\n const baseClassName = classNames(baseClassNameProp, styles['Clickable__host']);\n\n if (isClickable) {\n return (\n <RealClickable\n baseClassName={baseClassName}\n focusVisibleMode={focusVisibleMode}\n {...commonProps}\n {...restProps}\n />\n );\n }\n\n return <NonClickable baseClassName={baseClassName} {...commonProps} {...restProps} />;\n};\n"],"names":["Clickable","checkClickable","NonClickable","href","onClick","onClickCapture","activeClassName","hoverClassName","hasActive","hasHover","hovered","activated","activeEffectDelay","restProps","RootComponent","RealClickable","baseClassName","children","focusVisibleMode","DEFAULT_ACTIVE_EFFECT_DELAY","onPointerEnter","onPointerLeave","onPointerDown","onPointerCancel","onPointerUp","onBlur","onFocus","onKeyDown","useFocusVisible","focusVisible","focusEvents","focusVisibleClassNames","useFocusVisibleClassName","mode","useState","stateClassName","setLockBubblingImmediate","stateEvents","keyboardHandlers","useKeyboard","handlers","mergeCalls","classNames","ClickableLockStateContext","Provider","value","props","undefined","Component","disabled","component","baseClassNameProp","commonProps","isClickable"],"mappings":";;;;;;;;;;;IAoKaA,SAAS;eAATA;;IArDGC,cAAc;eAAdA;;;;;;iEA/GO;sBACI;iCACK;0CAIzB;4BACoB;+BACuB;6BACtB;0BAMrB;AAQP;;CAEC,GACD,MAAMC,eAAe;QAAK,EACxBC,IAAI,EACJC,OAAO,EACPC,cAAc,EACdC,eAAe,EACfC,cAAc,EACdC,SAAS,EACTC,QAAQ,EACRC,OAAO,EACPC,SAAS,EACTC,iBAAiB,EAEC,WADfC;QAVHV;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;yBAEuB,qBAACE,4BAAa,EAAKD;;AAE5C;;CAEC,GACD,MAAME,gBAAgB;QAAK,EACzBC,aAAa,EACbC,QAAQ,EACRC,mBAAmB,QAAQ,EAC3BZ,eAAe,EACfC,cAAc,EACdK,oBAAoBO,qCAA2B,EAC/CV,WAAW,IAAI,EACfD,YAAY,IAAI,EAChBE,OAAO,EACPC,SAAS,EACTS,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,eAAe,EACfC,WAAW,EACXC,MAAM,EACNC,OAAO,EACPC,SAAS,EAES,WADfd;QAlBHG;QACAC;QACAC;QACAZ;QACAC;QACAK;QACAH;QACAD;QACAE;QACAC;QACAS;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAyCC,oBAAAA,IAAAA,gCAAe,KAAlD,EAAEC,YAAY,EAAkB,GAAGD,mBAAhBE,2CAAgBF;QAAjCC;;IACR,MAAME,yBAAyBC,IAAAA,kDAAwB,EAAC;QAAEH;QAAcI,MAAMf;IAAiB;IAE/F,MAAqEgB,aAAAA,IAAAA,kBAAQ,EAAC;QAC5E5B;QACAC;QACAK;QACAH;QACAD;QACAE;QACAC;IACF,IARM,EAAEwB,cAAc,EAAEC,wBAAwB,EAAkB,GAAGF,YAAhBG,2CAAgBH;QAA7DC;QAAgBC;;IAUxB,MAAME,mBAAmBC,IAAAA,wBAAW;IAEpC,MAAMC,WAAWC,IAAAA,sBAAU,EAACX,aAAaO,aAAaC,kBAAkB;QACtElB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;IACF;IAEA,qBACE,qBAACb,4BAAa;QACZE,eAAe0B,IAAAA,gBAAU,EACvB1B,+CAEAe,wBACAI;OAEEK,UACA3B,0BAEJ,qBAAC8B,mCAAyB,CAACC,QAAQ;QAACC,OAAOT;OACxCnB;AAIT;AAKO,SAAShB,eAAkB6C,KAAwB;IACxD,OACE,AAACA,CAAAA,MAAM3C,IAAI,KAAK4C,aACdD,MAAM1C,OAAO,KAAK2C,aAClBD,MAAMzC,cAAc,KAAK0C,aACzBD,MAAME,SAAS,KAAK,OAAM,KAC5B,CAACF,MAAMG,QAAQ;AAEnB;AAEA;;;;;;;CAOC,GACD,SAASC,UAAa,EACpBF,SAAS,EACT5C,OAAO,EACPC,cAAc,EACdF,IAAI,EACJ8C,QAAQ,EACc;IACtB,IAAID,cAAcD,WAAW;QAC3B,OAAO;YAAEC;QAAU;IACrB,OAAO,IAAI7C,SAAS4C,WAAW;QAC7B,OAAO;YAAE,aAAa;YAAK,iBAAiBE;QAAS;IACvD,OAAO,IAAI7C,YAAY2C,aAAa1C,mBAAmB0C,WAAW;QAChE,OAAO;YACL,aAAa;YACb,QAAQ;YACR,YAAYE,WAAWF,YAAY;YACnC,iBAAiBE;QACnB;IACF;IAEA,OAAO,CAAC;AACV;AAcO,MAAMjD,YAAY;QAAK,EAC5BkB,mBAAmB,QAAQ,EAC3BF,eAAemC,iBAAiB,EAEd,WADftC;QAFHK;QACAF;;IAGA,MAAMoC,cAAcF,UAAUrC;IAC9B,MAAMwC,cAAcpD,eAAeY;IACnC,MAAMG,gBAAgB0B,IAAAA,gBAAU,EAACS;IAEjC,IAAIE,aAAa;QACf,qBACE,qBAACtC;YACCC,eAAeA;YACfE,kBAAkBA;WACdkC,aACAvC;IAGV;IAEA,qBAAO,qBAACX;QAAac,eAAeA;OAAmBoC,aAAiBvC;AAC1E"}
1
+ {"version":3,"sources":["../../../../src/components/Clickable/Clickable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport {\n FocusVisibleModeProps,\n useFocusVisibleClassName,\n} from '../../hooks/useFocusVisibleClassName';\nimport { mergeCalls } from '../../lib/mergeCalls';\nimport { RootComponent, RootComponentProps } from '../RootComponent/RootComponent';\nimport { useKeyboard } from './useKeyboard';\nimport {\n ClickableLockStateContext,\n DEFAULT_ACTIVE_EFFECT_DELAY,\n StateProps,\n useState,\n} from './useState';\nimport styles from './Clickable.module.css';\n\nexport interface ClickableProps<T = HTMLElement>\n extends RootComponentProps<T>,\n FocusVisibleModeProps,\n StateProps {}\n\n/**\n * Некликабельный компонент. Отключаем возможность нажимать на компонент.\n */\nconst NonClickable = <T,>({\n href,\n onClick,\n onClickCapture,\n activeClassName,\n hoverClassName,\n hasActive,\n hasHover,\n hovered,\n activated,\n activeEffectDelay,\n ...restProps\n}: ClickableProps<T>) => <RootComponent {...restProps} />;\n\n/**\n * Кликабельный компонент. Добавляем кучу обвесов\n */\nconst RealClickable = <T,>({\n baseClassName,\n children,\n focusVisibleMode = 'inside',\n activeClassName,\n hoverClassName,\n activeEffectDelay = DEFAULT_ACTIVE_EFFECT_DELAY,\n hasHover = true,\n hasActive = true,\n hovered,\n activated,\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n ...restProps\n}: ClickableProps<T>) => {\n const { focusVisible, ...focusEvents } = useFocusVisible();\n const focusVisibleClassNames = useFocusVisibleClassName({ focusVisible, mode: focusVisibleMode });\n\n const { stateClassName, setLockBubblingImmediate, ...stateEvents } = useState({\n activeClassName,\n hoverClassName,\n activeEffectDelay,\n hasHover,\n hasActive,\n hovered,\n activated,\n });\n\n const keyboardHandlers = useKeyboard();\n\n const handlers = mergeCalls(focusEvents, stateEvents, keyboardHandlers, {\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n });\n\n return (\n <RootComponent\n baseClassName={classNames(\n baseClassName,\n styles['Clickable__realClickable'],\n focusVisibleClassNames,\n stateClassName,\n )}\n {...handlers}\n {...restProps}\n >\n <ClickableLockStateContext.Provider value={setLockBubblingImmediate}>\n {children}\n </ClickableLockStateContext.Provider>\n </RootComponent>\n );\n};\n\n/**\n * Проверяем, является ли компонент кликабельным\n */\nexport function checkClickable<T>(props: ClickableProps<T>): boolean {\n return (\n (props.href !== undefined ||\n props.onClick !== undefined ||\n props.onClickCapture !== undefined ||\n props.Component === 'label') &&\n !props.disabled\n );\n}\n\n/**\n * Определяет правильный компонент и его свойства\n *\n * - если передан Component, используем его\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n */\nfunction component<T>({\n Component,\n onClick,\n onClickCapture,\n href,\n disabled,\n}: RootComponentProps<T>): RootComponentProps<T> {\n if (Component !== undefined) {\n return { Component };\n } else if (href !== undefined) {\n return { 'Component': 'a', 'aria-disabled': disabled };\n } else if (onClick !== undefined || onClickCapture !== undefined) {\n return {\n 'Component': 'div',\n 'role': 'button',\n 'tabIndex': disabled ? undefined : 0,\n 'aria-disabled': disabled,\n };\n }\n\n return {};\n}\n\nconst getUserAgentResetClassName = (Component?: React.ElementType) => {\n if (Component === 'a') {\n return styles.Clickable__resetLinkStyle;\n }\n if (Component === 'button') {\n return styles.Clickable__resetButtonStyle;\n }\n return;\n};\n\n/**\n * Базовый кликабельный корневой компонент.\n *\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n *\n * Отвечает за:\n *\n * - стейты наведения и нажатия\n * - a11y компонентов\n */\nexport const Clickable = <T,>({\n focusVisibleMode = 'inside',\n baseClassName: baseClassNameProp,\n ...restProps\n}: ClickableProps<T>) => {\n const commonProps = component(restProps);\n const isClickable = checkClickable(restProps);\n const baseClassName = classNames(\n baseClassNameProp,\n getUserAgentResetClassName(commonProps.Component),\n styles['Clickable__host'],\n );\n\n if (isClickable) {\n return (\n <RealClickable\n baseClassName={baseClassName}\n focusVisibleMode={focusVisibleMode}\n {...commonProps}\n {...restProps}\n />\n );\n }\n\n return <NonClickable baseClassName={baseClassName} {...commonProps} {...restProps} />;\n};\n"],"names":["Clickable","checkClickable","NonClickable","href","onClick","onClickCapture","activeClassName","hoverClassName","hasActive","hasHover","hovered","activated","activeEffectDelay","restProps","RootComponent","RealClickable","baseClassName","children","focusVisibleMode","DEFAULT_ACTIVE_EFFECT_DELAY","onPointerEnter","onPointerLeave","onPointerDown","onPointerCancel","onPointerUp","onBlur","onFocus","onKeyDown","useFocusVisible","focusVisible","focusEvents","focusVisibleClassNames","useFocusVisibleClassName","mode","useState","stateClassName","setLockBubblingImmediate","stateEvents","keyboardHandlers","useKeyboard","handlers","mergeCalls","classNames","ClickableLockStateContext","Provider","value","props","undefined","Component","disabled","component","getUserAgentResetClassName","baseClassNameProp","commonProps","isClickable"],"mappings":"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"}
@@ -5,7 +5,7 @@ export interface CustomScrollViewProps extends React.AllHTMLAttributes<HTMLDivEl
5
5
  windowResize?: boolean;
6
6
  boxRef?: React.Ref<HTMLDivElement>;
7
7
  className?: HTMLDivElement['className'];
8
- onScroll?(event: React.UIEvent<HTMLDivElement>): void;
8
+ onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;
9
9
  children: React.ReactNode;
10
10
  }
11
11
  export declare const CustomScrollView: ({ className, children, boxRef: externalBoxRef, windowResize, autoHideScrollbar, autoHideScrollbarDelay, onScroll, getRootRef, ...restProps }: CustomScrollViewProps) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"CustomScrollView.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomScrollView/CustomScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAwB,MAAM,wBAAwB,CAAC;AAenF,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAC7C,UAAU,CAAC,cAAc,CAAC,EAC1B,mBAAmB;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACxC,QAAQ,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACtD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,iJAU1B,qBAAqB,sBA8KvB,CAAC"}
1
+ {"version":3,"file":"CustomScrollView.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomScrollView/CustomScrollView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAwB,MAAM,wBAAwB,CAAC;AAenF,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAC7C,UAAU,CAAC,cAAc,CAAC,EAC1B,mBAAmB;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAC1D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,iJAU1B,qBAAqB,sBA8KvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CustomScrollView/CustomScrollView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { stopPropagation } from '../../lib/utils';\nimport type { HasRootRef } from '../../types';\nimport { TrackerOptionsProps, useTrackerVisibility } from './useTrackerVisibility';\nimport styles from './CustomScrollView.module.css';\n\nfunction hasPointerClassName(hasPointer: boolean | undefined) {\n switch (hasPointer) {\n case true:\n return styles['CustomScrollView--hasPointer-true'];\n case false:\n return styles['CustomScrollView--hasPointer-false'];\n case undefined:\n default:\n return styles['CustomScrollView--hasPointer-none'];\n }\n}\n\nexport interface CustomScrollViewProps\n extends React.AllHTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n TrackerOptionsProps {\n windowResize?: boolean;\n boxRef?: React.Ref<HTMLDivElement>;\n className?: HTMLDivElement['className'];\n onScroll?(event: React.UIEvent<HTMLDivElement>): void;\n children: React.ReactNode;\n}\n\nexport const CustomScrollView = ({\n className,\n children,\n boxRef: externalBoxRef,\n windowResize,\n autoHideScrollbar = false,\n autoHideScrollbarDelay,\n onScroll,\n getRootRef,\n ...restProps\n}: CustomScrollViewProps) => {\n const { document, window } = useDOM();\n const { hasPointer } = useAdaptivity();\n\n const ratio = React.useRef(NaN);\n const lastTrackerTop = React.useRef(0);\n const clientHeight = React.useRef(0);\n const trackerHeight = React.useRef(0);\n const scrollHeight = React.useRef(0);\n const transformProp = React.useRef('');\n const startY = React.useRef(0);\n const trackerTop = React.useRef(0);\n\n const boxRef = useExternRef(externalBoxRef);\n\n const barY = React.useRef<HTMLDivElement>(null);\n const trackerY = React.useRef<HTMLDivElement>(null);\n\n const setTrackerPosition = (scrollTop: number) => {\n lastTrackerTop.current = scrollTop;\n if (trackerY.current !== null) {\n (trackerY.current.style as any)[transformProp.current] = `translate(0, ${scrollTop}px)`;\n }\n };\n\n const setTrackerPositionFromScroll = (scrollTop: number) => {\n const progress = scrollTop / (scrollHeight.current - clientHeight.current);\n setTrackerPosition((clientHeight.current - trackerHeight.current) * progress);\n };\n\n const resize = () => {\n if (!boxRef.current || !barY.current || !trackerY.current) {\n return;\n }\n const localClientHeight = boxRef.current.clientHeight;\n const localScrollHeight = boxRef.current.scrollHeight;\n const localRatio = localClientHeight / localScrollHeight;\n const localTrackerHeight = Math.max(localClientHeight * localRatio, 40);\n\n ratio.current = localRatio;\n clientHeight.current = localClientHeight;\n scrollHeight.current = localScrollHeight;\n trackerHeight.current = localTrackerHeight;\n\n if (localRatio >= 1) {\n barY.current.style.display = 'none';\n } else {\n barY.current.style.display = '';\n trackerY.current.style.height = `${localTrackerHeight}px`;\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n }\n };\n\n const resizeHandler = useEventListener('resize', resize);\n\n useIsomorphicLayoutEffect(() => {\n if (windowResize && window) {\n resizeHandler.add(window);\n }\n }, [windowResize, window]);\n\n useIsomorphicLayoutEffect(() => {\n let style = trackerY.current?.style;\n let prop = '';\n if (style !== undefined) {\n if ('transform' in style) {\n prop = 'transform';\n } else if ('webkitTransform' in style) {\n prop = 'webkitTransform';\n }\n }\n transformProp.current = prop;\n }, []);\n\n useIsomorphicLayoutEffect(resize);\n\n const setScrollPositionFromTracker = (trackerTop: number) => {\n const progress = trackerTop / (clientHeight.current - trackerHeight.current);\n if (boxRef.current !== null) {\n boxRef.current.scrollTop = (scrollHeight.current - clientHeight.current) * progress;\n }\n };\n\n const onMove = (e: MouseEvent) => {\n e.preventDefault();\n const diff = e.clientY - startY.current;\n const position = Math.min(\n Math.max(trackerTop.current + diff, 0),\n clientHeight.current - trackerHeight.current,\n );\n\n setScrollPositionFromTracker(position);\n };\n\n const {\n trackerVisible,\n onTargetScroll,\n onTrackerDragStart,\n onTrackerDragStop,\n onTrackerMouseEnter,\n onTrackerMouseLeave,\n } = useTrackerVisibility(autoHideScrollbar, autoHideScrollbarDelay);\n\n const onUp = (e: MouseEvent) => {\n e.preventDefault();\n\n if (autoHideScrollbar) {\n onTrackerDragStop();\n }\n\n unsubscribe();\n };\n\n const scroll = (event: React.UIEvent<HTMLDivElement>) => {\n if (ratio.current >= 1 || !boxRef.current) {\n return;\n }\n\n if (autoHideScrollbar) {\n onTargetScroll();\n }\n\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n onScroll?.(event);\n };\n\n const listeners = [useEventListener('mousemove', onMove), useEventListener('mouseup', onUp)];\n\n function subscribe(el: Document | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n const onDragStart = (e: React.MouseEvent) => {\n e.preventDefault();\n startY.current = e.clientY;\n trackerTop.current = lastTrackerTop.current;\n\n if (autoHideScrollbar) {\n onTrackerDragStart();\n }\n\n subscribe(document);\n };\n\n return (\n <div\n className={classNames(className, styles['CustomScrollView'], hasPointerClassName(hasPointer))}\n ref={getRootRef}\n {...restProps}\n >\n <div className={styles['CustomScrollView__box']} tabIndex={-1} ref={boxRef} onScroll={scroll}>\n {children}\n </div>\n\n <div className={styles['CustomScrollView__barY']} ref={barY} onClick={stopPropagation}>\n <div\n className={classNames(\n styles['CustomScrollView__trackerY'],\n !trackerVisible && styles['CustomScrollView__trackerY--hidden'],\n )}\n onMouseEnter={autoHideScrollbar ? onTrackerMouseEnter : undefined}\n onMouseLeave={autoHideScrollbar ? onTrackerMouseLeave : undefined}\n ref={trackerY}\n onMouseDown={onDragStart}\n />\n </div>\n </div>\n );\n};\n"],"names":["CustomScrollView","hasPointerClassName","hasPointer","undefined","className","children","boxRef","externalBoxRef","windowResize","autoHideScrollbar","autoHideScrollbarDelay","onScroll","getRootRef","restProps","document","window","useDOM","useAdaptivity","ratio","React","useRef","NaN","lastTrackerTop","clientHeight","trackerHeight","scrollHeight","transformProp","startY","trackerTop","useExternRef","barY","trackerY","setTrackerPosition","scrollTop","current","style","setTrackerPositionFromScroll","progress","resize","localClientHeight","localScrollHeight","localRatio","localTrackerHeight","Math","max","display","height","resizeHandler","useEventListener","useIsomorphicLayoutEffect","add","prop","setScrollPositionFromTracker","onMove","e","preventDefault","diff","clientY","position","min","trackerVisible","onTargetScroll","onTrackerDragStart","onTrackerDragStop","onTrackerMouseEnter","onTrackerMouseLeave","useTrackerVisibility","onUp","unsubscribe","scroll","event","listeners","subscribe","el","forEach","l","remove","onDragStart","div","classNames","ref","tabIndex","onClick","stopPropagation","onMouseEnter","onMouseLeave","onMouseDown"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/CustomScrollView/CustomScrollView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { stopPropagation } from '../../lib/utils';\nimport type { HasRootRef } from '../../types';\nimport { TrackerOptionsProps, useTrackerVisibility } from './useTrackerVisibility';\nimport styles from './CustomScrollView.module.css';\n\nfunction hasPointerClassName(hasPointer: boolean | undefined) {\n switch (hasPointer) {\n case true:\n return styles['CustomScrollView--hasPointer-true'];\n case false:\n return styles['CustomScrollView--hasPointer-false'];\n case undefined:\n default:\n return styles['CustomScrollView--hasPointer-none'];\n }\n}\n\nexport interface CustomScrollViewProps\n extends React.AllHTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n TrackerOptionsProps {\n windowResize?: boolean;\n boxRef?: React.Ref<HTMLDivElement>;\n className?: HTMLDivElement['className'];\n onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;\n children: React.ReactNode;\n}\n\nexport const CustomScrollView = ({\n className,\n children,\n boxRef: externalBoxRef,\n windowResize,\n autoHideScrollbar = false,\n autoHideScrollbarDelay,\n onScroll,\n getRootRef,\n ...restProps\n}: CustomScrollViewProps) => {\n const { document, window } = useDOM();\n const { hasPointer } = useAdaptivity();\n\n const ratio = React.useRef(NaN);\n const lastTrackerTop = React.useRef(0);\n const clientHeight = React.useRef(0);\n const trackerHeight = React.useRef(0);\n const scrollHeight = React.useRef(0);\n const transformProp = React.useRef('');\n const startY = React.useRef(0);\n const trackerTop = React.useRef(0);\n\n const boxRef = useExternRef(externalBoxRef);\n\n const barY = React.useRef<HTMLDivElement>(null);\n const trackerY = React.useRef<HTMLDivElement>(null);\n\n const setTrackerPosition = (scrollTop: number) => {\n lastTrackerTop.current = scrollTop;\n if (trackerY.current !== null) {\n (trackerY.current.style as any)[transformProp.current] = `translate(0, ${scrollTop}px)`;\n }\n };\n\n const setTrackerPositionFromScroll = (scrollTop: number) => {\n const progress = scrollTop / (scrollHeight.current - clientHeight.current);\n setTrackerPosition((clientHeight.current - trackerHeight.current) * progress);\n };\n\n const resize = () => {\n if (!boxRef.current || !barY.current || !trackerY.current) {\n return;\n }\n const localClientHeight = boxRef.current.clientHeight;\n const localScrollHeight = boxRef.current.scrollHeight;\n const localRatio = localClientHeight / localScrollHeight;\n const localTrackerHeight = Math.max(localClientHeight * localRatio, 40);\n\n ratio.current = localRatio;\n clientHeight.current = localClientHeight;\n scrollHeight.current = localScrollHeight;\n trackerHeight.current = localTrackerHeight;\n\n if (localRatio >= 1) {\n barY.current.style.display = 'none';\n } else {\n barY.current.style.display = '';\n trackerY.current.style.height = `${localTrackerHeight}px`;\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n }\n };\n\n const resizeHandler = useEventListener('resize', resize);\n\n useIsomorphicLayoutEffect(() => {\n if (windowResize && window) {\n resizeHandler.add(window);\n }\n }, [windowResize, window]);\n\n useIsomorphicLayoutEffect(() => {\n let style = trackerY.current?.style;\n let prop = '';\n if (style !== undefined) {\n if ('transform' in style) {\n prop = 'transform';\n } else if ('webkitTransform' in style) {\n prop = 'webkitTransform';\n }\n }\n transformProp.current = prop;\n }, []);\n\n useIsomorphicLayoutEffect(resize);\n\n const setScrollPositionFromTracker = (trackerTop: number) => {\n const progress = trackerTop / (clientHeight.current - trackerHeight.current);\n if (boxRef.current !== null) {\n boxRef.current.scrollTop = (scrollHeight.current - clientHeight.current) * progress;\n }\n };\n\n const onMove = (e: MouseEvent) => {\n e.preventDefault();\n const diff = e.clientY - startY.current;\n const position = Math.min(\n Math.max(trackerTop.current + diff, 0),\n clientHeight.current - trackerHeight.current,\n );\n\n setScrollPositionFromTracker(position);\n };\n\n const {\n trackerVisible,\n onTargetScroll,\n onTrackerDragStart,\n onTrackerDragStop,\n onTrackerMouseEnter,\n onTrackerMouseLeave,\n } = useTrackerVisibility(autoHideScrollbar, autoHideScrollbarDelay);\n\n const onUp = (e: MouseEvent) => {\n e.preventDefault();\n\n if (autoHideScrollbar) {\n onTrackerDragStop();\n }\n\n unsubscribe();\n };\n\n const scroll = (event: React.UIEvent<HTMLDivElement>) => {\n if (ratio.current >= 1 || !boxRef.current) {\n return;\n }\n\n if (autoHideScrollbar) {\n onTargetScroll();\n }\n\n setTrackerPositionFromScroll(boxRef.current.scrollTop);\n onScroll?.(event);\n };\n\n const listeners = [useEventListener('mousemove', onMove), useEventListener('mouseup', onUp)];\n\n function subscribe(el: Document | undefined) {\n if (el) {\n listeners.forEach((l) => l.add(el));\n }\n }\n\n function unsubscribe() {\n listeners.forEach((l) => l.remove());\n }\n\n const onDragStart = (e: React.MouseEvent) => {\n e.preventDefault();\n startY.current = e.clientY;\n trackerTop.current = lastTrackerTop.current;\n\n if (autoHideScrollbar) {\n onTrackerDragStart();\n }\n\n subscribe(document);\n };\n\n return (\n <div\n className={classNames(className, styles['CustomScrollView'], hasPointerClassName(hasPointer))}\n ref={getRootRef}\n {...restProps}\n >\n <div className={styles['CustomScrollView__box']} tabIndex={-1} ref={boxRef} onScroll={scroll}>\n {children}\n </div>\n\n <div className={styles['CustomScrollView__barY']} ref={barY} onClick={stopPropagation}>\n <div\n className={classNames(\n styles['CustomScrollView__trackerY'],\n !trackerVisible && styles['CustomScrollView__trackerY--hidden'],\n )}\n onMouseEnter={autoHideScrollbar ? onTrackerMouseEnter : undefined}\n onMouseLeave={autoHideScrollbar ? onTrackerMouseLeave : undefined}\n ref={trackerY}\n onMouseDown={onDragStart}\n />\n </div>\n </div>\n );\n};\n"],"names":["CustomScrollView","hasPointerClassName","hasPointer","undefined","className","children","boxRef","externalBoxRef","windowResize","autoHideScrollbar","autoHideScrollbarDelay","onScroll","getRootRef","restProps","document","window","useDOM","useAdaptivity","ratio","React","useRef","NaN","lastTrackerTop","clientHeight","trackerHeight","scrollHeight","transformProp","startY","trackerTop","useExternRef","barY","trackerY","setTrackerPosition","scrollTop","current","style","setTrackerPositionFromScroll","progress","resize","localClientHeight","localScrollHeight","localRatio","localTrackerHeight","Math","max","display","height","resizeHandler","useEventListener","useIsomorphicLayoutEffect","add","prop","setScrollPositionFromTracker","onMove","e","preventDefault","diff","clientY","position","min","trackerVisible","onTargetScroll","onTrackerDragStart","onTrackerDragStop","onTrackerMouseEnter","onTrackerMouseLeave","useTrackerVisibility","onUp","unsubscribe","scroll","event","listeners","subscribe","el","forEach","l","remove","onDragStart","div","classNames","ref","tabIndex","onClick","stopPropagation","onMouseEnter","onMouseLeave","onMouseDown"],"mappings":"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"}
@@ -23,22 +23,22 @@ export interface TrackerVisibilityProps {
23
23
  /**
24
24
  * Функция для обработки события у блока со скроллом
25
25
  */
26
- onTargetScroll(this: void): void;
26
+ onTargetScroll: (this: void) => void;
27
27
  /**
28
28
  * Функция для обработки начала drag event ползунка
29
29
  */
30
- onTrackerDragStart(this: void): void;
30
+ onTrackerDragStart: (this: void) => void;
31
31
  /**
32
32
  * Функция для обработки окончания drag event ползунка
33
33
  */
34
- onTrackerDragStop(this: void): void;
34
+ onTrackerDragStop: (this: void) => void;
35
35
  /**
36
36
  * Функция для обработки mouseLeave event ползунка
37
37
  */
38
- onTrackerMouseEnter(this: void): void;
38
+ onTrackerMouseEnter: (this: void) => void;
39
39
  /**
40
40
  * Функция для обработки mouseEnter event ползунка
41
41
  */
42
- onTrackerMouseLeave(this: void): void;
42
+ onTrackerMouseLeave: (this: void) => void;
43
43
  }
44
44
  //# sourceMappingURL=useTrackerVisibility.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTrackerVisibility.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomScrollView/useTrackerVisibility.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,oEAG9B,sBA0DF,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACjC;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACrC;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACpC;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACtC;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACvC"}
1
+ {"version":3,"file":"useTrackerVisibility.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomScrollView/useTrackerVisibility.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,oEAG9B,sBA0DF,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACrC;;OAEG;IACH,kBAAkB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACzC;;OAEG;IACH,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,mBAAmB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC1C;;OAEG;IACH,mBAAmB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CAC3C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CustomScrollView/useTrackerVisibility.ts"],"sourcesContent":["import * as React from 'react';\nimport { useTimeout } from '../../hooks/useTimeout';\n\n/**\n * Хук, который позволяет управлять видимостью ползунка скроллбара.\n * @param autoHideScrollbar - скрывать ли ползунок скроллбара\n * @param autoHideScrollbarDelay - через какое кол-во миллисекунд ползунок скроллбара скрывается\n * @returns Объект, содержащий параметры, которые позволяют управлять видимостью ползунка\n */\nexport const useTrackerVisibility = (\n autoHideScrollbar = false,\n autoHideScrollbarDelay = 500,\n): TrackerVisibilityProps => {\n const [trackerVisible, setTrackerVisible] = React.useState(!autoHideScrollbar);\n const isMouseOver = React.useRef(false);\n const isTrackerDragging = React.useRef(false);\n\n const { set: setVisibilityTimeout, clear: clearVisibilityTimeout } = useTimeout(\n () => setTrackerVisible(false),\n autoHideScrollbarDelay,\n );\n\n const onTrackerDragStart = React.useCallback(() => {\n clearVisibilityTimeout();\n setTrackerVisible(true);\n isTrackerDragging.current = true;\n }, [clearVisibilityTimeout]);\n\n const onTrackerDragStop = React.useCallback(() => {\n isTrackerDragging.current = false;\n if (!isMouseOver.current) {\n setVisibilityTimeout();\n }\n }, [setVisibilityTimeout, isMouseOver]);\n\n /**\n * Позволяет \"запланировать\" скрытие ползунка через delay миллисекунд. Если тайм-аут не успевает сработать, то каждый\n * последующий вызов функции откладывает скрытие ползунка на delay миллисекунд\n */\n const queueTrackerVisibility = React.useCallback(() => {\n if (isTrackerDragging.current) {\n return;\n }\n setTrackerVisible(true);\n setVisibilityTimeout();\n }, [setVisibilityTimeout]);\n\n const onTrackerMouseEnter = React.useCallback(() => {\n clearVisibilityTimeout();\n isMouseOver.current = true;\n setTrackerVisible(true);\n }, [clearVisibilityTimeout]);\n\n const onTrackerMouseLeave = React.useCallback(() => {\n queueTrackerVisibility();\n isMouseOver.current = false;\n }, [queueTrackerVisibility]);\n\n const onTargetScroll = React.useCallback(() => {\n queueTrackerVisibility();\n }, [queueTrackerVisibility]);\n\n return {\n trackerVisible,\n onTrackerDragStart,\n onTrackerDragStop,\n onTrackerMouseEnter,\n onTrackerMouseLeave,\n onTargetScroll,\n };\n};\n\nexport interface TrackerOptionsProps {\n /**\n * Скрывать ли ползунок скроллбара\n */\n autoHideScrollbar?: boolean;\n /**\n * Через какое кол-во миллисекунд ползунок скроллбара скрывается\n */\n autoHideScrollbarDelay?: number;\n}\n\nexport interface TrackerVisibilityProps {\n /**\n * Отвечает за видимость ползунка\n */\n trackerVisible: boolean;\n /**\n * Функция для обработки события у блока со скроллом\n */\n onTargetScroll(this: void): void;\n /**\n * Функция для обработки начала drag event ползунка\n */\n onTrackerDragStart(this: void): void;\n /**\n * Функция для обработки окончания drag event ползунка\n */\n onTrackerDragStop(this: void): void;\n /**\n * Функция для обработки mouseLeave event ползунка\n */\n onTrackerMouseEnter(this: void): void;\n /**\n * Функция для обработки mouseEnter event ползунка\n */\n onTrackerMouseLeave(this: void): void;\n}\n"],"names":["useTrackerVisibility","autoHideScrollbar","autoHideScrollbarDelay","trackerVisible","setTrackerVisible","React","useState","isMouseOver","useRef","isTrackerDragging","set","setVisibilityTimeout","clear","clearVisibilityTimeout","useTimeout","onTrackerDragStart","useCallback","current","onTrackerDragStop","queueTrackerVisibility","onTrackerMouseEnter","onTrackerMouseLeave","onTargetScroll"],"mappings":";;;;+BASaA;;;eAAAA;;;;iEATU;4BACI;AAQpB,MAAMA,uBAAuB,CAClCC,oBAAoB,KAAK,EACzBC,yBAAyB,GAAG;IAE5B,MAAM,CAACC,gBAAgBC,kBAAkB,GAAGC,OAAMC,QAAQ,CAAC,CAACL;IAC5D,MAAMM,cAAcF,OAAMG,MAAM,CAAC;IACjC,MAAMC,oBAAoBJ,OAAMG,MAAM,CAAC;IAEvC,MAAM,EAAEE,KAAKC,oBAAoB,EAAEC,OAAOC,sBAAsB,EAAE,GAAGC,IAAAA,sBAAU,EAC7E,IAAMV,kBAAkB,QACxBF;IAGF,MAAMa,qBAAqBV,OAAMW,WAAW,CAAC;QAC3CH;QACAT,kBAAkB;QAClBK,kBAAkBQ,OAAO,GAAG;IAC9B,GAAG;QAACJ;KAAuB;IAE3B,MAAMK,oBAAoBb,OAAMW,WAAW,CAAC;QAC1CP,kBAAkBQ,OAAO,GAAG;QAC5B,IAAI,CAACV,YAAYU,OAAO,EAAE;YACxBN;QACF;IACF,GAAG;QAACA;QAAsBJ;KAAY;IAEtC;;;GAGC,GACD,MAAMY,yBAAyBd,OAAMW,WAAW,CAAC;QAC/C,IAAIP,kBAAkBQ,OAAO,EAAE;YAC7B;QACF;QACAb,kBAAkB;QAClBO;IACF,GAAG;QAACA;KAAqB;IAEzB,MAAMS,sBAAsBf,OAAMW,WAAW,CAAC;QAC5CH;QACAN,YAAYU,OAAO,GAAG;QACtBb,kBAAkB;IACpB,GAAG;QAACS;KAAuB;IAE3B,MAAMQ,sBAAsBhB,OAAMW,WAAW,CAAC;QAC5CG;QACAZ,YAAYU,OAAO,GAAG;IACxB,GAAG;QAACE;KAAuB;IAE3B,MAAMG,iBAAiBjB,OAAMW,WAAW,CAAC;QACvCG;IACF,GAAG;QAACA;KAAuB;IAE3B,OAAO;QACLhB;QACAY;QACAG;QACAE;QACAC;QACAC;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../src/components/CustomScrollView/useTrackerVisibility.ts"],"sourcesContent":["import * as React from 'react';\nimport { useTimeout } from '../../hooks/useTimeout';\n\n/**\n * Хук, который позволяет управлять видимостью ползунка скроллбара.\n * @param autoHideScrollbar - скрывать ли ползунок скроллбара\n * @param autoHideScrollbarDelay - через какое кол-во миллисекунд ползунок скроллбара скрывается\n * @returns Объект, содержащий параметры, которые позволяют управлять видимостью ползунка\n */\nexport const useTrackerVisibility = (\n autoHideScrollbar = false,\n autoHideScrollbarDelay = 500,\n): TrackerVisibilityProps => {\n const [trackerVisible, setTrackerVisible] = React.useState(!autoHideScrollbar);\n const isMouseOver = React.useRef(false);\n const isTrackerDragging = React.useRef(false);\n\n const { set: setVisibilityTimeout, clear: clearVisibilityTimeout } = useTimeout(\n () => setTrackerVisible(false),\n autoHideScrollbarDelay,\n );\n\n const onTrackerDragStart = React.useCallback(() => {\n clearVisibilityTimeout();\n setTrackerVisible(true);\n isTrackerDragging.current = true;\n }, [clearVisibilityTimeout]);\n\n const onTrackerDragStop = React.useCallback(() => {\n isTrackerDragging.current = false;\n if (!isMouseOver.current) {\n setVisibilityTimeout();\n }\n }, [setVisibilityTimeout, isMouseOver]);\n\n /**\n * Позволяет \"запланировать\" скрытие ползунка через delay миллисекунд. Если тайм-аут не успевает сработать, то каждый\n * последующий вызов функции откладывает скрытие ползунка на delay миллисекунд\n */\n const queueTrackerVisibility = React.useCallback(() => {\n if (isTrackerDragging.current) {\n return;\n }\n setTrackerVisible(true);\n setVisibilityTimeout();\n }, [setVisibilityTimeout]);\n\n const onTrackerMouseEnter = React.useCallback(() => {\n clearVisibilityTimeout();\n isMouseOver.current = true;\n setTrackerVisible(true);\n }, [clearVisibilityTimeout]);\n\n const onTrackerMouseLeave = React.useCallback(() => {\n queueTrackerVisibility();\n isMouseOver.current = false;\n }, [queueTrackerVisibility]);\n\n const onTargetScroll = React.useCallback(() => {\n queueTrackerVisibility();\n }, [queueTrackerVisibility]);\n\n return {\n trackerVisible,\n onTrackerDragStart,\n onTrackerDragStop,\n onTrackerMouseEnter,\n onTrackerMouseLeave,\n onTargetScroll,\n };\n};\n\nexport interface TrackerOptionsProps {\n /**\n * Скрывать ли ползунок скроллбара\n */\n autoHideScrollbar?: boolean;\n /**\n * Через какое кол-во миллисекунд ползунок скроллбара скрывается\n */\n autoHideScrollbarDelay?: number;\n}\n\nexport interface TrackerVisibilityProps {\n /**\n * Отвечает за видимость ползунка\n */\n trackerVisible: boolean;\n /**\n * Функция для обработки события у блока со скроллом\n */\n onTargetScroll: (this: void) => void;\n /**\n * Функция для обработки начала drag event ползунка\n */\n onTrackerDragStart: (this: void) => void;\n /**\n * Функция для обработки окончания drag event ползунка\n */\n onTrackerDragStop: (this: void) => void;\n /**\n * Функция для обработки mouseLeave event ползунка\n */\n onTrackerMouseEnter: (this: void) => void;\n /**\n * Функция для обработки mouseEnter event ползунка\n */\n onTrackerMouseLeave: (this: void) => void;\n}\n"],"names":["useTrackerVisibility","autoHideScrollbar","autoHideScrollbarDelay","trackerVisible","setTrackerVisible","React","useState","isMouseOver","useRef","isTrackerDragging","set","setVisibilityTimeout","clear","clearVisibilityTimeout","useTimeout","onTrackerDragStart","useCallback","current","onTrackerDragStop","queueTrackerVisibility","onTrackerMouseEnter","onTrackerMouseLeave","onTargetScroll"],"mappings":";;;;+BASaA;;;eAAAA;;;;iEATU;4BACI;AAQpB,MAAMA,uBAAuB,CAClCC,oBAAoB,KAAK,EACzBC,yBAAyB,GAAG;IAE5B,MAAM,CAACC,gBAAgBC,kBAAkB,GAAGC,OAAMC,QAAQ,CAAC,CAACL;IAC5D,MAAMM,cAAcF,OAAMG,MAAM,CAAC;IACjC,MAAMC,oBAAoBJ,OAAMG,MAAM,CAAC;IAEvC,MAAM,EAAEE,KAAKC,oBAAoB,EAAEC,OAAOC,sBAAsB,EAAE,GAAGC,IAAAA,sBAAU,EAC7E,IAAMV,kBAAkB,QACxBF;IAGF,MAAMa,qBAAqBV,OAAMW,WAAW,CAAC;QAC3CH;QACAT,kBAAkB;QAClBK,kBAAkBQ,OAAO,GAAG;IAC9B,GAAG;QAACJ;KAAuB;IAE3B,MAAMK,oBAAoBb,OAAMW,WAAW,CAAC;QAC1CP,kBAAkBQ,OAAO,GAAG;QAC5B,IAAI,CAACV,YAAYU,OAAO,EAAE;YACxBN;QACF;IACF,GAAG;QAACA;QAAsBJ;KAAY;IAEtC;;;GAGC,GACD,MAAMY,yBAAyBd,OAAMW,WAAW,CAAC;QAC/C,IAAIP,kBAAkBQ,OAAO,EAAE;YAC7B;QACF;QACAb,kBAAkB;QAClBO;IACF,GAAG;QAACA;KAAqB;IAEzB,MAAMS,sBAAsBf,OAAMW,WAAW,CAAC;QAC5CH;QACAN,YAAYU,OAAO,GAAG;QACtBb,kBAAkB;IACpB,GAAG;QAACS;KAAuB;IAE3B,MAAMQ,sBAAsBhB,OAAMW,WAAW,CAAC;QAC5CG;QACAZ,YAAYU,OAAO,GAAG;IACxB,GAAG;QAACE;KAAuB;IAE3B,MAAMG,iBAAiBjB,OAAMW,WAAW,CAAC;QACvCG;IACF,GAAG;QAACA;KAAuB;IAE3B,OAAO;QACLhB;QACAY;QACAG;QACAE;QACAC;QACAC;IACF;AACF"}
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import { HasDataAttribute } from '../../types';
3
3
  export interface CustomSelectClearButtonProps extends HasDataAttribute {
4
4
  className?: string;
5
- onClick(): void;
5
+ onClick: () => void;
6
6
  disabled?: boolean;
7
7
  }
8
8
  export declare const CustomSelectClearButton: ({ className, onClick, ...restProps }: CustomSelectClearButtonProps) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"CustomSelectClearButton.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelect/CustomSelectClearButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,4BAA6B,SAAQ,gBAAgB;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,IAAI,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,uBAAuB,yCAIjC,4BAA4B,sBAoB9B,CAAC"}
1
+ {"version":3,"file":"CustomSelectClearButton.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelect/CustomSelectClearButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,4BAA6B,SAAQ,gBAAgB;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,uBAAuB,yCAIjC,4BAA4B,sBAoB9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CustomSelect/CustomSelectClearButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Cancel } from '@vkontakte/icons';\nimport { stopPropagation } from '../../lib/utils';\nimport { HasDataAttribute } from '../../types';\nimport { IconButton } from '../IconButton/IconButton';\n\nexport interface CustomSelectClearButtonProps extends HasDataAttribute {\n className?: string;\n onClick(): void;\n disabled?: boolean;\n}\n\nexport const CustomSelectClearButton = ({\n className,\n onClick,\n ...restProps\n}: CustomSelectClearButtonProps) => {\n return (\n <IconButton\n Component=\"button\"\n label=\"Очистить поле\"\n onKeyDown={stopPropagation}\n type=\"button\"\n activeMode=\"opacity\"\n hoverMode=\"opacity\"\n {...restProps}\n className={className}\n onClick={(e) => {\n stopPropagation(e);\n e.preventDefault();\n onClick();\n }}\n >\n <Icon16Cancel />\n </IconButton>\n );\n};\n"],"names":["CustomSelectClearButton","className","onClick","restProps","IconButton","Component","label","onKeyDown","stopPropagation","type","activeMode","hoverMode","e","preventDefault","Icon16Cancel"],"mappings":";;;;+BAYaA;;;eAAAA;;;;;;;iEAZU;uBACM;uBACG;4BAEL;AAQpB,MAAMA,0BAA0B;QAAC,EACtCC,SAAS,EACTC,OAAO,EAEsB,WAD1BC;QAFHF;QACAC;;IAGA,qBACE,qBAACE,sBAAU;QACTC,WAAU;QACVC,OAAM;QACNC,WAAWC,sBAAe;QAC1BC,MAAK;QACLC,YAAW;QACXC,WAAU;OACNR;QACJF,WAAWA;QACXC,SAAS,CAACU;YACRJ,IAAAA,sBAAe,EAACI;YAChBA,EAAEC,cAAc;YAChBX;QACF;sBAEA,qBAACY,mBAAY;AAGnB"}
1
+ {"version":3,"sources":["../../../../src/components/CustomSelect/CustomSelectClearButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Cancel } from '@vkontakte/icons';\nimport { stopPropagation } from '../../lib/utils';\nimport { HasDataAttribute } from '../../types';\nimport { IconButton } from '../IconButton/IconButton';\n\nexport interface CustomSelectClearButtonProps extends HasDataAttribute {\n className?: string;\n onClick: () => void;\n disabled?: boolean;\n}\n\nexport const CustomSelectClearButton = ({\n className,\n onClick,\n ...restProps\n}: CustomSelectClearButtonProps) => {\n return (\n <IconButton\n Component=\"button\"\n label=\"Очистить поле\"\n onKeyDown={stopPropagation}\n type=\"button\"\n activeMode=\"opacity\"\n hoverMode=\"opacity\"\n {...restProps}\n className={className}\n onClick={(e) => {\n stopPropagation(e);\n e.preventDefault();\n onClick();\n }}\n >\n <Icon16Cancel />\n </IconButton>\n );\n};\n"],"names":["CustomSelectClearButton","className","onClick","restProps","IconButton","Component","label","onKeyDown","stopPropagation","type","activeMode","hoverMode","e","preventDefault","Icon16Cancel"],"mappings":";;;;+BAYaA;;;eAAAA;;;;;;;iEAZU;uBACM;uBACG;4BAEL;AAQpB,MAAMA,0BAA0B;QAAC,EACtCC,SAAS,EACTC,OAAO,EAEsB,WAD1BC;QAFHF;QACAC;;IAGA,qBACE,qBAACE,sBAAU;QACTC,WAAU;QACVC,OAAM;QACNC,WAAWC,sBAAe;QAC1BC,MAAK;QACLC,YAAW;QACXC,WAAU;OACNR;QACJF,WAAWA;QACXC,SAAS,CAACU;YACRJ,IAAAA,sBAAe,EAACI;YAChBA,EAAEC,cAAc;YAChBX;QACF;sBAEA,qBAACY,mBAAY;AAGnB"}
@@ -13,7 +13,7 @@ export interface CustomSelectDropdownProps extends HTMLAttributesWithRootRef<HTM
13
13
  */
14
14
  autoWidth?: boolean;
15
15
  forcePortal?: boolean;
16
- onPlacementChange?(placement: Placement): void;
16
+ onPlacementChange?: (placement: Placement) => void;
17
17
  /**
18
18
  * Отключает максимальную высоту по умолчанию
19
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"CustomSelectDropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAK/E,MAAM,WAAW,yBACf,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAC/C,mBAAmB;IACrB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/C;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAID,eAAO,MAAM,oBAAoB,oOAe9B,yBAAyB,sBAoD3B,CAAC"}
1
+ {"version":3,"file":"CustomSelectDropdown.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAK/E,MAAM,WAAW,yBACf,SAAQ,yBAAyB,CAAC,cAAc,CAAC,EAC/C,mBAAmB;IACrB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAID,eAAO,MAAM,oBAAoB,oOAe9B,yBAAyB,sBAoD3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport type { Placement } from '../../lib/floating';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { CustomScrollView } from '../CustomScrollView/CustomScrollView';\nimport { TrackerOptionsProps } from '../CustomScrollView/useTrackerVisibility';\nimport { Popper } from '../Popper/Popper';\nimport { Spinner } from '../Spinner/Spinner';\nimport styles from './CustomSelectDropdown.module.css';\n\nexport interface CustomSelectDropdownProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n TrackerOptionsProps {\n targetRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n scrollBoxRef?: React.Ref<HTMLDivElement>;\n fetching?: boolean;\n offsetDistance?: number;\n /**\n * Ширина раскрывающегося списка зависит от контента\n */\n autoWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange?(placement: Placement): void;\n /**\n * Отключает максимальную высоту по умолчанию\n */\n noMaxHeight?: boolean;\n}\n\nconst calcIsTop = (placement: Placement) => placement.startsWith('top');\n\nexport const CustomSelectDropdown = ({\n children,\n targetRef,\n scrollBoxRef,\n placement = 'bottom',\n fetching,\n onPlacementChange: parentOnPlacementChange,\n offsetDistance = 0,\n autoWidth = false,\n forcePortal = true,\n autoHideScrollbar,\n autoHideScrollbarDelay,\n className,\n noMaxHeight = false,\n ...restProps\n}: CustomSelectDropdownProps) => {\n const [isTop, setIsTop] = React.useState(() => calcIsTop(placement));\n\n const onPlacementChange = React.useCallback(\n (placement: Placement) => {\n setIsTop(calcIsTop(placement));\n if (parentOnPlacementChange) {\n parentOnPlacementChange(placement);\n }\n },\n [parentOnPlacementChange],\n );\n\n return (\n <Popper\n targetRef={targetRef}\n offsetByMainAxis={offsetDistance}\n sameWidth={!autoWidth}\n onPlacementChange={onPlacementChange}\n placement={placement}\n className={classNames(\n styles['CustomSelectDropdown'],\n 'vkuiInternalCustomSelectDropdown',\n offsetDistance === 0 &&\n (isTop ? styles['CustomSelectDropdown--top'] : styles['CustomSelectDropdown--bottom']),\n autoWidth &&\n classNames(\n styles['CustomSelectDropdown--wide'],\n 'vkuiInternalCustomSelectDropdown--wide',\n ),\n className,\n )}\n usePortal={forcePortal}\n autoUpdateOnTargetResize\n {...restProps}\n >\n <CustomScrollView\n boxRef={scrollBoxRef}\n className={noMaxHeight ? undefined : styles['CustomSelectDropdown__in--withMaxHeight']}\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n >\n {fetching ? (\n <div className={styles['CustomSelectDropdown__fetching']}>\n <Spinner size=\"small\" />\n </div>\n ) : (\n children\n )}\n </CustomScrollView>\n </Popper>\n );\n};\n"],"names":["CustomSelectDropdown","calcIsTop","placement","startsWith","children","targetRef","scrollBoxRef","fetching","onPlacementChange","parentOnPlacementChange","offsetDistance","autoWidth","forcePortal","autoHideScrollbar","autoHideScrollbarDelay","className","noMaxHeight","restProps","isTop","setIsTop","React","useState","useCallback","Popper","offsetByMainAxis","sameWidth","classNames","usePortal","autoUpdateOnTargetResize","CustomScrollView","boxRef","undefined","div","Spinner","size"],"mappings":";;;;+BAgCaA;;;eAAAA;;;;;;iEAhCU;sBACI;kCAGM;wBAEV;yBACC;AAuBxB,MAAMC,YAAY,CAACC,YAAyBA,UAAUC,UAAU,CAAC;AAE1D,MAAMH,uBAAuB;QAAC,EACnCI,QAAQ,EACRC,SAAS,EACTC,YAAY,EACZJ,YAAY,QAAQ,EACpBK,QAAQ,EACRC,mBAAmBC,uBAAuB,EAC1CC,iBAAiB,CAAC,EAClBC,YAAY,KAAK,EACjBC,cAAc,IAAI,EAClBC,iBAAiB,EACjBC,sBAAsB,EACtBC,SAAS,EACTC,cAAc,KAAK,EAEO,WADvBC;QAbHb;QACAC;QACAC;QACAJ;QACAK;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAM,CAACE,OAAOC,SAAS,GAAGC,OAAMC,QAAQ,CAAC,IAAMpB,UAAUC;IAEzD,MAAMM,oBAAoBY,OAAME,WAAW,CACzC,CAACpB;QACCiB,SAASlB,UAAUC;QACnB,IAAIO,yBAAyB;YAC3BA,wBAAwBP;QAC1B;IACF,GACA;QAACO;KAAwB;IAG3B,qBACE,qBAACc,cAAM;QACLlB,WAAWA;QACXmB,kBAAkBd;QAClBe,WAAW,CAACd;QACZH,mBAAmBA;QACnBN,WAAWA;QACXa,WAAWW,IAAAA,gBAAU,8BAEnB,oCACAhB,mBAAmB,KAChBQ,CAAAA,4EAAmF,GACtFP,aACEe,IAAAA,gBAAU,oCAER,2CAEJX;QAEFY,WAAWf;QACXgB,0BAAAA;OACIX,0BAEJ,qBAACY,kCAAgB;QACfC,QAAQxB;QACRS,WAAWC,cAAce;QACzBlB,mBAAmBA;QACnBC,wBAAwBA;OAEvBP,yBACC,qBAACyB;QAAIjB,SAAS;qBACZ,qBAACkB,gBAAO;QAACC,MAAK;UAGhB9B;AAKV"}
1
+ {"version":3,"sources":["../../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport type { Placement } from '../../lib/floating';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { CustomScrollView } from '../CustomScrollView/CustomScrollView';\nimport { TrackerOptionsProps } from '../CustomScrollView/useTrackerVisibility';\nimport { Popper } from '../Popper/Popper';\nimport { Spinner } from '../Spinner/Spinner';\nimport styles from './CustomSelectDropdown.module.css';\n\nexport interface CustomSelectDropdownProps\n extends HTMLAttributesWithRootRef<HTMLDivElement>,\n TrackerOptionsProps {\n targetRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n scrollBoxRef?: React.Ref<HTMLDivElement>;\n fetching?: boolean;\n offsetDistance?: number;\n /**\n * Ширина раскрывающегося списка зависит от контента\n */\n autoWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange?: (placement: Placement) => void;\n /**\n * Отключает максимальную высоту по умолчанию\n */\n noMaxHeight?: boolean;\n}\n\nconst calcIsTop = (placement: Placement) => placement.startsWith('top');\n\nexport const CustomSelectDropdown = ({\n children,\n targetRef,\n scrollBoxRef,\n placement = 'bottom',\n fetching,\n onPlacementChange: parentOnPlacementChange,\n offsetDistance = 0,\n autoWidth = false,\n forcePortal = true,\n autoHideScrollbar,\n autoHideScrollbarDelay,\n className,\n noMaxHeight = false,\n ...restProps\n}: CustomSelectDropdownProps) => {\n const [isTop, setIsTop] = React.useState(() => calcIsTop(placement));\n\n const onPlacementChange = React.useCallback(\n (placement: Placement) => {\n setIsTop(calcIsTop(placement));\n if (parentOnPlacementChange) {\n parentOnPlacementChange(placement);\n }\n },\n [parentOnPlacementChange],\n );\n\n return (\n <Popper\n targetRef={targetRef}\n offsetByMainAxis={offsetDistance}\n sameWidth={!autoWidth}\n onPlacementChange={onPlacementChange}\n placement={placement}\n className={classNames(\n styles['CustomSelectDropdown'],\n 'vkuiInternalCustomSelectDropdown',\n offsetDistance === 0 &&\n (isTop ? styles['CustomSelectDropdown--top'] : styles['CustomSelectDropdown--bottom']),\n autoWidth &&\n classNames(\n styles['CustomSelectDropdown--wide'],\n 'vkuiInternalCustomSelectDropdown--wide',\n ),\n className,\n )}\n usePortal={forcePortal}\n autoUpdateOnTargetResize\n {...restProps}\n >\n <CustomScrollView\n boxRef={scrollBoxRef}\n className={noMaxHeight ? undefined : styles['CustomSelectDropdown__in--withMaxHeight']}\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n >\n {fetching ? (\n <div className={styles['CustomSelectDropdown__fetching']}>\n <Spinner size=\"small\" />\n </div>\n ) : (\n children\n )}\n </CustomScrollView>\n </Popper>\n );\n};\n"],"names":["CustomSelectDropdown","calcIsTop","placement","startsWith","children","targetRef","scrollBoxRef","fetching","onPlacementChange","parentOnPlacementChange","offsetDistance","autoWidth","forcePortal","autoHideScrollbar","autoHideScrollbarDelay","className","noMaxHeight","restProps","isTop","setIsTop","React","useState","useCallback","Popper","offsetByMainAxis","sameWidth","classNames","usePortal","autoUpdateOnTargetResize","CustomScrollView","boxRef","undefined","div","Spinner","size"],"mappings":";;;;+BAgCaA;;;eAAAA;;;;;;iEAhCU;sBACI;kCAGM;wBAEV;yBACC;AAuBxB,MAAMC,YAAY,CAACC,YAAyBA,UAAUC,UAAU,CAAC;AAE1D,MAAMH,uBAAuB;QAAC,EACnCI,QAAQ,EACRC,SAAS,EACTC,YAAY,EACZJ,YAAY,QAAQ,EACpBK,QAAQ,EACRC,mBAAmBC,uBAAuB,EAC1CC,iBAAiB,CAAC,EAClBC,YAAY,KAAK,EACjBC,cAAc,IAAI,EAClBC,iBAAiB,EACjBC,sBAAsB,EACtBC,SAAS,EACTC,cAAc,KAAK,EAEO,WADvBC;QAbHb;QACAC;QACAC;QACAJ;QACAK;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAM,CAACE,OAAOC,SAAS,GAAGC,OAAMC,QAAQ,CAAC,IAAMpB,UAAUC;IAEzD,MAAMM,oBAAoBY,OAAME,WAAW,CACzC,CAACpB;QACCiB,SAASlB,UAAUC;QACnB,IAAIO,yBAAyB;YAC3BA,wBAAwBP;QAC1B;IACF,GACA;QAACO;KAAwB;IAG3B,qBACE,qBAACc,cAAM;QACLlB,WAAWA;QACXmB,kBAAkBd;QAClBe,WAAW,CAACd;QACZH,mBAAmBA;QACnBN,WAAWA;QACXa,WAAWW,IAAAA,gBAAU,8BAEnB,oCACAhB,mBAAmB,KAChBQ,CAAAA,4EAAmF,GACtFP,aACEe,IAAAA,gBAAU,oCAER,2CAEJX;QAEFY,WAAWf;QACXgB,0BAAAA;OACIX,0BAEJ,qBAACY,kCAAgB;QACfC,QAAQxB;QACRS,WAAWC,cAAce;QACzBlB,mBAAmBA;QACnBC,wBAAwBA;OAEvBP,yBACC,qBAACyB;QAAIjB,SAAS;qBACZ,qBAACkB,gBAAO;QAACC,MAAK;UAGhB9B;AAKV"}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomSelectOption.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAUxD,MAAM,WAAW,uBAAwB,SAAQ,yBAAyB,CAAC,cAAc,CAAC;IACxF;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,sJAa5B,uBAAuB,sBA8CzB,CAAC"}
1
+ {"version":3,"file":"CustomSelectOption.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAWxD,MAAM,WAAW,uBAAwB,SAAQ,yBAAyB,CAAC,cAAc,CAAC;IACxF;;OAEG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,sJAa5B,uBAAuB,sBAiDzB,CAAC"}
@@ -18,6 +18,7 @@ const _vkjs = require("@vkontakte/vkjs");
18
18
  const _useAdaptivity = require("../../hooks/useAdaptivity");
19
19
  const _Footnote = require("../Typography/Footnote/Footnote");
20
20
  const _Paragraph = require("../Typography/Paragraph/Paragraph");
21
+ const _VisuallyHidden = require("../VisuallyHidden/VisuallyHidden");
21
22
  const sizeYClassNames = {
22
23
  none: "vkuiCustomSelectOption--sizeY-none",
23
24
  ['regular']: "vkuiCustomSelectOption--sizeY-regular"
@@ -61,7 +62,7 @@ const CustomSelectOption = (_param)=>{
61
62
  className: "vkuiCustomSelectOption__children"
62
63
  }, children), (0, _vkjs.hasReactNode)(description) && /*#__PURE__*/ _react.createElement(_Footnote.Footnote, {
63
64
  className: "vkuiCustomSelectOption__description"
64
- }, description)), /*#__PURE__*/ _react.createElement("div", {
65
+ }, /*#__PURE__*/ _react.createElement(_VisuallyHidden.VisuallyHidden, null, " "), description)), /*#__PURE__*/ _react.createElement("div", {
65
66
  className: "vkuiCustomSelectOption__after"
66
67
  }, (0, _vkjs.hasReactNode)(after) && /*#__PURE__*/ _react.createElement("div", null, after), selected && /*#__PURE__*/ _react.createElement(_icons.Icon16Done, {
67
68
  className: "vkuiCustomSelectOption__selectedIcon"
@@ -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":["CustomSelectOption","sizeYClassNames","none","children","hierarchy","hovered","hoveredProp","selected","before","after","description","disabled","style","styleProp","className","onClick","restProps","sizeY","useAdaptivity","React","useMemo","Paragraph","undefined","Component","role","aria-disabled","aria-selected","data-hovered","classNames","hasReactNode","div","Footnote","Icon16Done"],"mappings":";;;;+BA0DaA;;;eAAAA;;;;;;;iEA1DU;uBACI;sBACc;+BACX;0BAEL;2BACC;AAG1B,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;AACb;AA8CO,MAAMF,qBAAqB;QAAC,EACjCG,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,GAAGC,IAAAA,4BAAa;IACxC,MAAMN,QAAQO,OAAMC,OAAO,CACzB,IACEhB,YAAY,IACR;YACE,yDAAyDA;WACtDS,aAELA,WACN;QAACT;QAAWS;KAAU;IAExB,MAAMR,UAAUC,eAAe,CAACK,WAAW,OAAO;IAElD,qBACE,qBAACU,oBAAS,8CACJL;QACJD,SAASJ,WAAWW,YAAYP;QAChCQ,WAAU;QACVC,MAAK;QACLC,iBAAed;QACfe,iBAAenB;QACfoB,gBAActB;QACdS,WAAWc,IAAAA,gBAAU,4BAEnBX,UAAU,aAAahB,eAAe,CAACgB,MAAM,EAC7CZ,4CACAM,gDACAP,YAAY,0CACZU;QAEFF,OAAOA;QAENiB,IAAAA,kBAAY,EAACrB,yBAAW,qBAACsB;QAAIhB,SAAS;OAAyCN,uBAChF,qBAACsB;QAAIhB,SAAS;qBACZ,qBAACgB;QAAIhB,SAAS;OAA2CX,WACxD0B,IAAAA,kBAAY,EAACnB,8BACZ,qBAACqB,kBAAQ;QAACjB,SAAS;OAA8CJ,6BAGrE,qBAACoB;QAAIhB,SAAS;OACXe,IAAAA,kBAAY,EAACpB,wBAAU,qBAACqB,aAAKrB,QAC7BF,0BAAY,qBAACyB,iBAAU;QAAClB,SAAS;;AAI1C"}
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":["CustomSelectOption","sizeYClassNames","none","children","hierarchy","hovered","hoveredProp","selected","before","after","description","disabled","style","styleProp","className","onClick","restProps","sizeY","useAdaptivity","React","useMemo","Paragraph","undefined","Component","role","aria-disabled","aria-selected","data-hovered","classNames","hasReactNode","div","Footnote","VisuallyHidden","Icon16Done"],"mappings":";;;;+BA2DaA;;;eAAAA;;;;;;;iEA3DU;uBACI;sBACc;+BACX;0BAEL;2BACC;gCACK;AAG/B,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;AACb;AA8CO,MAAMF,qBAAqB;QAAC,EACjCG,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,GAAGC,IAAAA,4BAAa;IACxC,MAAMN,QAAQO,OAAMC,OAAO,CACzB,IACEhB,YAAY,IACR;YACE,yDAAyDA;WACtDS,aAELA,WACN;QAACT;QAAWS;KAAU;IAExB,MAAMR,UAAUC,eAAe,CAACK,WAAW,OAAO;IAElD,qBACE,qBAACU,oBAAS,8CACJL;QACJD,SAASJ,WAAWW,YAAYP;QAChCQ,WAAU;QACVC,MAAK;QACLC,iBAAed;QACfe,iBAAenB;QACfoB,gBAActB;QACdS,WAAWc,IAAAA,gBAAU,4BAEnBX,UAAU,aAAahB,eAAe,CAACgB,MAAM,EAC7CZ,4CACAM,gDACAP,YAAY,0CACZU;QAEFF,OAAOA;QAENiB,IAAAA,kBAAY,EAACrB,yBAAW,qBAACsB;QAAIhB,SAAS;OAAyCN,uBAChF,qBAACsB;QAAIhB,SAAS;qBACZ,qBAACgB;QAAIhB,SAAS;OAA2CX,WACxD0B,IAAAA,kBAAY,EAACnB,8BACZ,qBAACqB,kBAAQ;QAACjB,SAAS;qBACjB,qBAACkB,8BAAc,QAAC,MACftB,6BAIP,qBAACoB;QAAIhB,SAAS;OACXe,IAAAA,kBAAY,EAACpB,wBAAU,qBAACqB,aAAKrB,QAC7BF,0BAAY,qBAAC0B,iBAAU;QAACnB,SAAS;;AAI1C"}
@@ -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"}