@vkontakte/vkui 7.5.4 → 7.6.1

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 (489) 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/types.d.ts +2 -35
  29. package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
  30. package/dist/components/ChipsInputBase/types.js.map +1 -1
  31. package/dist/components/ContentBadge/ContentBadge.d.ts +1 -1
  32. package/dist/components/ContentBadge/ContentBadge.d.ts.map +1 -1
  33. package/dist/components/ContentBadge/ContentBadge.js +15 -9
  34. package/dist/components/ContentBadge/ContentBadge.js.map +1 -1
  35. package/dist/components/ContentCard/ContentCard.d.ts +1 -1
  36. package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
  37. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  38. package/dist/components/CustomSelect/CustomSelect.d.ts +16 -27
  39. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  40. package/dist/components/CustomSelect/CustomSelect.js +161 -428
  41. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  42. package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts +3 -1
  43. package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.d.ts.map +1 -1
  44. package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.js +25 -5
  45. package/dist/components/CustomSelect/CustomSelectInput/CustomSelectInput.js.map +1 -1
  46. package/dist/components/CustomSelect/helpers.d.ts +12 -0
  47. package/dist/components/CustomSelect/helpers.d.ts.map +1 -0
  48. package/dist/components/CustomSelect/helpers.js +63 -0
  49. package/dist/components/CustomSelect/helpers.js.map +1 -0
  50. package/dist/components/CustomSelect/hooks/useAfterItems.d.ts +11 -0
  51. package/dist/components/CustomSelect/hooks/useAfterItems.d.ts.map +1 -0
  52. package/dist/components/CustomSelect/hooks/useAfterItems.js +57 -0
  53. package/dist/components/CustomSelect/hooks/useAfterItems.js.map +1 -0
  54. package/dist/components/CustomSelect/hooks/useDropdownOpenedController.d.ts +13 -0
  55. package/dist/components/CustomSelect/hooks/useDropdownOpenedController.d.ts.map +1 -0
  56. package/dist/components/CustomSelect/hooks/useDropdownOpenedController.js +60 -0
  57. package/dist/components/CustomSelect/hooks/useDropdownOpenedController.js.map +1 -0
  58. package/dist/components/CustomSelect/hooks/useFocusedOptionController.d.ts +20 -0
  59. package/dist/components/CustomSelect/hooks/useFocusedOptionController.d.ts.map +1 -0
  60. package/dist/components/CustomSelect/hooks/useFocusedOptionController.js +52 -0
  61. package/dist/components/CustomSelect/hooks/useFocusedOptionController.js.map +1 -0
  62. package/dist/components/CustomSelect/hooks/useInputKeyboardController.d.ts +13 -0
  63. package/dist/components/CustomSelect/hooks/useInputKeyboardController.d.ts.map +1 -0
  64. package/dist/components/CustomSelect/hooks/useInputKeyboardController.js +78 -0
  65. package/dist/components/CustomSelect/hooks/useInputKeyboardController.js.map +1 -0
  66. package/dist/components/CustomSelect/hooks/useInputValueController.d.ts +15 -0
  67. package/dist/components/CustomSelect/hooks/useInputValueController.d.ts.map +1 -0
  68. package/dist/components/CustomSelect/hooks/useInputValueController.js +43 -0
  69. package/dist/components/CustomSelect/hooks/useInputValueController.js.map +1 -0
  70. package/dist/components/CustomSelect/hooks/useScrollListController.d.ts +9 -0
  71. package/dist/components/CustomSelect/hooks/useScrollListController.d.ts.map +1 -0
  72. package/dist/components/CustomSelect/hooks/useScrollListController.js +37 -0
  73. package/dist/components/CustomSelect/hooks/useScrollListController.js.map +1 -0
  74. package/dist/components/CustomSelect/hooks/useSelectedOptionController.d.ts +18 -0
  75. package/dist/components/CustomSelect/hooks/useSelectedOptionController.d.ts.map +1 -0
  76. package/dist/components/CustomSelect/hooks/useSelectedOptionController.js +81 -0
  77. package/dist/components/CustomSelect/hooks/useSelectedOptionController.js.map +1 -0
  78. package/dist/components/CustomSelect/types.d.ts +33 -0
  79. package/dist/components/CustomSelect/types.d.ts.map +1 -0
  80. package/dist/components/CustomSelect/types.js +3 -0
  81. package/dist/components/CustomSelect/types.js.map +1 -0
  82. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  83. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +1 -0
  84. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  85. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  86. package/dist/components/DateInput/DateInput.js +3 -2
  87. package/dist/components/DateInput/DateInput.js.map +1 -1
  88. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  89. package/dist/components/DateRangeInput/DateRangeInput.js +4 -4
  90. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  91. package/dist/components/ImageBase/ImageBaseBadge/ImageBaseBadge.d.ts +1 -1
  92. package/dist/components/ImageBase/ImageBaseBadge/ImageBaseBadge.js.map +1 -1
  93. package/dist/components/MiniInfoCell/MiniInfoCell.d.ts +3 -2
  94. package/dist/components/MiniInfoCell/MiniInfoCell.d.ts.map +1 -1
  95. package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  96. package/dist/components/ModalCard/ModalCard.d.ts +1 -1
  97. package/dist/components/ModalCard/ModalCard.d.ts.map +1 -1
  98. package/dist/components/ModalCard/ModalCard.js +4 -2
  99. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  100. package/dist/components/ModalCard/ModalCardInternal.d.ts +1 -1
  101. package/dist/components/ModalCard/ModalCardInternal.d.ts.map +1 -1
  102. package/dist/components/ModalCard/ModalCardInternal.js +5 -3
  103. package/dist/components/ModalCard/ModalCardInternal.js.map +1 -1
  104. package/dist/components/ModalCard/types.d.ts +8 -0
  105. package/dist/components/ModalCard/types.d.ts.map +1 -1
  106. package/dist/components/ModalCard/types.js.map +1 -1
  107. package/dist/components/ModalOutlet/ModalOutlet.d.ts +2 -1
  108. package/dist/components/ModalOutlet/ModalOutlet.d.ts.map +1 -1
  109. package/dist/components/ModalOutlet/ModalOutlet.js +4 -3
  110. package/dist/components/ModalOutlet/ModalOutlet.js.map +1 -1
  111. package/dist/components/ModalPage/ModalPage.d.ts +1 -1
  112. package/dist/components/ModalPage/ModalPage.d.ts.map +1 -1
  113. package/dist/components/ModalPage/ModalPage.js +3 -1
  114. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  115. package/dist/components/ModalPage/ModalPageInternal.d.ts +1 -1
  116. package/dist/components/ModalPage/ModalPageInternal.d.ts.map +1 -1
  117. package/dist/components/ModalPage/ModalPageInternal.js +5 -3
  118. package/dist/components/ModalPage/ModalPageInternal.js.map +1 -1
  119. package/dist/components/ModalPage/types.d.ts +8 -0
  120. package/dist/components/ModalPage/types.d.ts.map +1 -1
  121. package/dist/components/ModalPage/types.js.map +1 -1
  122. package/dist/components/ModalRoot/ModalRoot.d.ts +1 -1
  123. package/dist/components/ModalRoot/ModalRoot.d.ts.map +1 -1
  124. package/dist/components/ModalRoot/ModalRoot.js +4 -2
  125. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  126. package/dist/components/ModalRoot/types.d.ts +6 -0
  127. package/dist/components/ModalRoot/types.d.ts.map +1 -1
  128. package/dist/components/ModalRoot/types.js.map +1 -1
  129. package/dist/components/ModalRoot/useModalManager.d.ts +3 -1
  130. package/dist/components/ModalRoot/useModalManager.d.ts.map +1 -1
  131. package/dist/components/ModalRoot/useModalManager.js +2 -1
  132. package/dist/components/ModalRoot/useModalManager.js.map +1 -1
  133. package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts +2 -2
  134. package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
  135. package/dist/components/OnboardingTooltip/OnboardingTooltip.js +4 -2
  136. package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  137. package/dist/components/Popover/Popover.d.ts +1 -1
  138. package/dist/components/Popover/Popover.d.ts.map +1 -1
  139. package/dist/components/Popover/Popover.js.map +1 -1
  140. package/dist/components/Popover/usePopover.d.ts +1 -1
  141. package/dist/components/Popover/usePopover.d.ts.map +1 -1
  142. package/dist/components/Popover/usePopover.js +3 -1
  143. package/dist/components/Popover/usePopover.js.map +1 -1
  144. package/dist/components/Popper/Popper.d.ts +2 -2
  145. package/dist/components/Popper/Popper.d.ts.map +1 -1
  146. package/dist/components/Popper/Popper.js +3 -1
  147. package/dist/components/Popper/Popper.js.map +1 -1
  148. package/dist/components/Select/Select.d.ts +2 -1
  149. package/dist/components/Select/Select.d.ts.map +1 -1
  150. package/dist/components/Select/Select.js +5 -2
  151. package/dist/components/Select/Select.js.map +1 -1
  152. package/dist/components/SelectionControl/SelectionControl.d.ts +5 -1
  153. package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -1
  154. package/dist/components/SelectionControl/SelectionControl.js +22 -6
  155. package/dist/components/SelectionControl/SelectionControl.js.map +1 -1
  156. package/dist/components/SelectionControl/SelectionControlContext.d.ts +7 -0
  157. package/dist/components/SelectionControl/SelectionControlContext.d.ts.map +1 -0
  158. package/dist/components/SelectionControl/SelectionControlContext.js +7 -0
  159. package/dist/components/SelectionControl/SelectionControlContext.js.map +1 -0
  160. package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.d.ts.map +1 -1
  161. package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +3 -1
  162. package/dist/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -1
  163. package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
  164. package/dist/components/SimpleCell/SimpleCell.js +29 -8
  165. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  166. package/dist/components/Skeleton/Skeleton.js +1 -1
  167. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  168. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  169. package/dist/components/Tabs/Tabs.js +19 -9
  170. package/dist/components/Tabs/Tabs.js.map +1 -1
  171. package/dist/components/Tabs/TabsController.d.ts +2 -2
  172. package/dist/components/Tabs/TabsController.d.ts.map +1 -1
  173. package/dist/components/Tabs/TabsController.js.map +1 -1
  174. package/dist/components/Tabs/TabsControllerContext.d.ts +5 -0
  175. package/dist/components/Tabs/TabsControllerContext.d.ts.map +1 -0
  176. package/dist/components/Tabs/TabsControllerContext.js +4 -0
  177. package/dist/components/Tabs/TabsControllerContext.js.map +1 -0
  178. package/dist/components/Tabs/TabsModeContext.d.ts +0 -2
  179. package/dist/components/Tabs/TabsModeContext.d.ts.map +1 -1
  180. package/dist/components/Tabs/TabsModeContext.js +1 -2
  181. package/dist/components/Tabs/TabsModeContext.js.map +1 -1
  182. package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
  183. package/dist/components/TabsItem/TabsItem.js +3 -1
  184. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  185. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  186. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  187. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  188. package/dist/components/Tooltip/useTooltip.d.ts +1 -1
  189. package/dist/components/Tooltip/useTooltip.d.ts.map +1 -1
  190. package/dist/components/Tooltip/useTooltip.js +3 -1
  191. package/dist/components/Tooltip/useTooltip.js.map +1 -1
  192. package/dist/components/Typography/Caption/Caption.d.ts +2 -0
  193. package/dist/components/Typography/Caption/Caption.d.ts.map +1 -1
  194. package/dist/components/Typography/Caption/Caption.js +4 -1
  195. package/dist/components/Typography/Caption/Caption.js.map +1 -1
  196. package/dist/components/Typography/Footnote/Footnote.d.ts +2 -0
  197. package/dist/components/Typography/Footnote/Footnote.d.ts.map +1 -1
  198. package/dist/components/Typography/Footnote/Footnote.js +4 -1
  199. package/dist/components/Typography/Footnote/Footnote.js.map +1 -1
  200. package/dist/components/Typography/Typography.d.ts +1 -0
  201. package/dist/components/Typography/Typography.d.ts.map +1 -1
  202. package/dist/components/Typography/Typography.js +7 -1
  203. package/dist/components/Typography/Typography.js.map +1 -1
  204. package/dist/components/View/View.d.ts.map +1 -1
  205. package/dist/components/View/View.js +2 -1
  206. package/dist/components/View/View.js.map +1 -1
  207. package/dist/components/View/ViewInfinite.d.ts.map +1 -1
  208. package/dist/components/View/ViewInfinite.js +2 -1
  209. package/dist/components/View/ViewInfinite.js.map +1 -1
  210. package/dist/components.css +1 -1
  211. package/dist/components.css.map +1 -1
  212. package/dist/cssm/components/Banner/Banner.module.css +1 -6
  213. package/dist/cssm/components/Calendar/Calendar.js +6 -6
  214. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  215. package/dist/cssm/components/CalendarDays/CalendarDays.js +3 -3
  216. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  217. package/dist/cssm/components/CalendarRange/CalendarRange.js +16 -14
  218. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  219. package/dist/cssm/components/CalendarRange/utils.js +6 -5
  220. package/dist/cssm/components/CalendarRange/utils.js.map +1 -1
  221. package/dist/cssm/components/Cell/Cell.js +3 -1
  222. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  223. package/dist/cssm/components/Checkbox/Checkbox.js +2 -1
  224. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  225. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js +4 -2
  226. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.js.map +1 -1
  227. package/dist/cssm/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +11 -2
  228. package/dist/cssm/components/ChipsInputBase/Chip/Chip.js +6 -2
  229. package/dist/cssm/components/ChipsInputBase/Chip/Chip.js.map +1 -1
  230. package/dist/cssm/components/ChipsInputBase/Chip/Chip.module.css +8 -1
  231. package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
  232. package/dist/cssm/components/ContentBadge/ContentBadge.js +14 -8
  233. package/dist/cssm/components/ContentBadge/ContentBadge.js.map +1 -1
  234. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  235. package/dist/cssm/components/CustomSelect/CustomSelect.js +154 -421
  236. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  237. package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.js +22 -4
  238. package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.js.map +1 -1
  239. package/dist/cssm/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css +12 -0
  240. package/dist/cssm/components/CustomSelect/helpers.js +62 -0
  241. package/dist/cssm/components/CustomSelect/helpers.js.map +1 -0
  242. package/dist/cssm/components/CustomSelect/hooks/useAfterItems.js +58 -0
  243. package/dist/cssm/components/CustomSelect/hooks/useAfterItems.js.map +1 -0
  244. package/dist/cssm/components/CustomSelect/hooks/useDropdownOpenedController.js +60 -0
  245. package/dist/cssm/components/CustomSelect/hooks/useDropdownOpenedController.js.map +1 -0
  246. package/dist/cssm/components/CustomSelect/hooks/useFocusedOptionController.js +52 -0
  247. package/dist/cssm/components/CustomSelect/hooks/useFocusedOptionController.js.map +1 -0
  248. package/dist/cssm/components/CustomSelect/hooks/useInputKeyboardController.js +78 -0
  249. package/dist/cssm/components/CustomSelect/hooks/useInputKeyboardController.js.map +1 -0
  250. package/dist/cssm/components/CustomSelect/hooks/useInputValueController.js +43 -0
  251. package/dist/cssm/components/CustomSelect/hooks/useInputValueController.js.map +1 -0
  252. package/dist/cssm/components/CustomSelect/hooks/useScrollListController.js +37 -0
  253. package/dist/cssm/components/CustomSelect/hooks/useScrollListController.js.map +1 -0
  254. package/dist/cssm/components/CustomSelect/hooks/useSelectedOptionController.js +81 -0
  255. package/dist/cssm/components/CustomSelect/hooks/useSelectedOptionController.js.map +1 -0
  256. package/dist/cssm/components/CustomSelect/types.js +3 -0
  257. package/dist/cssm/components/CustomSelect/types.js.map +1 -0
  258. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +1 -0
  259. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  260. package/dist/cssm/components/DateInput/DateInput.js +3 -2
  261. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  262. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -4
  263. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  264. package/dist/cssm/components/ImageBase/ImageBaseBadge/ImageBaseBadge.js.map +1 -1
  265. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  266. package/dist/cssm/components/ModalCard/ModalCard.js +2 -1
  267. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  268. package/dist/cssm/components/ModalCard/ModalCardInternal.js +3 -2
  269. package/dist/cssm/components/ModalCard/ModalCardInternal.js.map +1 -1
  270. package/dist/cssm/components/ModalCard/types.js.map +1 -1
  271. package/dist/cssm/components/ModalOutlet/ModalOutlet.js +2 -2
  272. package/dist/cssm/components/ModalOutlet/ModalOutlet.js.map +1 -1
  273. package/dist/cssm/components/ModalOutlet/ModalOutlet.module.css +4 -0
  274. package/dist/cssm/components/ModalOverlay/ModalOverlay.module.css +1 -1
  275. package/dist/cssm/components/ModalPage/ModalPage.js +2 -1
  276. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  277. package/dist/cssm/components/ModalPage/ModalPage.module.css +1 -0
  278. package/dist/cssm/components/ModalPage/ModalPageInternal.js +3 -2
  279. package/dist/cssm/components/ModalPage/ModalPageInternal.js.map +1 -1
  280. package/dist/cssm/components/ModalPage/types.js.map +1 -1
  281. package/dist/cssm/components/ModalRoot/ModalRoot.js +4 -2
  282. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  283. package/dist/cssm/components/ModalRoot/types.js.map +1 -1
  284. package/dist/cssm/components/ModalRoot/useModalManager.js +2 -1
  285. package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -1
  286. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js +3 -2
  287. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  288. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  289. package/dist/cssm/components/Popover/usePopover.js +2 -1
  290. package/dist/cssm/components/Popover/usePopover.js.map +1 -1
  291. package/dist/cssm/components/Popper/Popper.js +2 -1
  292. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  293. package/dist/cssm/components/RichCell/RichCell.module.css +4 -2
  294. package/dist/cssm/components/Select/Select.js +1 -1
  295. package/dist/cssm/components/Select/Select.js.map +1 -1
  296. package/dist/cssm/components/SelectionControl/SelectionControl.js +16 -6
  297. package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -1
  298. package/dist/cssm/components/SelectionControl/SelectionControl.module.css +6 -3
  299. package/dist/cssm/components/SelectionControl/SelectionControlContext.js +7 -0
  300. package/dist/cssm/components/SelectionControl/SelectionControlContext.js.map +1 -0
  301. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js +3 -1
  302. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.js.map +1 -1
  303. package/dist/cssm/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +6 -3
  304. package/dist/cssm/components/SimpleCell/SimpleCell.js +29 -8
  305. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  306. package/dist/cssm/components/Skeleton/Skeleton.js +1 -1
  307. package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
  308. package/dist/cssm/components/Slider/SliderThumb/SliderThumb.module.css +2 -1
  309. package/dist/cssm/components/Tabs/Tabs.js +19 -9
  310. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  311. package/dist/cssm/components/Tabs/TabsController.js.map +1 -1
  312. package/dist/cssm/components/Tabs/TabsControllerContext.js +4 -0
  313. package/dist/cssm/components/Tabs/TabsControllerContext.js.map +1 -0
  314. package/dist/cssm/components/Tabs/TabsModeContext.js +1 -2
  315. package/dist/cssm/components/Tabs/TabsModeContext.js.map +1 -1
  316. package/dist/cssm/components/TabsItem/TabsItem.js +3 -1
  317. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  318. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  319. package/dist/cssm/components/Tooltip/useTooltip.js +2 -1
  320. package/dist/cssm/components/Tooltip/useTooltip.js.map +1 -1
  321. package/dist/cssm/components/Typography/Caption/Caption.js +4 -1
  322. package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
  323. package/dist/cssm/components/Typography/Footnote/Footnote.js +4 -1
  324. package/dist/cssm/components/Typography/Footnote/Footnote.js.map +1 -1
  325. package/dist/cssm/components/Typography/Typography.js +7 -1
  326. package/dist/cssm/components/Typography/Typography.js.map +1 -1
  327. package/dist/cssm/components/View/View.js +2 -1
  328. package/dist/cssm/components/View/View.js.map +1 -1
  329. package/dist/cssm/components/View/View.module.css +1 -1
  330. package/dist/cssm/components/View/ViewInfinite.js +2 -1
  331. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  332. package/dist/cssm/components/VisuallyHidden/VisuallyHidden.module.css +0 -2
  333. package/dist/cssm/hooks/useCalendar.js +6 -4
  334. package/dist/cssm/hooks/useCalendar.js.map +1 -1
  335. package/dist/cssm/hooks/useFloatingElement.js +3 -2
  336. package/dist/cssm/hooks/useFloatingElement.js.map +1 -1
  337. package/dist/cssm/hooks/useTodayDate.js +3 -2
  338. package/dist/cssm/hooks/useTodayDate.js.map +1 -1
  339. package/dist/cssm/index.js.map +1 -1
  340. package/dist/cssm/lib/accessibility.js +8 -0
  341. package/dist/cssm/lib/accessibility.js.map +1 -1
  342. package/dist/cssm/lib/calendar.js +9 -7
  343. package/dist/cssm/lib/calendar.js.map +1 -1
  344. package/dist/cssm/lib/date.js +66 -3
  345. package/dist/cssm/lib/date.js.map +1 -1
  346. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js +18 -8
  347. package/dist/cssm/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  348. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  349. package/dist/cssm/lib/touch/UIPanGestureRecognizer.js +2 -2
  350. package/dist/cssm/lib/touch/UIPanGestureRecognizer.js.map +1 -1
  351. package/dist/cssm/lib/utils.js +1 -0
  352. package/dist/cssm/lib/utils.js.map +1 -1
  353. package/dist/cssm/styles/dynamicTokens.css +14 -2
  354. package/dist/cssm/styles/themes.css +1 -1
  355. package/dist/hooks/useCalendar.d.ts.map +1 -1
  356. package/dist/hooks/useCalendar.js +6 -4
  357. package/dist/hooks/useCalendar.js.map +1 -1
  358. package/dist/hooks/useFloatingElement.d.ts +1 -1
  359. package/dist/hooks/useFloatingElement.d.ts.map +1 -1
  360. package/dist/hooks/useFloatingElement.js +3 -2
  361. package/dist/hooks/useFloatingElement.js.map +1 -1
  362. package/dist/hooks/useTodayDate.d.ts.map +1 -1
  363. package/dist/hooks/useTodayDate.js +3 -2
  364. package/dist/hooks/useTodayDate.js.map +1 -1
  365. package/dist/index.d.ts +4 -2
  366. package/dist/index.d.ts.map +1 -1
  367. package/dist/index.js.map +1 -1
  368. package/dist/lib/accessibility.d.ts +1 -1
  369. package/dist/lib/accessibility.d.ts.map +1 -1
  370. package/dist/lib/accessibility.js +8 -0
  371. package/dist/lib/accessibility.js.map +1 -1
  372. package/dist/lib/calendar.d.ts.map +1 -1
  373. package/dist/lib/calendar.js +9 -7
  374. package/dist/lib/calendar.js.map +1 -1
  375. package/dist/lib/date.d.ts +31 -1
  376. package/dist/lib/date.d.ts.map +1 -1
  377. package/dist/lib/date.js +67 -3
  378. package/dist/lib/date.js.map +1 -1
  379. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts +6 -1
  380. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.d.ts.map +1 -1
  381. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js +18 -8
  382. package/dist/lib/floating/useFloatingMiddlewaresBootstrap/index.js.map +1 -1
  383. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +2 -0
  384. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  385. package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  386. package/dist/lib/touch/UIPanGestureRecognizer.d.ts.map +1 -1
  387. package/dist/lib/touch/UIPanGestureRecognizer.js +2 -2
  388. package/dist/lib/touch/UIPanGestureRecognizer.js.map +1 -1
  389. package/dist/lib/utils.d.ts +1 -0
  390. package/dist/lib/utils.d.ts.map +1 -1
  391. package/dist/lib/utils.js +1 -0
  392. package/dist/lib/utils.js.map +1 -1
  393. package/dist/vkui.css +1 -1
  394. package/dist/vkui.css.map +1 -1
  395. package/package.json +6 -7
  396. package/src/components/Banner/Banner.module.css +1 -6
  397. package/src/components/Banner/Banner.module.css.d.ts.map +1 -1
  398. package/src/components/Calendar/Calendar.tsx +6 -6
  399. package/src/components/CalendarDays/CalendarDays.tsx +3 -3
  400. package/src/components/CalendarRange/CalendarRange.tsx +15 -20
  401. package/src/components/CalendarRange/utils.ts +7 -6
  402. package/src/components/Cell/Cell.tsx +3 -0
  403. package/src/components/Checkbox/Checkbox.tsx +6 -0
  404. package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css +7 -2
  405. package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.module.css.d.ts.map +1 -1
  406. package/src/components/Checkbox/CheckboxSimple/CheckboxSimple.tsx +12 -3
  407. package/src/components/ChipsInputBase/Chip/Chip.module.css +8 -1
  408. package/src/components/ChipsInputBase/Chip/Chip.module.css.d.ts.map +1 -1
  409. package/src/components/ChipsInputBase/Chip/Chip.tsx +55 -1
  410. package/src/components/ChipsInputBase/types.ts +2 -45
  411. package/src/components/ContentBadge/ContentBadge.tsx +18 -12
  412. package/src/components/ContentCard/ContentCard.tsx +1 -1
  413. package/src/components/CustomSelect/CustomSelect.tsx +216 -562
  414. package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css +12 -0
  415. package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.module.css.d.ts.map +1 -1
  416. package/src/components/CustomSelect/CustomSelectInput/CustomSelectInput.tsx +25 -2
  417. package/src/components/CustomSelect/helpers.ts +103 -0
  418. package/src/components/CustomSelect/hooks/useAfterItems.tsx +89 -0
  419. package/src/components/CustomSelect/hooks/useDropdownOpenedController.ts +61 -0
  420. package/src/components/CustomSelect/hooks/useFocusedOptionController.ts +86 -0
  421. package/src/components/CustomSelect/hooks/useInputKeyboardController.ts +96 -0
  422. package/src/components/CustomSelect/hooks/useInputValueController.ts +58 -0
  423. package/src/components/CustomSelect/hooks/useScrollListController.ts +46 -0
  424. package/src/components/CustomSelect/hooks/useSelectedOptionController.ts +132 -0
  425. package/src/components/CustomSelect/types.ts +38 -0
  426. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +1 -0
  427. package/src/components/DateInput/DateInput.tsx +9 -3
  428. package/src/components/DateRangeInput/DateRangeInput.tsx +9 -6
  429. package/src/components/ImageBase/ImageBaseBadge/ImageBaseBadge.tsx +1 -1
  430. package/src/components/MiniInfoCell/MiniInfoCell.tsx +8 -3
  431. package/src/components/ModalCard/ModalCard.tsx +2 -0
  432. package/src/components/ModalCard/ModalCardInternal.tsx +8 -2
  433. package/src/components/ModalCard/types.ts +8 -0
  434. package/src/components/ModalOutlet/ModalOutlet.module.css +4 -0
  435. package/src/components/ModalOutlet/ModalOutlet.module.css.d.ts.map +1 -1
  436. package/src/components/ModalOutlet/ModalOutlet.tsx +8 -1
  437. package/src/components/ModalOverlay/ModalOverlay.module.css +1 -1
  438. package/src/components/ModalPage/ModalPage.module.css +1 -0
  439. package/src/components/ModalPage/ModalPage.module.css.d.ts.map +1 -1
  440. package/src/components/ModalPage/ModalPage.tsx +2 -0
  441. package/src/components/ModalPage/ModalPageInternal.tsx +8 -2
  442. package/src/components/ModalPage/types.ts +8 -0
  443. package/src/components/ModalRoot/ModalRoot.tsx +19 -6
  444. package/src/components/ModalRoot/types.ts +7 -0
  445. package/src/components/ModalRoot/useModalManager.tsx +4 -0
  446. package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +3 -0
  447. package/src/components/Popover/Popover.tsx +1 -0
  448. package/src/components/Popover/usePopover.tsx +2 -0
  449. package/src/components/Popper/Popper.tsx +3 -0
  450. package/src/components/RichCell/RichCell.module.css +4 -2
  451. package/src/components/RichCell/RichCell.module.css.d.ts.map +1 -1
  452. package/src/components/Select/Select.tsx +5 -5
  453. package/src/components/SelectionControl/SelectionControl.module.css +6 -3
  454. package/src/components/SelectionControl/SelectionControl.module.css.d.ts.map +1 -1
  455. package/src/components/SelectionControl/SelectionControl.tsx +30 -8
  456. package/src/components/SelectionControl/SelectionControlContext.ts +7 -0
  457. package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css +6 -3
  458. package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.module.css.d.ts.map +1 -1
  459. package/src/components/SelectionControl/SelectionControlLabel/SelectionControlLabel.tsx +7 -1
  460. package/src/components/SimpleCell/SimpleCell.tsx +5 -0
  461. package/src/components/Skeleton/Skeleton.tsx +1 -1
  462. package/src/components/Slider/SliderThumb/SliderThumb.module.css +1 -1
  463. package/src/components/Tabs/Tabs.tsx +16 -12
  464. package/src/components/Tabs/TabsController.ts +2 -2
  465. package/src/components/Tabs/TabsControllerContext.ts +7 -0
  466. package/src/components/Tabs/TabsModeContext.ts +0 -3
  467. package/src/components/TabsItem/TabsItem.tsx +5 -9
  468. package/src/components/Tooltip/Tooltip.tsx +1 -0
  469. package/src/components/Tooltip/useTooltip.tsx +2 -0
  470. package/src/components/Typography/Caption/Caption.tsx +14 -6
  471. package/src/components/Typography/Footnote/Footnote.tsx +10 -6
  472. package/src/components/Typography/Typography.tsx +9 -2
  473. package/src/components/View/View.module.css +1 -1
  474. package/src/components/View/View.tsx +2 -1
  475. package/src/components/View/ViewInfinite.tsx +2 -1
  476. package/src/components/VisuallyHidden/VisuallyHidden.module.css +0 -2
  477. package/src/components/VisuallyHidden/VisuallyHidden.module.css.d.ts.map +1 -1
  478. package/src/hooks/useCalendar.ts +6 -4
  479. package/src/hooks/useFloatingElement.tsx +2 -0
  480. package/src/hooks/useTodayDate.ts +3 -2
  481. package/src/index.ts +5 -3
  482. package/src/lib/accessibility.ts +4 -0
  483. package/src/lib/calendar.ts +8 -12
  484. package/src/lib/date.ts +82 -3
  485. package/src/lib/floating/useFloatingMiddlewaresBootstrap/index.ts +23 -10
  486. package/src/lib/floating/useFloatingWithInteractions/types.ts +2 -0
  487. package/src/lib/touch/UIPanGestureRecognizer.ts +2 -2
  488. package/src/lib/utils.ts +3 -0
  489. package/src/styles/dynamicTokens.css +13 -2
