@vkontakte/vkui 7.5.3 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/dist/components/Calendar/Calendar.js +6 -6
  2. package/dist/components/Calendar/Calendar.js.map +1 -1
  3. package/dist/components/CalendarDays/CalendarDays.js +3 -3
  4. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  5. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  6. package/dist/components/CalendarRange/CalendarRange.js +16 -14
  7. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  8. package/dist/components/CalendarRange/utils.d.ts.map +1 -1
  9. package/dist/components/CalendarRange/utils.js +6 -5
  10. package/dist/components/CalendarRange/utils.js.map +1 -1
  11. package/dist/components/Cell/Cell.d.ts.map +1 -1
  12. package/dist/components/Cell/Cell.js +6 -3
  13. package/dist/components/Cell/Cell.js.map +1 -1
  14. package/dist/components/CellButtonGroup/CellButtonGroup.d.ts +5 -3
  15. package/dist/components/CellButtonGroup/CellButtonGroup.d.ts.map +1 -1
  16. package/dist/components/Checkbox/Checkbox.d.ts +4 -0
  17. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
  18. package/dist/components/Checkbox/Checkbox.js +4 -2
  19. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  20. package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts +1 -1
  21. package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.d.ts.map +1 -1
  22. package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js +6 -3
  23. package/dist/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -1
  24. package/dist/components/ChipsInputBase/Chip/Chip.d.ts +41 -2
  25. package/dist/components/ChipsInputBase/Chip/Chip.d.ts.map +1 -1
  26. package/dist/components/ChipsInputBase/Chip/Chip.js +7 -2
  27. package/dist/components/ChipsInputBase/Chip/Chip.js.map +1 -1
  28. package/dist/components/ChipsInputBase/ChipsInputBase.d.ts.map +1 -1
  29. package/dist/components/ChipsInputBase/ChipsInputBase.js +21 -1
  30. package/dist/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
  31. package/dist/components/ChipsInputBase/types.d.ts +2 -35
  32. package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
  33. package/dist/components/ChipsInputBase/types.js.map +1 -1
  34. package/dist/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
  35. package/dist/components/ChipsSelect/ChipsSelect.js +2 -4
  36. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  37. package/dist/components/ContentBadge/ContentBadge.d.ts +1 -1
  38. package/dist/components/ContentBadge/ContentBadge.d.ts.map +1 -1
  39. package/dist/components/ContentBadge/ContentBadge.js +15 -9
  40. package/dist/components/ContentBadge/ContentBadge.js.map +1 -1
  41. package/dist/components/ContentCard/ContentCard.d.ts +1 -1
  42. package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
  43. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  44. package/dist/components/CustomSelect/CustomSelect.d.ts +16 -27
  45. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  46. package/dist/components/CustomSelect/CustomSelect.js +161 -428
  47. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  48. package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts +3 -1
  49. package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts.map +1 -1
  50. package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.js +25 -5
  51. package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.js.map +1 -1
  52. package/dist/components/CustomSelect/helpers.d.ts +12 -0
  53. package/dist/components/CustomSelect/helpers.d.ts.map +1 -0
  54. package/dist/components/CustomSelect/helpers.js +63 -0
  55. package/dist/components/CustomSelect/helpers.js.map +1 -0
  56. package/dist/components/CustomSelect/hooks/useAfterItems.d.ts +11 -0
  57. package/dist/components/CustomSelect/hooks/useAfterItems.d.ts.map +1 -0
  58. package/dist/components/CustomSelect/hooks/useAfterItems.js +57 -0
  59. package/dist/components/CustomSelect/hooks/useAfterItems.js.map +1 -0
  60. package/dist/components/CustomSelect/hooks/useDropdownOpenedController.d.ts +13 -0
  61. package/dist/components/CustomSelect/hooks/useDropdownOpenedController.d.ts.map +1 -0
  62. package/dist/components/CustomSelect/hooks/useDropdownOpenedController.js +60 -0
  63. package/dist/components/CustomSelect/hooks/useDropdownOpenedController.js.map +1 -0
  64. package/dist/components/CustomSelect/hooks/useFocusedOptionController.d.ts +20 -0
  65. package/dist/components/CustomSelect/hooks/useFocusedOptionController.d.ts.map +1 -0
  66. package/dist/components/CustomSelect/hooks/useFocusedOptionController.js +52 -0
  67. package/dist/components/CustomSelect/hooks/useFocusedOptionController.js.map +1 -0
  68. package/dist/components/CustomSelect/hooks/useInputKeyboardController.d.ts +13 -0
  69. package/dist/components/CustomSelect/hooks/useInputKeyboardController.d.ts.map +1 -0
  70. package/dist/components/CustomSelect/hooks/useInputKeyboardController.js +78 -0
  71. package/dist/components/CustomSelect/hooks/useInputKeyboardController.js.map +1 -0
  72. package/dist/components/CustomSelect/hooks/useInputValueController.d.ts +15 -0
  73. package/dist/components/CustomSelect/hooks/useInputValueController.d.ts.map +1 -0
  74. package/dist/components/CustomSelect/hooks/useInputValueController.js +43 -0
  75. package/dist/components/CustomSelect/hooks/useInputValueController.js.map +1 -0
  76. package/dist/components/CustomSelect/hooks/useScrollListController.d.ts +9 -0
  77. package/dist/components/CustomSelect/hooks/useScrollListController.d.ts.map +1 -0
  78. package/dist/components/CustomSelect/hooks/useScrollListController.js +37 -0
  79. package/dist/components/CustomSelect/hooks/useScrollListController.js.map +1 -0
  80. package/dist/components/CustomSelect/hooks/useSelectedOptionController.d.ts +18 -0
  81. package/dist/components/CustomSelect/hooks/useSelectedOptionController.d.ts.map +1 -0
  82. package/dist/components/CustomSelect/hooks/useSelectedOptionController.js +81 -0
  83. package/dist/components/CustomSelect/hooks/useSelectedOptionController.js.map +1 -0
  84. package/dist/components/CustomSelect/types.d.ts +33 -0
  85. package/dist/components/CustomSelect/types.d.ts.map +1 -0
  86. package/dist/components/CustomSelect/types.js +3 -0
  87. package/dist/components/CustomSelect/types.js.map +1 -0
  88. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  89. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +1 -0
  90. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  91. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  92. package/dist/components/DateInput/DateInput.js +3 -2
  93. package/dist/components/DateInput/DateInput.js.map +1 -1
  94. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  95. package/dist/components/DateRangeInput/DateRangeInput.js +4 -4
  96. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  97. package/dist/components/ModalCard/ModalCard.d.ts +1 -1
  98. package/dist/components/ModalCard/ModalCard.d.ts.map +1 -1
  99. package/dist/components/ModalCard/ModalCard.js +4 -2
  100. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  101. package/dist/components/ModalCard/ModalCardInternal.d.ts +1 -1
  102. package/dist/components/ModalCard/ModalCardInternal.d.ts.map +1 -1
  103. package/dist/components/ModalCard/ModalCardInternal.js +5 -3
  104. package/dist/components/ModalCard/ModalCardInternal.js.map +1 -1
  105. package/dist/components/ModalCard/types.d.ts +6 -0
  106. package/dist/components/ModalCard/types.d.ts.map +1 -1
  107. package/dist/components/ModalCard/types.js.map +1 -1
  108. package/dist/components/ModalOutlet/ModalOutlet.d.ts +2 -1
  109. package/dist/components/ModalOutlet/ModalOutlet.d.ts.map +1 -1
  110. package/dist/components/ModalOutlet/ModalOutlet.js +4 -3
  111. package/dist/components/ModalOutlet/ModalOutlet.js.map +1 -1
  112. package/dist/components/ModalPage/ModalPage.d.ts +1 -1
  113. package/dist/components/ModalPage/ModalPage.d.ts.map +1 -1
  114. package/dist/components/ModalPage/ModalPage.js +3 -1
  115. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  116. package/dist/components/ModalPage/ModalPageInternal.d.ts +1 -1
  117. package/dist/components/ModalPage/ModalPageInternal.d.ts.map +1 -1
  118. package/dist/components/ModalPage/ModalPageInternal.js +5 -3
  119. package/dist/components/ModalPage/ModalPageInternal.js.map +1 -1
  120. package/dist/components/ModalPage/types.d.ts +6 -0
  121. package/dist/components/ModalPage/types.d.ts.map +1 -1
  122. package/dist/components/ModalPage/types.js.map +1 -1
  123. package/dist/components/ModalRoot/ModalRoot.d.ts +1 -1
  124. package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
  125. package/dist/components/ModalRoot/ModalRoot.js +4 -2
  126. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  127. package/dist/components/ModalRoot/types.d.ts +4 -0
  128. package/dist/components/ModalRoot/types.d.ts.map +1 -1
  129. package/dist/components/ModalRoot/types.js.map +1 -1
  130. package/dist/components/ModalRoot/useModalManager.d.ts +3 -1
  131. package/dist/components/ModalRoot/useModalManager.d.ts.map +1 -1
  132. package/dist/components/ModalRoot/useModalManager.js +2 -1
  133. package/dist/components/ModalRoot/useModalManager.js.map +1 -1
  134. package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts +2 -2
  135. package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
  136. package/dist/components/OnboardingTooltip/OnboardingTooltip.js +4 -2
  137. package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  138. package/dist/components/Popover/Popover.d.ts +1 -1
  139. package/dist/components/Popover/Popover.d.ts.map +1 -1
  140. package/dist/components/Popover/Popover.js.map +1 -1
  141. package/dist/components/Popover/usePopover.d.ts +1 -1
  142. package/dist/components/Popover/usePopover.d.ts.map +1 -1
  143. package/dist/components/Popover/usePopover.js +3 -1
  144. package/dist/components/Popover/usePopover.js.map +1 -1
  145. package/dist/components/Popper/Popper.d.ts +2 -2
  146. package/dist/components/Popper/Popper.d.ts.map +1 -1
  147. package/dist/components/Popper/Popper.js +3 -1
  148. package/dist/components/Popper/Popper.js.map +1 -1
  149. package/dist/components/Select/Select.d.ts +2 -1
  150. package/dist/components/Select/Select.d.ts.map +1 -1
  151. package/dist/components/Select/Select.js +5 -2
  152. package/dist/components/Select/Select.js.map +1 -1
  153. package/dist/components/SelectionControl/SelectionControl.d.ts +5 -1
  154. package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -1
  155. package/dist/components/SelectionControl/SelectionControl.js +22 -6
  156. package/dist/components/SelectionControl/SelectionControl.js.map +1 -1
  157. package/dist/components/SelectionControl/SelectionControlContext.d.ts +7 -0
  158. package/dist/components/SelectionControl/SelectionControlContext.d.ts.map +1 -0
  159. package/dist/components/SelectionControl/SelectionControlContext.js +7 -0
  160. package/dist/components/SelectionControl/SelectionControlContext.js.map +1 -0
  161. package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -1
  162. package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +3 -1
  163. package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -1
  164. package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
  165. package/dist/components/SimpleCell/SimpleCell.js +29 -8
  166. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  167. package/dist/components/Skeleton/Skeleton.js +1 -1
  168. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  169. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  170. package/dist/components/Tabs/Tabs.js +19 -9
  171. package/dist/components/Tabs/Tabs.js.map +1 -1
  172. package/dist/components/Tabs/TabsController.d.ts +2 -2
  173. package/dist/components/Tabs/TabsController.d.ts.map +1 -1
  174. package/dist/components/Tabs/TabsController.js.map +1 -1
  175. package/dist/components/Tabs/TabsControllerContext.d.ts +5 -0
  176. package/dist/components/Tabs/TabsControllerContext.d.ts.map +1 -0
  177. package/dist/components/Tabs/TabsControllerContext.js +4 -0
  178. package/dist/components/Tabs/TabsControllerContext.js.map +1 -0
  179. package/dist/components/Tabs/TabsModeContext.d.ts +0 -2
  180. package/dist/components/Tabs/TabsModeContext.d.ts.map +1 -1
  181. package/dist/components/Tabs/TabsModeContext.js +1 -2
  182. package/dist/components/Tabs/TabsModeContext.js.map +1 -1
  183. package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
  184. package/dist/components/TabsItem/TabsItem.js +3 -1
  185. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  186. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  187. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  188. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  189. package/dist/components/Tooltip/useTooltip.d.ts +1 -1
  190. package/dist/components/Tooltip/useTooltip.d.ts.map +1 -1
  191. package/dist/components/Tooltip/useTooltip.js +3 -1
  192. package/dist/components/Tooltip/useTooltip.js.map +1 -1
  193. package/dist/components/Typography/Caption/Caption.d.ts +2 -0
  194. package/dist/components/Typography/Caption/Caption.d.ts.map +1 -1
  195. package/dist/components/Typography/Caption/Caption.js +4 -1
  196. package/dist/components/Typography/Caption/Caption.js.map +1 -1
  197. package/dist/components/Typography/Footnote/Footnote.d.ts +2 -0
  198. package/dist/components/Typography/Footnote/Footnote.d.ts.map +1 -1
  199. package/dist/components/Typography/Footnote/Footnote.js +4 -1
  200. package/dist/components/Typography/Footnote/Footnote.js.map +1 -1
  201. package/dist/components/Typography/Typography.d.ts +1 -0
  202. package/dist/components/Typography/Typography.d.ts.map +1 -1
  203. package/dist/components/Typography/Typography.js +7 -1
  204. package/dist/components/Typography/Typography.js.map +1 -1
  205. package/dist/components/View/View.d.ts.map +1 -1
  206. package/dist/components/View/View.js +2 -1
  207. package/dist/components/View/View.js.map +1 -1
  208. package/dist/components/View/ViewInfinite.d.ts.map +1 -1
  209. package/dist/components/View/ViewInfinite.js +2 -1
  210. package/dist/components/View/ViewInfinite.js.map +1 -1
  211. package/dist/components.css +1 -1
  212. package/dist/components.css.map +1 -1
  213. package/dist/cssm/components/Banner/Banner.module.css +1 -6
  214. package/dist/cssm/components/Calendar/Calendar.js +6 -6
  215. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  216. package/dist/cssm/components/CalendarDays/CalendarDays.js +3 -3
  217. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  218. package/dist/cssm/components/CalendarRange/CalendarRange.js +16 -14
  219. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  220. package/dist/cssm/components/CalendarRange/utils.js +6 -5
  221. package/dist/cssm/components/CalendarRange/utils.js.map +1 -1
  222. package/dist/cssm/components/Cell/Cell.js +3 -1
  223. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  224. package/dist/cssm/components/Checkbox/Checkbox.js +2 -1
  225. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  226. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js +4 -2
  227. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -1
  228. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +11 -2
  229. package/dist/cssm/components/ChipsInputBase/Chip/Chip.js +6 -2
  230. package/dist/cssm/components/ChipsInputBase/Chip/Chip.js.map +1 -1
  231. package/dist/cssm/components/ChipsInputBase/Chip/Chip.module.css +8 -1
  232. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js +21 -1
  233. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.js.map +1 -1
  234. package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
  235. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -4
  236. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  237. package/dist/cssm/components/ContentBadge/ContentBadge.js +14 -8
  238. package/dist/cssm/components/ContentBadge/ContentBadge.js.map +1 -1
  239. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  240. package/dist/cssm/components/CustomSelect/CustomSelect.js +154 -421
  241. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  242. package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.js +22 -4
  243. package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.js.map +1 -1
  244. package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css +12 -0
  245. package/dist/cssm/components/CustomSelect/helpers.js +62 -0
  246. package/dist/cssm/components/CustomSelect/helpers.js.map +1 -0
  247. package/dist/cssm/components/CustomSelect/hooks/useAfterItems.js +58 -0
  248. package/dist/cssm/components/CustomSelect/hooks/useAfterItems.js.map +1 -0
  249. package/dist/cssm/components/CustomSelect/hooks/useDropdownOpenedController.js +60 -0
  250. package/dist/cssm/components/CustomSelect/hooks/useDropdownOpenedController.js.map +1 -0
  251. package/dist/cssm/components/CustomSelect/hooks/useFocusedOptionController.js +52 -0
  252. package/dist/cssm/components/CustomSelect/hooks/useFocusedOptionController.js.map +1 -0
  253. package/dist/cssm/components/CustomSelect/hooks/useInputKeyboardController.js +78 -0
  254. package/dist/cssm/components/CustomSelect/hooks/useInputKeyboardController.js.map +1 -0
  255. package/dist/cssm/components/CustomSelect/hooks/useInputValueController.js +43 -0
  256. package/dist/cssm/components/CustomSelect/hooks/useInputValueController.js.map +1 -0
  257. package/dist/cssm/components/CustomSelect/hooks/useScrollListController.js +37 -0
  258. package/dist/cssm/components/CustomSelect/hooks/useScrollListController.js.map +1 -0
  259. package/dist/cssm/components/CustomSelect/hooks/useSelectedOptionController.js +81 -0
  260. package/dist/cssm/components/CustomSelect/hooks/useSelectedOptionController.js.map +1 -0
  261. package/dist/cssm/components/CustomSelect/types.js +3 -0
  262. package/dist/cssm/components/CustomSelect/types.js.map +1 -0
  263. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +1 -0
  264. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  265. package/dist/cssm/components/DateInput/DateInput.js +3 -2
  266. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  267. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -4
  268. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  269. package/dist/cssm/components/ModalCard/ModalCard.js +2 -1
  270. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  271. package/dist/cssm/components/ModalCard/ModalCardInternal.js +3 -2
  272. package/dist/cssm/components/ModalCard/ModalCardInternal.js.map +1 -1
  273. package/dist/cssm/components/ModalCard/types.js.map +1 -1
  274. package/dist/cssm/components/ModalOutlet/ModalOutlet.js +2 -2
  275. package/dist/cssm/components/ModalOutlet/ModalOutlet.js.map +1 -1
  276. package/dist/cssm/components/ModalOutlet/ModalOutlet.module.css +4 -0
  277. package/dist/cssm/components/ModalOverlay/ModalOverlay.module.css +1 -1
  278. package/dist/cssm/components/ModalPage/ModalPage.js +2 -1
  279. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  280. package/dist/cssm/components/ModalPage/ModalPage.module.css +1 -0
  281. package/dist/cssm/components/ModalPage/ModalPageInternal.js +3 -2
  282. package/dist/cssm/components/ModalPage/ModalPageInternal.js.map +1 -1
  283. package/dist/cssm/components/ModalPage/types.js.map +1 -1
  284. package/dist/cssm/components/ModalRoot/ModalRoot.js +4 -2
  285. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  286. package/dist/cssm/components/ModalRoot/types.js.map +1 -1
  287. package/dist/cssm/components/ModalRoot/useModalManager.js +2 -1
  288. package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -1
  289. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js +3 -2
  290. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  291. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  292. package/dist/cssm/components/Popover/usePopover.js +2 -1
  293. package/dist/cssm/components/Popover/usePopover.js.map +1 -1
  294. package/dist/cssm/components/Popper/Popper.js +2 -1
  295. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  296. package/dist/cssm/components/Select/Select.js +1 -1
  297. package/dist/cssm/components/Select/Select.js.map +1 -1
  298. package/dist/cssm/components/SelectionControl/SelectionControl.js +16 -6
  299. package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -1
  300. package/dist/cssm/components/SelectionControl/SelectionControl.module.css +6 -3
  301. package/dist/cssm/components/SelectionControl/SelectionControlContext.js +7 -0
  302. package/dist/cssm/components/SelectionControl/SelectionControlContext.js.map +1 -0
  303. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +3 -1
  304. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -1
  305. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +6 -3
  306. package/dist/cssm/components/SimpleCell/SimpleCell.js +29 -8
  307. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  308. package/dist/cssm/components/Skeleton/Skeleton.js +1 -1
  309. package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
  310. package/dist/cssm/components/Slider/SliderThumb/SliderThumb.module.css +2 -1
  311. package/dist/cssm/components/Tabs/Tabs.js +19 -9
  312. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  313. package/dist/cssm/components/Tabs/TabsController.js.map +1 -1
  314. package/dist/cssm/components/Tabs/TabsControllerContext.js +4 -0
  315. package/dist/cssm/components/Tabs/TabsControllerContext.js.map +1 -0
  316. package/dist/cssm/components/Tabs/TabsModeContext.js +1 -2
  317. package/dist/cssm/components/Tabs/TabsModeContext.js.map +1 -1
  318. package/dist/cssm/components/TabsItem/TabsItem.js +3 -1
  319. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  320. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  321. package/dist/cssm/components/Tooltip/useTooltip.js +2 -1
  322. package/dist/cssm/components/Tooltip/useTooltip.js.map +1 -1
  323. package/dist/cssm/components/Typography/Caption/Caption.js +4 -1
  324. package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
  325. package/dist/cssm/components/Typography/Footnote/Footnote.js +4 -1
  326. package/dist/cssm/components/Typography/Footnote/Footnote.js.map +1 -1
  327. package/dist/cssm/components/Typography/Typography.js +7 -1
  328. package/dist/cssm/components/Typography/Typography.js.map +1 -1
  329. package/dist/cssm/components/View/View.js +2 -1
  330. package/dist/cssm/components/View/View.js.map +1 -1
  331. package/dist/cssm/components/View/View.module.css +1 -1
  332. package/dist/cssm/components/View/ViewInfinite.js +2 -1
  333. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  334. package/dist/cssm/components/VisuallyHidden/VisuallyHidden.module.css +0 -2
  335. package/dist/cssm/hooks/useCalendar.js +6 -4
  336. package/dist/cssm/hooks/useCalendar.js.map +1 -1
  337. package/dist/cssm/hooks/useFloatingElement.js +3 -2
  338. package/dist/cssm/hooks/useFloatingElement.js.map +1 -1
  339. package/dist/cssm/hooks/useTodayDate.js +3 -2
  340. package/dist/cssm/hooks/useTodayDate.js.map +1 -1
  341. package/dist/cssm/index.js.map +1 -1
  342. package/dist/cssm/lib/accessibility.js +8 -0
  343. package/dist/cssm/lib/accessibility.js.map +1 -1
  344. package/dist/cssm/lib/calendar.js +9 -7
  345. package/dist/cssm/lib/calendar.js.map +1 -1
  346. package/dist/cssm/lib/date.js +66 -3
  347. package/dist/cssm/lib/date.js.map +1 -1
  348. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js +18 -8
  349. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  350. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  351. package/dist/cssm/lib/touch/UIPanGestureRecognizer.js +2 -2
  352. package/dist/cssm/lib/touch/UIPanGestureRecognizer.js.map +1 -1
  353. package/dist/cssm/lib/utils.js +1 -0
  354. package/dist/cssm/lib/utils.js.map +1 -1
  355. package/dist/cssm/styles/themes.css +1 -1
  356. package/dist/hooks/useCalendar.d.ts.map +1 -1
  357. package/dist/hooks/useCalendar.js +6 -4
  358. package/dist/hooks/useCalendar.js.map +1 -1
  359. package/dist/hooks/useFloatingElement.d.ts +1 -1
  360. package/dist/hooks/useFloatingElement.d.ts.map +1 -1
  361. package/dist/hooks/useFloatingElement.js +3 -2
  362. package/dist/hooks/useFloatingElement.js.map +1 -1
  363. package/dist/hooks/useTodayDate.d.ts.map +1 -1
  364. package/dist/hooks/useTodayDate.js +3 -2
  365. package/dist/hooks/useTodayDate.js.map +1 -1
  366. package/dist/index.d.ts +4 -2
  367. package/dist/index.d.ts.map +1 -1
  368. package/dist/index.js.map +1 -1
  369. package/dist/lib/accessibility.d.ts +1 -1
  370. package/dist/lib/accessibility.d.ts.map +1 -1
  371. package/dist/lib/accessibility.js +8 -0
  372. package/dist/lib/accessibility.js.map +1 -1
  373. package/dist/lib/calendar.d.ts.map +1 -1
  374. package/dist/lib/calendar.js +9 -7
  375. package/dist/lib/calendar.js.map +1 -1
  376. package/dist/lib/date.d.ts +31 -1
  377. package/dist/lib/date.d.ts.map +1 -1
  378. package/dist/lib/date.js +67 -3
  379. package/dist/lib/date.js.map +1 -1
  380. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts +6 -1
  381. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts.map +1 -1
  382. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js +18 -8
  383. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  384. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +2 -0
  385. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  386. package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  387. package/dist/lib/touch/UIPanGestureRecognizer.d.ts.map +1 -1
  388. package/dist/lib/touch/UIPanGestureRecognizer.js +2 -2
  389. package/dist/lib/touch/UIPanGestureRecognizer.js.map +1 -1
  390. package/dist/lib/utils.d.ts +1 -0
  391. package/dist/lib/utils.d.ts.map +1 -1
  392. package/dist/lib/utils.js +1 -0
  393. package/dist/lib/utils.js.map +1 -1
  394. package/dist/vkui.css +1 -1
  395. package/dist/vkui.css.map +1 -1
  396. package/package.json +6 -7
  397. package/src/components/Banner/Banner.module.css +1 -6
  398. package/src/components/Banner/Banner.module.css.d.ts.map +1 -1
  399. package/src/components/Calendar/Calendar.tsx +6 -6
  400. package/src/components/CalendarDays/CalendarDays.tsx +3 -3
  401. package/src/components/CalendarRange/CalendarRange.tsx +15 -20
  402. package/src/components/CalendarRange/utils.ts +7 -6
  403. package/src/components/Cell/Cell.tsx +3 -0
  404. package/src/components/Checkbox/Checkbox.tsx +6 -0
  405. package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +7 -2
  406. package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css.d.ts.map +1 -1
  407. package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.tsx +12 -3
  408. package/src/components/ChipsInputBase/Chip/Chip.module.css +8 -1
  409. package/src/components/ChipsInputBase/Chip/Chip.module.css.d.ts.map +1 -1
  410. package/src/components/ChipsInputBase/Chip/Chip.tsx +55 -1
  411. package/src/components/ChipsInputBase/ChipsInputBase.tsx +26 -4
  412. package/src/components/ChipsInputBase/types.ts +2 -45
  413. package/src/components/ChipsSelect/ChipsSelect.tsx +2 -4
  414. package/src/components/ContentBadge/ContentBadge.tsx +18 -12
  415. package/src/components/ContentCard/ContentCard.tsx +1 -1
  416. package/src/components/CustomSelect/CustomSelect.tsx +216 -562
  417. package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css +12 -0
  418. package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css.d.ts.map +1 -1
  419. package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.tsx +25 -2
  420. package/src/components/CustomSelect/helpers.ts +103 -0
  421. package/src/components/CustomSelect/hooks/useAfterItems.tsx +89 -0
  422. package/src/components/CustomSelect/hooks/useDropdownOpenedController.ts +61 -0
  423. package/src/components/CustomSelect/hooks/useFocusedOptionController.ts +86 -0
  424. package/src/components/CustomSelect/hooks/useInputKeyboardController.ts +96 -0
  425. package/src/components/CustomSelect/hooks/useInputValueController.ts +58 -0
  426. package/src/components/CustomSelect/hooks/useScrollListController.ts +46 -0
  427. package/src/components/CustomSelect/hooks/useSelectedOptionController.ts +132 -0
  428. package/src/components/CustomSelect/types.ts +38 -0
  429. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +1 -0
  430. package/src/components/DateInput/DateInput.tsx +9 -3
  431. package/src/components/DateRangeInput/DateRangeInput.tsx +9 -6
  432. package/src/components/ModalCard/ModalCard.tsx +2 -0
  433. package/src/components/ModalCard/ModalCardInternal.tsx +8 -2
  434. package/src/components/ModalCard/types.ts +6 -0
  435. package/src/components/ModalOutlet/ModalOutlet.module.css +4 -0
  436. package/src/components/ModalOutlet/ModalOutlet.module.css.d.ts.map +1 -1
  437. package/src/components/ModalOutlet/ModalOutlet.tsx +8 -1
  438. package/src/components/ModalOverlay/ModalOverlay.module.css +1 -1
  439. package/src/components/ModalPage/ModalPage.module.css +1 -0
  440. package/src/components/ModalPage/ModalPage.module.css.d.ts.map +1 -1
  441. package/src/components/ModalPage/ModalPage.tsx +2 -0
  442. package/src/components/ModalPage/ModalPageInternal.tsx +8 -2
  443. package/src/components/ModalPage/types.ts +6 -0
  444. package/src/components/ModalRoot/ModalRoot.tsx +19 -6
  445. package/src/components/ModalRoot/types.ts +5 -0
  446. package/src/components/ModalRoot/useModalManager.tsx +4 -0
  447. package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +3 -0
  448. package/src/components/Popover/Popover.tsx +1 -0
  449. package/src/components/Popover/usePopover.tsx +2 -0
  450. package/src/components/Popper/Popper.tsx +3 -0
  451. package/src/components/Select/Select.tsx +5 -5
  452. package/src/components/SelectionControl/SelectionControl.module.css +6 -3
  453. package/src/components/SelectionControl/SelectionControl.module.css.d.ts.map +1 -1
  454. package/src/components/SelectionControl/SelectionControl.tsx +30 -8
  455. package/src/components/SelectionControl/SelectionControlContext.ts +7 -0
  456. package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +6 -3
  457. package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css.d.ts.map +1 -1
  458. package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.tsx +7 -1
  459. package/src/components/SimpleCell/SimpleCell.tsx +5 -0
  460. package/src/components/Skeleton/Skeleton.tsx +1 -1
  461. package/src/components/Slider/SliderThumb/SliderThumb.module.css +1 -1
  462. package/src/components/Tabs/Tabs.tsx +16 -12
  463. package/src/components/Tabs/TabsController.ts +2 -2
  464. package/src/components/Tabs/TabsControllerContext.ts +7 -0
  465. package/src/components/Tabs/TabsModeContext.ts +0 -3
  466. package/src/components/TabsItem/TabsItem.tsx +5 -9
  467. package/src/components/Tooltip/Tooltip.tsx +1 -0
  468. package/src/components/Tooltip/useTooltip.tsx +2 -0
  469. package/src/components/Typography/Caption/Caption.tsx +14 -6
  470. package/src/components/Typography/Footnote/Footnote.tsx +10 -6
  471. package/src/components/Typography/Typography.tsx +9 -2
  472. package/src/components/View/View.module.css +1 -1
  473. package/src/components/View/View.tsx +2 -1
  474. package/src/components/View/ViewInfinite.tsx +2 -1
  475. package/src/components/VisuallyHidden/VisuallyHidden.module.css +0 -2
  476. package/src/components/VisuallyHidden/VisuallyHidden.module.css.d.ts.map +1 -1
  477. package/src/hooks/useCalendar.ts +6 -4
  478. package/src/hooks/useFloatingElement.tsx +2 -0
  479. package/src/hooks/useTodayDate.ts +3 -2
  480. package/src/index.ts +5 -3
  481. package/src/lib/accessibility.ts +4 -0
  482. package/src/lib/calendar.ts +8 -12
  483. package/src/lib/date.ts +82 -3
  484. package/src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts +23 -10
  485. package/src/lib/floating/useFloatingWithInteractions/types.ts +2 -0
  486. package/src/lib/touch/UIPanGestureRecognizer.ts +2 -2
  487. package/src/lib/utils.ts +3 -0
@@ -3,9 +3,12 @@
3
3
  display: flex;
4
4
  align-items: center;
5
5
  justify-content: flex-start;
6
+ font-family: var(--vkui--font_family_base);
7
+ }
8
+
9
+ .withPadding {
6
10
  min-block-size: var(--vkui--size_field_height--regular);
7
11
  padding-inline: var(--vkui--size_base_padding_horizontal--regular);
8
- font-family: var(--vkui--font_family_base);
9
12
  }
10
13
 
11
14
  /**
@@ -22,12 +25,12 @@
22
25
  opacity: var(--vkui--opacity_disable_accessibility);
23
26
  }
24
27
 
25
- .sizeYCompact {
28
+ .withPadding.sizeYCompact {
26
29
  min-block-size: var(--vkui--size_field_height--compact);
27
30
  }
28
31
 
29
32
  @media (--sizeY-compact) {
30
- .sizeYNone {
33
+ .withPadding.sizeYNone {
31
34
  min-block-size: var(--vkui--size_field_height--compact);
32
35
  }
33
36
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["./SelectionControl.module.css"],"names":["host","sizeYCompact","sizeYNone"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aAe+BA,M,WAf/B;AAAA,E,aAoBAA,M,WApBA;AAAA,E,aAwBAC,c,WAxBA;AAAA,E,aA6BEC,W,WA7BF;AAAA;AAAA","file":"SelectionControl.module.css.d.ts","sourceRoot":""}
1
+ {"version":3,"sources":["./SelectionControl.module.css"],"names":["host","withPadding","sizeYCompact","sizeYNone"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aAQAC,a,WARA;AAAA,E,aAkB+BD,M,WAlB/B;AAAA,E,aAuBAA,M,WAvBA;AAAA,E,aA2BAC,a,WA3BA;AAAA,E,aA2BYC,c,WA3BZ;AAAA,E,aAgCED,a,WAhCF;AAAA,E,aAgCcE,W,WAhCd;AAAA;AAAA","file":"SelectionControl.module.css.d.ts","sourceRoot":""}
@@ -7,6 +7,7 @@ import { usePlatform } from '../../hooks/usePlatform';
7
7
  import type { HasRootRef } from '../../types';
8
8
  import { DEFAULT_ACTIVE_EFFECT_DELAY } from '../Clickable/useState';
9
9
  import { Tappable, type TappableOmitProps } from '../Tappable/Tappable';
10
+ import { SelectionControlContext } from './SelectionControlContext';
10
11
  import { SelectionControlLabel } from './SelectionControlLabel/SelectionControlLabel';
11
12
  import styles from './SelectionControl.module.css';
12
13
 
@@ -21,22 +22,43 @@ export interface SelectionControlProps
21
22
  Pick<
22
23
  TappableOmitProps,
23
24
  'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode' | 'disabled'
24
- > {}
25
+ > {
26
+ /**
27
+ * Отключает отступы. При использовании этого свойства, значение по умолчанию для свойств `hoverMode` и `activeMode` становится `"opacity"`.
28
+ */
29
+ noPadding?: boolean;
30
+ }
25
31
 