@@ -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';
@@ -42,6 +42,8 @@ const EVENT_KEY_TO_COMMON_KEY_MAP = new Map([
42
42
  [' ', Keys.SPACE],
43
43
  ['Tab', Keys.TAB],
44
44
  ['Escape', Keys.ESCAPE],
45
+ ['Delete', Keys.DELETE],
46
+ ['Backspace', Keys.BACKSPACE],
45
47
  ['Home', Keys.HOME],
46
48
  ['End', Keys.END],
47
49
  ['ArrowLeft', Keys.ARROW_LEFT],
@@ -67,6 +69,8 @@ export function pressedKey<T extends KeyboardEvent | React.KeyboardEvent>(
67
69
  | 'ArrowDown'
68
70
  | 'PageUp'
69
71
  | 'PageDown'
72
+ | 'Backspace'
73
+ | 'Delete'
70
74
  | null {
71
75
  const foundKey = EVENT_KEY_TO_COMMON_KEY_MAP.get(event.key);
72
76
  return foundKey ? foundKey : null;
@@ -1,15 +1,10 @@
1
+ import { isSameDate } from '@vkontakte/vkjs';
1
2
  import {
2
3
  addDays,
3
4
  addMonths,
4
5
  addWeeks,
5
6
  eachDayOfInterval,
6
- endOfMonth,
7
7
  endOfWeek,
8
- isAfter,
9
- isBefore,
10
- isFirstDayOfMonth,
11
- isLastDayOfMonth,
12
- isSameDay,
13
8
  startOfMonth,
14
9
  startOfWeek,
15
10
  subDays,
@@ -18,6 +13,7 @@ import {
18
13
  } from 'date-fns';
19
14
  import { clamp as clampNumber } from '../helpers/math';
20
15
  import { Keys, type KeysValues } from './accessibility';
16
+ import { endOfMonth, isLastDayOfMonth } from './date';
21
17
 
22
18
  export const DEFAULT_MAX_YEAR = 9999;
23
19
  // 100 - из-за ограничений dayjs https://github.com/iamkun/dayjs/issues/2591
@@ -138,7 +134,7 @@ export const getWeeks = (viewDate: Date, weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6
138
134
  let current = start;
139
135
  const nestedWeeks: Date[][] = [];
140
136
  let lastDay = null;
141
- while (isBefore(current, end)) {
137
+ while (current < end) {
142
138
  const weekNumber = Math.floor(count / 7);
143
139
  nestedWeeks[weekNumber] = nestedWeeks[weekNumber] || [];
144
140
  const day = current.getDay();
@@ -164,7 +160,7 @@ export const setTimeEqual = (to: Date, from?: Date | null): Date => {
164
160
  };
165
161
 
166
162
  export const isFirstDay = (day: Date, dayOfWeek: number): boolean =>
167
- dayOfWeek === 0 || isFirstDayOfMonth(day);
163
+ dayOfWeek === 0 || day.getDate() === 1;
168
164
 
169
165
  export const isLastDay = (day: Date, dayOfWeek: number): boolean =>
170
166
  dayOfWeek === 6 || isLastDayOfMonth(day);
@@ -174,10 +170,10 @@ export const isLastDay = (day: Date, dayOfWeek: number): boolean =>
174
170
  */
175
171
  export function clamp(day: Date, options: { min?: Date; max?: Date } = {}): Date {
176
172
  const { min, max } = options;
177
- if (min && isBefore(day, min)) {
173
+ if (min && day < min) {
178
174
  return min;
179
175
  }
180
- if (max && isAfter(day, max)) {
176
+ if (max && day > max) {
181
177
  return max;
182
178
  }
183
179
  return day;
@@ -191,8 +187,8 @@ export function isDayMinMaxRestricted(
191
187
  options: { min?: Date; max?: Date; withTime?: boolean } = {},
192
188
  ): boolean {
193
189
  const { min, max, withTime = false } = options;
194
- if (!withTime && ((min && isSameDay(day, min)) || (max && isSameDay(day, max)))) {
190
+ if (!withTime && ((min && isSameDate(day, min)) || (max && isSameDate(day, max)))) {
195
191
  return false;
196
192
  }
197
- return Boolean((min && isBefore(day, min)) || (max && isAfter(day, max)));
193
+ return Boolean((min && day < min) || (max && day > max));
198
194
  }
package/src/lib/date.ts CHANGED
@@ -1,5 +1,5 @@
1
+ import { isSameDate } from '@vkontakte/vkjs';
1
2
  import { TZDateMini } from '@vkontakte/vkui-date-fns-tz';
2
- import { lightFormat } from 'date-fns';
3
3
 
4
4
  export function parse(input: string, format: string, referenceDate: Date = new Date()): Date {
5
5
  const match2 = /^\d\d/; // 00 - 99
@@ -141,10 +141,89 @@ export const convertDateFromTimeZone = (
141
141
  return date ? TZDateMini.tz(systemTimezone, date) : undefined;
142
142
  };
143
143
 
144
- export function format(date: Date | number, format: string): string {
145
- return lightFormat(date, format);
144
+ const dateOptions: Intl.DateTimeFormatOptions = {
145
+ day: '2-digit',
146
+ month: '2-digit',
147
+ year: 'numeric',
148
+ };
149
+
150
+ // dd.MM.yyyy
151
+ export const dateFormatter = /*#__PURE__*/ new Intl.DateTimeFormat('ru-RU', dateOptions);
152
+
153
+ class DateTimeFormat extends Intl.DateTimeFormat {
154
+ constructor() {
155
+ super('ru-RU', {
156
+ ...dateOptions,
157
+ hour: '2-digit',
158
+ minute: '2-digit',
159
+ });
160
+ }
161
+
162
+ format(date?: Date | number): string {
163
+ return super.format(date).replace(',', '');
164
+ }
165
+ }
166
+
167
+ // dd.MM.yyyy HH:mm
168
+ export const dateTimeFormatter = /*#__PURE__*/ new DateTimeFormat();
169
+
170
+ /**
171
+ * Возвращает дату конца месяца
172
+ */
173
+ export function endOfMonth(date: Date): Date {
174
+ const result = new Date(date);
175
+ const month = result.getMonth();
176
+ result.setFullYear(result.getFullYear(), month + 1, 0);
177
+ result.setHours(23, 59, 59, 999);
178
+ return result;
179
+ }
180
+
181
+ export function endOfDay(date: Date): Date {
182
+ const result = new Date(date);
183
+ result.setHours(23, 59, 59, 999);
184
+ return result;
185
+ }
186
+
187
+ /**
188
+ * Проверяет, что переданные даты относятся к одному и тому же месяцу
189
+ *
190
+ * @example
191
+ * ```ts
192
+ * import assert from 'node:assert';
193
+ * import { isSameMonth } from './date.ts';
194
+ *
195
+ * const d1 = new Date();
196
+ * const d2 = new Date();
197
+ * assert.ok(isSameMonth(d1, d2));
198
+ * ```
199
+ */
200
+ export function isSameMonth(d1: Date, d2: Date): boolean {
201
+ return d1.getMonth() === d2.getMonth() && d1.getFullYear() === d2.getFullYear();
202
+ }
203
+
204
+ export function isLastDayOfMonth(date: Date) {
205
+ return +endOfDay(date) === +endOfMonth(date);
206
+ }
207
+
208
+ export function isWithinInterval(date: Date, interval: [Date, Date]) {
209
+ const [startTime, endTime] = interval.sort((a, b) => +a - +b);
210
+
211
+ return date >= startTime && date <= endTime;
212
+ }
213
+
214
+ export function isToday(date: Date) {
215
+ return isSameDate(date, new Date());
216
+ }
217
+
218
+ export function isYesterday(date: Date) {
219
+ const yesterday = new Date();
220
+ yesterday.setDate(yesterday.getDate() - 1);
221
+
222
+ return isSameDate(date, yesterday);
146
223
  }
147
224
 
148
225
  export function isMatch(input: string, format: string): boolean {
149
226
  return !isNaN(+parse(input, format));
150
227
  }
228
+
229
+ export const millisecondsInSecond = 1000;
@@ -27,6 +27,11 @@ export interface UseFloatingMiddlewaresBootstrapOptions {
27
27
  * Не оказывает влияния при `placement` значениях - `'auto' | 'auto-start' | 'auto-end'`
28
28
  */
29
29
  disableFlipMiddleware?: boolean;
30
+ /**
31
+ * Позволяет отключить смещение по главной оси,
32
+ * которое не даёт всплывающему элементу выходить за границы видимой области.
33
+ */
34
+ disableShiftMiddleware?: boolean;
30
35
  /**
31
36
  * Задаёт резервный вариант размещения по перпендикулярной оси.
32
37
  */
@@ -78,6 +83,7 @@ export const useFloatingMiddlewaresBootstrap = ({
78
83
  customMiddlewares,
79
84
  hideWhenReferenceHidden,
80
85
  disableFlipMiddleware = false,
86
+ disableShiftMiddleware = false,
81
87
  flipMiddlewareFallbackAxisSideDirection = 'end',
82
88
  }: UseFloatingMiddlewaresBootstrapOptions): {
83
89
  middlewares: UseFloatingMiddleware[];
@@ -92,28 +98,34 @@ export const useFloatingMiddlewaresBootstrap = ({
92
98
  }),
93
99
  ];
94
100
 
95
- const shiftMiddlewareInstance = shiftMiddleware();
101
+ const shift = disableShiftMiddleware ? null : shiftMiddleware();
96
102
 
97
103
  // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#conflict-with-autoplacementjs
98
104
  if (isAutoPlacement) {
99
- middlewares.push(
100
- autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }),
101
- shiftMiddlewareInstance,
102
- );
105
+ middlewares.push(autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placement) }));
106
+ if (shift) {
107
+ middlewares.push(shift);
108
+ }
103
109
  } else if (!disableFlipMiddleware) {
104
- const flipMiddlewareInstance = flipMiddleware({
110
+ const flip = flipMiddleware({
105
111
  crossAxis: 'alignment',
106
112
  fallbackAxisSideDirection: flipMiddlewareFallbackAxisSideDirection,
107
113
  });
108
114
 
109
115
  // см. https://github.com/floating-ui/floating-ui/blob/%40floating-ui/core%401.7.1/website/pages/docs/flip.mdx#combining-with-shiftjs
110
116
  if (placement.includes('-')) {
111
- middlewares.push(flipMiddlewareInstance, shiftMiddlewareInstance);
117
+ middlewares.push(flip);
118
+ if (shift) {
119
+ middlewares.push(shift);
120
+ }
112
121
  } else {
113
- middlewares.push(shiftMiddlewareInstance, flipMiddlewareInstance);
122
+ if (shift) {
123
+ middlewares.push(shift);
124
+ }
125
+ middlewares.push(flip);
114
126
  }
115
- } else {
116
- middlewares.push(shiftMiddlewareInstance);
127
+ } else if (shift) {
128
+ middlewares.push(shift);
117
129
  }
118
130
 
119
131
  if (sameWidth) {
@@ -154,6 +166,7 @@ export const useFloatingMiddlewaresBootstrap = ({
154
166
  arrowHeight,
155
167
  offsetByMainAxis,
156
168
  disableFlipMiddleware,
169
+ disableShiftMiddleware,
157
170
  flipMiddlewareFallbackAxisSideDirection,
158
171
  sameWidth,
159
172
  customMiddlewares,
@@ -49,6 +49,8 @@ export interface UseFloatingWithInteractionsProps {
49
49
  * > ⚠️`"hover"` на тач-устройствах будет работать как `"click"`, с одним лишь нюансом, что
50
50
  * > не будет закрываться при повторном нажатии на целевой элемент. Для закрытия необходимо нажать
51
51
  * > на область вне целевого элемента и выпадающего окна.
52
+ *
53
+ * **Избегайте использования `trigger="hover"` как единственного механизма активации, так как пользователи клавиатуры или скринридеров не смогут использовать компонент**
52
54
  */
53
55
  trigger?: TriggerType;
54
56
  /**
@@ -1,3 +1,4 @@
1
+ import { millisecondsInSecond } from '../date';
1
2
  import { getFirstTouchEventData } from '../dom';
2
3
 
3
4
  export type Direction = { axis: 'x' | 'y'; direction: -1 | 1 | null };
@@ -5,7 +6,6 @@ export type Direction = { axis: 'x' | 'y'; direction: -1 | 1 | null };
5
6
  export type Coords = { x: number; y: number };
6
7
 
7
8
  const DEFAULT_INITIAL_TIME = 0;
8
- const MILLISECONDS = 1000;
9
9
 
10
10
  /**
11
11
  * JS имплементация класса из UIKIt iOS.
@@ -50,7 +50,7 @@ export class UIPanGestureRecognizer {
50
50
  }
51
51
 
52
52
  velocity(): Coords {
53
- const deltaTime = (Date.now() - this.initialTime) / MILLISECONDS;
53
+ const deltaTime = (Date.now() - this.initialTime) / millisecondsInSecond;
54
54
 
55
55
  if (deltaTime <= 0) {
56
56
  return { x: 0, y: 0 };
package/src/lib/utils.ts CHANGED
@@ -35,6 +35,9 @@ export function multiRef<T>(...refs: Array<React.Ref<T> | undefined>): React.Ref
35
35
  export const stopPropagation = <T extends React.SyntheticEvent>(event: T): void =>
36
36
  event.stopPropagation();
37
37
 
38
+ export const preventDefault = <T extends React.SyntheticEvent>(event: T): void =>
39
+ event.preventDefault();
40
+
38
41
  export function addClassNameToElement(element: HTMLElement, className: string): void {
39
42
  const elementClassName = element.getAttribute('class') || '';
40
43
  const updatedClassName = `${elementClassName}${elementClassName ? ' ' : ''}${className}`;
@@ -1,15 +1,26 @@
1
1
  /* stylelint-disable selector-pseudo-class-disallowed-list */
2
2
 
3
+ /*
4
+ В Windows можно менять общий масштаб интерфейса от 100 до 500%. Готовые пресеты 125%, 150% и 175%.
5
+ В случаях, когда `--vkui--size_border--regular` используется не для свойства `border`, а для `height`,
6
+ одна из линий становится размером больше чем остальные.
7
+
8
+ Поэтому используем пограничные значения DPI, чтобы смена на субпиксельные значения срабатывала раньше:
9
+ - 1.01dppx вместо 2dppx для 101% и до 200%;
10
+ - 2.01dppx вместо 3dppx для 201% и больше;
11
+
12
+ @see https://github.com/VKCOM/VKUI/issues/8864
13
+ */
3
14
  :root {
4
15
  --vkui--size_border--regular: var(--vkui--size_border1x--regular);
5
16
  }
6
17
 
7
- @media (min-resolution: 2dppx) {
18
+ @media (min-resolution: 1.01dppx) {
8
19
  :root {
9
20
  --vkui--size_border--regular: var(--vkui--size_border2x--regular);
10
21
  }
11
22
  }
12
- @media (min-resolution: 3dppx) {
23
+ @media (min-resolution: 2.01dppx) {
13
24
  :root {
14
25
  --vkui--size_border--regular: var(--vkui--size_border3x--regular);
15
26
  }