26
32
  /**
27
33
  * @see https://vkui.io/components/selection-control
28
34
  */
29
- export const SelectionControl = (restProps: SelectionControlProps): React.ReactNode => {
35
+ export const SelectionControl = ({
36
+ noPadding = false,
37
+ hoverMode: hoverModeProp,
38
+ activeMode: activeModeProp,
39
+ ...restProps
40
+ }: SelectionControlProps): React.ReactNode => {
30
41
  const { sizeY = 'none' } = useAdaptivity();
31
42
  const platform = usePlatform();
32
43
 
44
+ const hoverMode = hoverModeProp || (noPadding ? 'opacity' : 'background');
45
+ const activeMode = activeModeProp || (noPadding ? 'opacity' : 'background');
46
+
33
47
  return (
34
- <Tappable
35
- Component="label"
36
- baseClassName={classNames(styles.host, sizeY !== 'regular' && sizeYClassNames[sizeY])}
37
- activeEffectDelay={platform === 'ios' ? 100 : DEFAULT_ACTIVE_EFFECT_DELAY}
38
- {...restProps}
39
- />
48
+ <SelectionControlContext.Provider value={{ noPadding }}>
49
+ <Tappable
50
+ Component="label"
51
+ baseClassName={classNames(
52
+ styles.host,
53
+ sizeY !== 'regular' && sizeYClassNames[sizeY],
54
+ !noPadding && styles.withPadding,
55
+ )}
56
+ activeEffectDelay={platform === 'ios' ? 100 : DEFAULT_ACTIVE_EFFECT_DELAY}
57
+ hoverMode={hoverMode}
58
+ activeMode={activeMode}
59
+ {...restProps}
60
+ />
61
+ </SelectionControlContext.Provider>
40
62
  );
41
63
  };
42
64
 
@@ -0,0 +1,7 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ export const SelectionControlContext = createContext<{ noPadding: boolean }>({
4
+ noPadding: false,
5
+ });
6
+
7
+ export const useSelectionControlContext = () => useContext(SelectionControlContext);
@@ -1,12 +1,15 @@
1
1
  .host {
2
2
  flex-grow: 1;
3
3
  min-inline-size: 0; /* см. https://github.com/VKCOM/VKUI/issues/5687 */
4
- margin-block: var(--vkui--spacing_size_xl);
5
4
  margin-inline-start: 12px;
6
5
  color: var(--vkui--color_text_primary);
7
6
  word-break: break-word;
8
7
  }
9
8
 
9
+ .withPadding {
10
+ margin-block: var(--vkui--spacing_size_xl);
11
+ }
12
+
10
13
  .host:first-child {
11
14
  margin-inline-start: 0;
12
15
  }
@@ -33,12 +36,12 @@
33
36
  color: var(--vkui--color_icon_tertiary);
34
37
  }
35
38
 
36
- .sizeYCompact {
39
+ .withPadding.sizeYCompact {
37
40
  margin-block: var(--vkui--spacing_size_m);
38
41
  }
39
42
 
40
43
  @media (--sizeY-compact) {
41
- .sizeYNone {
44
+ .withPadding.sizeYNone {
42
45
  margin-block: var(--vkui--spacing_size_m);
43
46
  }
44
47
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["./SelectionControlLabel.module.css"],"names":["host","description","titleLayout","title","titleAfter","sizeYCompact","sizeYNone"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aASAA,M,WATA;AAAA,E,aAaAC,a,WAbA;AAAA,E,aAmBAC,a,WAnBA;AAAA,E,aAyBAC,O,WAzBA;AAAA,E,aA6BAC,Y,WA7BA;AAAA,E,aAmCAC,c,WAnCA;AAAA,E,aAwCEC,W,WAxCF;AAAA;AAAA","file":"SelectionControlLabel.module.css.d.ts","sourceRoot":""}
1
+ {"version":3,"sources":["./SelectionControlLabel.module.css"],"names":["host","withPadding","description","titleLayout","title","titleAfter","sizeYCompact","sizeYNone"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aAQAC,a,WARA;AAAA,E,aAYAD,M,WAZA;AAAA,E,aAgBAE,a,WAhBA;AAAA,E,aAsBAC,a,WAtBA;AAAA,E,aA4BAC,O,WA5BA;AAAA,E,aAgCAC,Y,WAhCA;AAAA,E,aAsCAJ,a,WAtCA;AAAA,E,aAsCYK,c,WAtCZ;AAAA,E,aA2CEL,a,WA3CF;AAAA,E,aA2CcM,W,WA3Cd;AAAA;AAAA","file":"SelectionControlLabel.module.css.d.ts","sourceRoot":""}
@@ -6,6 +6,7 @@ import { useAdaptivity } from '../../../hooks/useAdaptivity';
6
6
  import { RootComponent } from '../../RootComponent/RootComponent';
7
7
  import { Footnote } from '../../Typography/Footnote/Footnote';
8
8
  import { Text } from '../../Typography/Text/Text';
9
+ import { useSelectionControlContext } from '../SelectionControlContext';
9
10
  import styles from './SelectionControlLabel.module.css';
10
11
 
11
12
  const sizeYClassNames = {
@@ -24,11 +25,16 @@ export function SelectionControlLabel({
24
25
  description,
25
26
  ...restProps
26
27
  }: SelectionControlLabelProps) {
28
+ const { noPadding } = useSelectionControlContext();
27
29
  const { sizeY = 'none' } = useAdaptivity();
28
30
 
29
31
  return (
30
32
  <RootComponent
31
- baseClassName={classNames(styles.host, sizeY !== 'regular' && sizeYClassNames[sizeY])}
33
+ baseClassName={classNames(
34
+ styles.host,
35
+ sizeY !== 'regular' && sizeYClassNames[sizeY],
36
+ !noPadding && styles.withPadding,
37
+ )}
32
38
  {...restProps}
33
39
  >
34
40
  <div className={styles.titleLayout}>
@@ -9,6 +9,7 @@ import { Tappable, type TappableOmitProps } from '../Tappable/Tappable';
9
9
  import { Footnote } from '../Typography/Footnote/Footnote';
10
10
  import { Headline } from '../Typography/Headline/Headline';
11
11
  import { Subhead } from '../Typography/Subhead/Subhead';
12
+ import { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';
12
13
  import { Chevron } from './Chevron/Chevron';
13
14
  import styles from './SimpleCell.module.css';
14
15
 
@@ -125,12 +126,14 @@ export const SimpleCell = ({
125
126
  {overTitle && (
126
127
  <Subhead Component="span" className={classNames(styles.text, styles.overTitle)}>
127
128
  {overTitle}
129
+ <VisuallyHidden>&nbsp;</VisuallyHidden>
128
130
  </Subhead>
129
131
  )}
130
132
  <div className={styles.content}>
131
133
  {badgeBeforeTitle && <span className={styles.badge}>{badgeBeforeTitle}</span>}
132
134
  <Headline Component="span" className={styles.children} weight="3">
133
135
  {children}
136
+ <VisuallyHidden>&nbsp;</VisuallyHidden>
134
137
  </Headline>
135
138
  {hasReactNode(badgeAfterTitle) && <span className={styles.badge}>{badgeAfterTitle}</span>}
136
139
  </div>
@@ -139,6 +142,7 @@ export const SimpleCell = ({
139
142
  {badgeBeforeSubtitle && <span className={styles.badge}>{badgeBeforeSubtitle}</span>}
140
143
  <Footnote normalize={false} className={classNames(styles.text, styles.subtitle)}>
141
144
  {subtitle}
145
+ <VisuallyHidden>&nbsp;</VisuallyHidden>
142
146
  </Footnote>
143
147
  {badgeAfterSubtitle && <span className={styles.badge}>{badgeAfterSubtitle}</span>}
144
148
  </div>
@@ -146,6 +150,7 @@ export const SimpleCell = ({
146
150
  {extraSubtitle && (
147
151
  <Footnote className={classNames(styles.text, styles.extraSubtitle)}>
148
152
  {extraSubtitle}
153
+ <VisuallyHidden>&nbsp;</VisuallyHidden>
149
154
  </Footnote>
150
155
  )}
151
156
  </div>
@@ -2,11 +2,11 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import { classNames } from '@vkontakte/vkjs';
5
- import { millisecondsInSecond } from 'date-fns/constants';
6
5
  import { mergeStyle } from '../../helpers/mergeStyle';
7
6
  import { useExternRef } from '../../hooks/useExternRef';
8
7
  import { useResizeObserver } from '../../hooks/useResizeObserver';
9
8
  import { useStateWithPrev } from '../../hooks/useStateWithPrev';
9
+ import { millisecondsInSecond } from '../../lib/date';
10
10
  import { useDOM } from '../../lib/dom';
11
11
  import { animationVisibilityDelayStyles } from '../../styles/animationVisibilityDelay';
12
12
  import type { CSSCustomProperties, HTMLAttributesWithRootRef } from '../../types';
@@ -37,6 +37,6 @@
37
37
  overflow: hidden;
38
38
  white-space: nowrap;
39
39
  border: 0 none;
40
- clip: rect(0, 0, 0, 0);
40
+ clip-path: rect(0 0 0 0);
41
41
  direction: ltr;
42
42
  }
@@ -8,9 +8,9 @@ import { useTabsNavigation } from '../../hooks/useTabsNavigation';
8
8
  import type { HTMLAttributesWithRootRef } from '../../types';
9
9
  import { RootComponent } from '../RootComponent/RootComponent';
10
10
  import { useTabsController } from './TabsController';
11
+ import { TabsControllerContext } from './TabsControllerContext';
11
12
  import { TabsModeContext } from './TabsModeContext';
12
13
  import styles from './Tabs.module.css';
13
-
14
14
  export interface TabsProps extends HTMLAttributesWithRootRef<HTMLDivElement> {
15
15
  /**
16
16
  * Режим отображения компонента.
@@ -76,6 +76,17 @@ export const Tabs = ({
76
76
 
77
77
  const { tabsRef } = useTabsNavigation(isTabFlow, direction === 'rtl');
78
78
 
79
+ const tabsModeContext = React.useMemo(
80
+ () => ({
81
+ mode,
82
+ withGaps,
83
+ layoutFillMode,
84
+ withScrollToSelectedTab,
85
+ scrollBehaviorToSelectedTab,
86
+ }),
87
+ [mode, withGaps, layoutFillMode, withScrollToSelectedTab, scrollBehaviorToSelectedTab],
88
+ );
89
+
79
90
  return (
80
91
  <RootComponent
81
92
  {...restProps}
@@ -89,17 +100,10 @@ export const Tabs = ({
89
100
  role={role}
90
101
  >
91
102
  <div className={styles.in} ref={tabsRef}>
92
- <TabsModeContext.Provider
93
- value={{
94
- mode,
95
- withGaps,
96
- layoutFillMode,
97
- withScrollToSelectedTab,
98
- scrollBehaviorToSelectedTab,
99
- controller,
100
- }}
101
- >
102
- {children}
103
+ <TabsModeContext.Provider value={tabsModeContext}>
104
+ <TabsControllerContext.Provider value={controller}>
105
+ {children}
106
+ </TabsControllerContext.Provider>
103
107
  </TabsModeContext.Provider>
104
108
  </div>
105
109
  </RootComponent>
@@ -3,7 +3,7 @@ import { useStableCallback } from '../../hooks/useStableCallback';
3
3
  import { type TabsProps } from './Tabs';
4
4
 
5
5
  /* eslint-disable jsdoc/require-jsdoc */
6
- export type TabsController = {
6
+ export type TabsControllerProps = {
7
7
  onChange: (id: string) => void;
8
8
  selectedTab: string;
9
9
  };
@@ -16,7 +16,7 @@ export const useTabsController = ({
16
16
  }: Pick<
17
17
  TabsProps,
18
18
  'selectedId' | 'defaultSelectedId' | 'onSelectedIdChange'
19
- >): TabsController | null => {
19
+ >): TabsControllerProps | null => {
20
20
  const onSelectedIdChange = useStableCallback(
21
21
  (id: string | undefined) => id && onSelectedIdChangeProp?.(id),
22
22
  );
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import { type TabsControllerProps } from './TabsController';
3
+
4
+ export type TabsControllerContextProps = TabsControllerProps | null;
5
+
6
+ export const TabsControllerContext: React.Context<TabsControllerContextProps> =
7
+ React.createContext<TabsControllerContextProps>(null);
@@ -1,6 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import { type TabsProps } from './Tabs';
3
- import { type TabsController } from './TabsController';
4
3
 
5
4
  /* eslint-disable jsdoc/require-jsdoc */
6
5
  export interface TabsContextProps {
@@ -9,7 +8,6 @@ export interface TabsContextProps {
9
8
  layoutFillMode: NonNullable<TabsProps['layoutFillMode']>;
10
9
  withScrollToSelectedTab: TabsProps['withScrollToSelectedTab'];
11
10
  scrollBehaviorToSelectedTab: Required<TabsProps['scrollBehaviorToSelectedTab']>;
12
- controller: TabsController | null;
13
11
  }
14
12
  /* eslint-enable jsdoc/require-jsdoc */
15
13
 
@@ -20,5 +18,4 @@ export const TabsModeContext: React.Context<TabsContextProps> =
20
18
  layoutFillMode: 'auto',
21
19
  withScrollToSelectedTab: false,
22
20
  scrollBehaviorToSelectedTab: 'nearest',
23
- controller: null,
24
21
  });
@@ -8,7 +8,8 @@ import { usePrevious } from '../../hooks/usePrevious';
8
8
  import { useDOM } from '../../lib/dom';
9
9
  import { warnOnce } from '../../lib/warnOnce';
10
10
  import type { AnchorHTMLAttributesOnly, HTMLAttributesWithRootRef } from '../../types';
11
- import { type TabsContextProps, TabsModeContext } from '../Tabs/TabsModeContext';
11
+ import { TabsControllerContext } from '../Tabs/TabsControllerContext';
12
+ import { TabsModeContext } from '../Tabs/TabsModeContext';
12
13
  import { Tappable, type TappableOmitProps } from '../Tappable/Tappable';
13
14
  import { Headline } from '../Typography/Headline/Headline';
14
15
  import { Subhead } from '../Typography/Subhead/Subhead';
@@ -99,14 +100,9 @@ export const TabsItem = ({
99
100
  ...restProps
100
101
  }: TabsItemProps): React.ReactNode => {
101
102
  const { sizeY = 'none' } = useAdaptivity();
102
- const {
103
- mode,
104
- withGaps,
105
- layoutFillMode,
106
- scrollBehaviorToSelectedTab,
107
- withScrollToSelectedTab,
108
- controller,
109
- }: TabsContextProps = React.useContext(TabsModeContext);
103
+ const { mode, withGaps, layoutFillMode, scrollBehaviorToSelectedTab, withScrollToSelectedTab } =
104
+ React.useContext(TabsModeContext);
105
+ const controller = React.useContext(TabsControllerContext);
110
106
  let statusComponent = null;
111
107
 
112
108
  const isTabFlow = role === 'tab';
@@ -24,6 +24,7 @@ type AllowedFloatingComponentProps = Pick<
24
24
  | 'usePortal'
25
25
  | 'onPlacementChange'
26
26
  | 'disableFlipMiddleware'
27
+ | 'disableShiftMiddleware'
27
28
  | 'strategy'
28
29
  >;
29
30
 
@@ -43,6 +43,7 @@ export const useTooltip = ({
43
43
  offsetByCrossAxis = 0,
44
44
  hideWhenReferenceHidden,
45
45
  disableFlipMiddleware = false,
46
+ disableShiftMiddleware = false,
46
47
  disableTriggerOnFocus = false,
47
48
  onReferenceHiddenChange,
48
49
 
@@ -151,6 +152,7 @@ export const useTooltip = ({
151
152
  offsetByCrossAxis,
152
153
  hideWhenReferenceHidden,
153
154
  disableFlipMiddleware,
155
+ disableShiftMiddleware,
154
156
 
155
157
  defaultShown,
156
158
  shown: shownProp,
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { classNames } from '@vkontakte/vkjs';
4
4
  import { useAdaptivity } from '../../../hooks/useAdaptivity';
5
+ import { type SizeTypeValues } from '../../../lib/adaptivity';
5
6
  import { type HasCaps, Typography, type TypographyProps } from '../Typography';
6
7
  import styles from './Caption.module.css';
7
8
 
@@ -16,6 +17,18 @@ const sizeYClassNames = {
16
17
  compact: styles.sizeYCompact,
17
18
  };
18
19
 
20
+ export function captionClassNames(
21
+ sizeY: 'none' | SizeTypeValues,
22
+ level: '1' | '2' | '3' | undefined = '1',
23
+ caps = false,
24
+ ) {
25
+ return classNames(
26
+ sizeY !== 'regular' && sizeYClassNames[sizeY],
27
+ caps && styles.caps,
28
+ stylesLevel[level],
29
+ );
30
+ }
31
+
19
32
  export interface CaptionProps extends TypographyProps, HasCaps {
20
33
  /**
21
34
  * Уровень заголовка (от 1 до 3).
@@ -44,12 +57,7 @@ export const Caption = ({
44
57
  Component={Component}
45
58
  normalize={normalize}
46
59
  inline={inline}
47
- className={classNames(
48
- className,
49
- sizeY !== 'regular' && sizeYClassNames[sizeY],
50
- caps && styles.caps,
51
- stylesLevel[level],
52
- )}
60
+ className={classNames(className, captionClassNames(sizeY, level, caps))}
53
61
  {...restProps}
54
62
  />
55
63
  );
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { classNames } from '@vkontakte/vkjs';
4
4
  import { useAdaptivity } from '../../../hooks/useAdaptivity';
5
+ import { type SizeTypeValues } from '../../../lib/adaptivity';
5
6
  import { type HasCaps, Typography, type TypographyProps } from '../Typography';
6
7
  import styles from './Footnote.module.css';
7
8
 
@@ -10,6 +11,14 @@ const sizeYClassNames = {
10
11
  compact: styles.sizeYCompact,
11
12
  };
12
13
 
14
+ export function footnoteClassNames(sizeY: 'none' | SizeTypeValues, caps = false) {
15
+ return classNames(
16
+ styles.host,
17
+ sizeY !== 'regular' && sizeYClassNames[sizeY],
18
+ caps && styles.caps,
19
+ );
20
+ }
21
+
13
22
  export interface FootnoteProps extends TypographyProps, HasCaps {}
14
23
 
15
24
  /**
@@ -32,12 +41,7 @@ export const Footnote = ({
32
41
  Component={Component}
33
42
  normalize={normalize}
34
43
  inline={inline}
35
- className={classNames(
36
- className,
37
- sizeY !== 'regular' && sizeYClassNames[sizeY],
38
- styles.host,
39
- caps && styles.caps,
40
- )}
44
+ className={classNames(className, footnoteClassNames(sizeY, caps))}
41
45
  {...restProps}
42
46
  />
43
47
  );
@@ -10,6 +10,14 @@ const stylesWeight = {
10
10
  '3': styles.weight3,
11
11
  };
12
12
 
13
+ export function weightClassNames(weight: '1' | '2' | '3' | undefined, useAccentWeight = false) {
14
+ if (!weight) {
15
+ return '';
16
+ }
17
+
18
+ return classNames(stylesWeight[weight], useAccentWeight && styles.accent);
19
+ }
20
+
13
21
  export interface HasCaps {
14
22
  /**
15
23
  * Отображение текста в верхнем регистре.
@@ -55,8 +63,7 @@ export const Typography = ({
55
63
  styles.host,
56
64
  normalize && styles.normalize,
57
65
  inline && styles.inline,
58
- weight && stylesWeight[weight],
59
- weight && useAccentWeight && styles.accent,
66
+ weightClassNames(weight, useAccentWeight),
60
67
  )}
61
68
  {...restProps}
62
69
  />
@@ -4,7 +4,7 @@
4
4
  position: relative;
5
5
  inline-size: 100%;
6
6
  block-size: 100%;
7
- word-wrap: break-word;
7
+ overflow-wrap: break-word;
8
8
  }
9
9
 
10
10
  @media (--reduce-motion) {
@@ -4,6 +4,7 @@ import * as React from 'react';
4
4
  import { classNames } from '@vkontakte/vkjs';
5
5
  import { usePlatform } from '../../hooks/usePlatform';
6
6
  import { usePrevious } from '../../hooks/usePrevious';
7
+ import { millisecondsInSecond } from '../../lib/date';
7
8
  import { blurActiveElement, useDOM } from '../../lib/dom';
8
9
  import { getNavId, type NavIdProps } from '../../lib/getNavId';
9
10
  import { warnOnce } from '../../lib/warnOnce';
@@ -275,7 +276,7 @@ export const View = ({
275
276
  const handleTouchEndForIOSSwipeBackSimulation = (event: CustomTouchEvent) => {
276
277
  swipeBackPrevented.current = false;
277
278
  if (swipingBack) {
278
- const speed = (swipeBackShift / event.duration) * 1000;
279
+ const speed = (swipeBackShift / event.duration) * millisecondsInSecond;
279
280
  if (swipeBackShift === 0) {
280
281
  onSwipeBackCancel();
281
282
  } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {
@@ -4,6 +4,7 @@ import * as React from 'react';
4
4
  import { classNames, noop } from '@vkontakte/vkjs';
5
5
  import { withContext } from '../../hoc/withContext';
6
6
  import { withPlatform } from '../../hoc/withPlatform';
7
+ import { millisecondsInSecond } from '../../lib/date';
7
8
  import { canUseDOM, type DOMProps, withDOM } from '../../lib/dom';
8
9
  import { getNavId, type NavIdProps } from '../../lib/getNavId';
9
10
  import { warnOnce } from '../../lib/warnOnce';
@@ -501,7 +502,7 @@ class ViewInfiniteComponent extends React.Component<
501
502
  this.swipeBackPrevented = false;
502
503
 
503
504
  if (this.state.swipingBack && this.window) {
504
- const speed = (this.state.swipeBackShift / event.duration) * 1000;
505
+ const speed = (this.state.swipeBackShift / event.duration) * millisecondsInSecond;
505
506
  if (this.state.swipeBackShift === 0) {
506
507
  this.onSwipeBackCancel();
507
508
  } else if (this.state.swipeBackShift >= this.window.innerWidth) {
@@ -10,7 +10,6 @@
10
10
  user-select: none;
11
11
  border: 0 !important;
12
12
  opacity: 0;
13
- clip: rect(0, 0, 0, 0) !important;
14
13
  clip-path: inset(50%);
15
14
  }
16
15
 
@@ -22,7 +21,6 @@
22
21
  inline-size: 100% !important;
23
22
  block-size: 100% !important;
24
23
  pointer-events: none;
25
- clip: auto !important;
26
24
  clip-path: none !important;
27
25
  }
28
26
  /* stylelint-enable declaration-no-important */
@@ -1 +1 @@
1
- {"version":3,"sources":["./VisuallyHidden.module.css"],"names":["host","focusableInput"],"mappings":"AAAA;AAAA,E,aACAA,M,WADA;AAAA,E,aAkBAC,gB,WAlBA;AAAA;AAAA","file":"VisuallyHidden.module.css.d.ts","sourceRoot":""}
1
+ {"version":3,"sources":["./VisuallyHidden.module.css"],"names":["host","focusableInput"],"mappings":"AAAA;AAAA,E,aACAA,M,WADA;AAAA,E,aAiBAC,gB,WAjBA;AAAA;AAAA","file":"VisuallyHidden.module.css.d.ts","sourceRoot":""}
@@ -1,7 +1,9 @@
1
1
  import * as React from 'react';
2
- import { addMonths, endOfDay, isAfter, isBefore, isSameDay, startOfDay, subMonths } from 'date-fns';
2
+ import { isSameDate } from '@vkontakte/vkjs';
3
+ import { addMonths, startOfDay, subMonths } from 'date-fns';
3
4
  import type { CalendarProps } from '../components/Calendar/Calendar';
4
5
  import { DEFAULT_MAX_YEAR, DEFAULT_MIN_YEAR, isDayMinMaxRestricted } from '../lib/calendar';
6
+ import { endOfDay } from '../lib/date';
5
7
 
6
8
  export interface UseCalendarDependencies
7
9
  extends Pick<
@@ -65,7 +67,7 @@ export function useCalendar({
65
67
  );
66
68
 
67
69
  const isDayFocused = React.useCallback(
68
- (day: Date) => Boolean(focusedDay && isSameDay(day, focusedDay)),
70
+ (day: Date) => Boolean(focusedDay && isSameDate(day, focusedDay)),
69
71
  [focusedDay],
70
72
  );
71
73
 
@@ -76,10 +78,10 @@ export function useCalendar({
76
78
  return shouldDisableDate(day);
77
79
  }
78
80
  if (disableFuture) {
79
- return isAfter(startOfDay(day), now);
81
+ return startOfDay(day) > now;
80
82
  }
81
83
  if (disablePast) {
82
- return isBefore(endOfDay(day), now);
84
+ return endOfDay(day) < now;
83
85
  }
84
86
  if (minDateTime || maxDateTime) {
85
87
  return isDayMinMaxRestricted(day, { min: minDateTime, max: maxDateTime, withTime });
@@ -69,6 +69,7 @@ export const useFloatingElement = <
69
69
  customMiddlewares,
70
70
  hideWhenReferenceHidden,
71
71
  disableFlipMiddleware = false,
72
+ disableShiftMiddleware = false,
72
73
 
73
74
  // useFloatingWithInteractions
74
75
  trigger,
@@ -108,6 +109,7 @@ export const useFloatingElement = <
108
109
  arrowPadding,
109
110
  arrowHeight,
110
111
  disableFlipMiddleware,
112
+ disableShiftMiddleware,
111
113
  });
112
114
 
113
115
  const {
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
- import { differenceInMilliseconds, isSameDay, startOfTomorrow } from 'date-fns';
2
+ import { isSameDate } from '@vkontakte/vkjs';
3
+ import { differenceInMilliseconds, startOfTomorrow } from 'date-fns';
3
4
  import { useDOM } from '../lib/dom';
4
5
 
5
6
  /**
@@ -38,7 +39,7 @@ export function useTodayDate(listenDayChangesForUpdate = false): Date {
38
39
  }, timeToDayChange);
39
40
 
40
41
  // Если todayDate не обновился в таймаут - обновить при заходе на вкладку
41
- if (!isSameDay(todayDate, now)) {
42
+ if (!isSameDate(todayDate, now)) {
42
43
  setTodayDate(now);
43
44
  }
44
45
  }
package/src/index.ts CHANGED
@@ -309,9 +309,9 @@ export { DropZone } from './components/DropZone/DropZone';
309
309
  export type { DropZoneProps } from './components/DropZone/DropZone';
310
310
  export { Input } from './components/Input/Input';
311
311
  export type { InputProps } from './components/Input/Input';
312
+ export type { ChipProps } from './components/ChipsInputBase/Chip/Chip';
312
313
  export { Chip } from './components/ChipsInputBase/Chip/Chip';
313
314
  export type {
314
- ChipProps,
315
315
  ChipOption,
316
316
  RenderChipProps,
317
317
  ChipOptionValue,
@@ -343,10 +343,12 @@ export type { NativeSelectProps } from './components/NativeSelect/NativeSelect';
343
343
  export { CustomSelect } from './components/CustomSelect/CustomSelect';
344
344
  export type {
345
345
  SelectProps,
346
- CustomSelectOptionInterface,
347
- CustomSelectRenderOption,
348
346
  CustomSelectClearButtonProps,
349
347
  } from './components/CustomSelect/CustomSelect';
348
+ export type {
349
+ CustomSelectOptionInterface,
350
+ CustomSelectRenderOption,
351
+ } from './components/CustomSelect/types';
350
352
  export { CustomSelectOption } from './components/CustomSelectOption/CustomSelectOption';
351
353
  export type { CustomSelectOptionProps } from './components/CustomSelectOption/CustomSelectOption';
352
354
  export { SegmentedControl } from './components/SegmentedControl/SegmentedControl';