@vkontakte/vkui 6.6.0 → 6.7.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 (551) hide show
  1. package/dist/cjs/components/Alert/Alert.js +1 -1
  2. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  3. package/dist/cjs/components/AspectRatio/AspectRatio.js +1 -1
  4. package/dist/cjs/components/AspectRatio/AspectRatio.js.map +1 -1
  5. package/dist/cjs/components/Badge/Badge.js +1 -1
  6. package/dist/cjs/components/Badge/Badge.js.map +1 -1
  7. package/dist/cjs/components/Button/Button.js +1 -1
  8. package/dist/cjs/components/Button/Button.js.map +1 -1
  9. package/dist/cjs/components/Calendar/Calendar.d.ts +2 -2
  10. package/dist/cjs/components/Calendar/Calendar.d.ts.map +1 -1
  11. package/dist/cjs/components/Calendar/Calendar.js +4 -2
  12. package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
  13. package/dist/cjs/components/CalendarDay/CalendarDay.d.ts +1 -0
  14. package/dist/cjs/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  15. package/dist/cjs/components/CalendarDay/CalendarDay.js +26 -14
  16. package/dist/cjs/components/CalendarDay/CalendarDay.js.map +1 -1
  17. package/dist/cjs/components/CalendarDays/CalendarDays.d.ts +3 -3
  18. package/dist/cjs/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  19. package/dist/cjs/components/CalendarDays/CalendarDays.js +5 -3
  20. package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
  21. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +2 -2
  22. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  23. package/dist/cjs/components/CalendarRange/CalendarRange.js +5 -2
  24. package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
  25. package/dist/cjs/components/CardGrid/CardGrid.js +1 -1
  26. package/dist/cjs/components/CardGrid/CardGrid.js.map +1 -1
  27. package/dist/cjs/components/Clickable/Clickable.d.ts +1 -0
  28. package/dist/cjs/components/Clickable/Clickable.d.ts.map +1 -1
  29. package/dist/cjs/components/Clickable/Clickable.js +21 -6
  30. package/dist/cjs/components/Clickable/Clickable.js.map +1 -1
  31. package/dist/cjs/components/Clickable/useState.d.ts +39 -3
  32. package/dist/cjs/components/Clickable/useState.d.ts.map +1 -1
  33. package/dist/cjs/components/Clickable/useState.js +110 -37
  34. package/dist/cjs/components/Clickable/useState.js.map +1 -1
  35. package/dist/cjs/components/Clickable/useStateWithDelay.d.ts +19 -1
  36. package/dist/cjs/components/Clickable/useStateWithDelay.d.ts.map +1 -1
  37. package/dist/cjs/components/Clickable/useStateWithDelay.js +20 -4
  38. package/dist/cjs/components/Clickable/useStateWithDelay.js.map +1 -1
  39. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +3 -2
  40. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  41. package/dist/cjs/components/CustomSelect/CustomSelect.js +7 -7
  42. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  43. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +1 -1
  44. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  45. package/dist/cjs/components/DateInput/DateInput.d.ts +2 -2
  46. package/dist/cjs/components/DateInput/DateInput.d.ts.map +1 -1
  47. package/dist/cjs/components/DateInput/DateInput.js +5 -3
  48. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  49. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  50. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  51. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +6 -4
  52. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  53. package/dist/cjs/components/FormField/FormField.js +1 -1
  54. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  55. package/dist/cjs/components/FormItem/FormItem.js +1 -1
  56. package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
  57. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -1
  58. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  59. package/dist/cjs/components/Input/Input.js +1 -1
  60. package/dist/cjs/components/Input/Input.js.map +1 -1
  61. package/dist/cjs/components/ModalRoot/ModalRoot.js +4 -14
  62. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  63. package/dist/cjs/components/ModalRoot/ModalRootDesktop.d.ts.map +1 -1
  64. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +9 -1
  65. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  66. package/dist/cjs/components/NativeSelect/NativeSelect.js +1 -1
  67. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  68. package/dist/cjs/components/Panel/Panel.js +2 -2
  69. package/dist/cjs/components/Panel/Panel.js.map +1 -1
  70. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
  71. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
  72. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  73. package/dist/cjs/components/RichCell/RichCell.js +1 -1
  74. package/dist/cjs/components/RichCell/RichCell.js.map +1 -1
  75. package/dist/cjs/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
  76. package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js +4 -2
  77. package/dist/cjs/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  78. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +1 -1
  79. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
  80. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.js +23 -6
  81. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
  82. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerLoader.d.ts.map +1 -1
  83. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerLoader.js +8 -3
  84. package/dist/cjs/components/ScreenSpinner/ScreenSpinnerLoader.js.map +1 -1
  85. package/dist/cjs/components/ScreenSpinner/context.d.ts +1 -0
  86. package/dist/cjs/components/ScreenSpinner/context.d.ts.map +1 -1
  87. package/dist/cjs/components/ScreenSpinner/context.js +2 -1
  88. package/dist/cjs/components/ScreenSpinner/context.js.map +1 -1
  89. package/dist/cjs/components/ScreenSpinner/types.d.ts +5 -0
  90. package/dist/cjs/components/ScreenSpinner/types.d.ts.map +1 -1
  91. package/dist/cjs/components/Search/Search.d.ts.map +1 -1
  92. package/dist/cjs/components/Search/Search.js +16 -11
  93. package/dist/cjs/components/Search/Search.js.map +1 -1
  94. package/dist/cjs/components/SegmentedControl/SegmentedControl.js +1 -1
  95. package/dist/cjs/components/SegmentedControl/SegmentedControl.js.map +1 -1
  96. package/dist/cjs/components/Select/Select.d.ts.map +1 -1
  97. package/dist/cjs/components/Select/Select.js +5 -1
  98. package/dist/cjs/components/Select/Select.js.map +1 -1
  99. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +1 -1
  100. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  101. package/dist/cjs/components/SimpleCell/SimpleCell.js +1 -1
  102. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  103. package/dist/cjs/components/Skeleton/Skeleton.d.ts +1 -1
  104. package/dist/cjs/components/Skeleton/Skeleton.d.ts.map +1 -1
  105. package/dist/cjs/components/Skeleton/Skeleton.js +85 -4
  106. package/dist/cjs/components/Skeleton/Skeleton.js.map +1 -1
  107. package/dist/cjs/components/Slider/Slider.js +1 -1
  108. package/dist/cjs/components/Slider/Slider.js.map +1 -1
  109. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js +1 -1
  110. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  111. package/dist/cjs/components/TabsItem/TabsItem.js +1 -1
  112. package/dist/cjs/components/TabsItem/TabsItem.js.map +1 -1
  113. package/dist/cjs/components/Textarea/Textarea.js +1 -1
  114. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  115. package/dist/cjs/components/ToolButton/ToolButton.d.ts +2 -1
  116. package/dist/cjs/components/ToolButton/ToolButton.d.ts.map +1 -1
  117. package/dist/cjs/components/ToolButton/ToolButton.js +20 -4
  118. package/dist/cjs/components/ToolButton/ToolButton.js.map +1 -1
  119. package/dist/cjs/components/Typography/Caption/Caption.d.ts.map +1 -1
  120. package/dist/cjs/components/Typography/Caption/Caption.js +7 -1
  121. package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
  122. package/dist/cjs/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
  123. package/dist/cjs/components/Typography/DisplayTitle/DisplayTitle.js +7 -1
  124. package/dist/cjs/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
  125. package/dist/cjs/components/Typography/Footnote/Footnote.d.ts.map +1 -1
  126. package/dist/cjs/components/Typography/Footnote/Footnote.js +7 -1
  127. package/dist/cjs/components/Typography/Footnote/Footnote.js.map +1 -1
  128. package/dist/cjs/components/Typography/Headline/Headline.d.ts +1 -1
  129. package/dist/cjs/components/Typography/Headline/Headline.d.ts.map +1 -1
  130. package/dist/cjs/components/Typography/Headline/Headline.js +2 -4
  131. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  132. package/dist/cjs/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
  133. package/dist/cjs/components/Typography/Paragraph/Paragraph.js +7 -1
  134. package/dist/cjs/components/Typography/Paragraph/Paragraph.js.map +1 -1
  135. package/dist/cjs/components/Typography/Subhead/Subhead.js +1 -1
  136. package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
  137. package/dist/cjs/components/Typography/Text/Text.js +1 -1
  138. package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
  139. package/dist/cjs/components/Typography/Title/Title.d.ts.map +1 -1
  140. package/dist/cjs/components/Typography/Title/Title.js +7 -1
  141. package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
  142. package/dist/cjs/components/Typography/Typography.d.ts +7 -1
  143. package/dist/cjs/components/Typography/Typography.d.ts.map +1 -1
  144. package/dist/cjs/components/Typography/Typography.js +4 -2
  145. package/dist/cjs/components/Typography/Typography.js.map +1 -1
  146. package/dist/cjs/components/View/ViewInfinite.js +5 -16
  147. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  148. package/dist/cjs/components/WriteBar/WriteBar.js +3 -1
  149. package/dist/cjs/components/WriteBar/WriteBar.js.map +1 -1
  150. package/dist/cjs/hooks/useAdaptivityConditionalRender/constants.js +4 -4
  151. package/dist/cjs/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
  152. package/dist/cjs/hooks/useWaitTransitionFinish.d.ts +1 -1
  153. package/dist/cjs/hooks/useWaitTransitionFinish.d.ts.map +1 -1
  154. package/dist/cjs/hooks/useWaitTransitionFinish.js.map +1 -1
  155. package/dist/components/Alert/Alert.js +1 -1
  156. package/dist/components/Alert/Alert.js.map +1 -1
  157. package/dist/components/AspectRatio/AspectRatio.js +1 -1
  158. package/dist/components/AspectRatio/AspectRatio.js.map +1 -1
  159. package/dist/components/Badge/Badge.js +1 -1
  160. package/dist/components/Badge/Badge.js.map +1 -1
  161. package/dist/components/Button/Button.js +1 -1
  162. package/dist/components/Button/Button.js.map +1 -1
  163. package/dist/components/Calendar/Calendar.d.ts +2 -2
  164. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  165. package/dist/components/Calendar/Calendar.js +4 -2
  166. package/dist/components/Calendar/Calendar.js.map +1 -1
  167. package/dist/components/CalendarDay/CalendarDay.d.ts +1 -0
  168. package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  169. package/dist/components/CalendarDay/CalendarDay.js +26 -14
  170. package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
  171. package/dist/components/CalendarDays/CalendarDays.d.ts +3 -3
  172. package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  173. package/dist/components/CalendarDays/CalendarDays.js +5 -3
  174. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  175. package/dist/components/CalendarRange/CalendarRange.d.ts +2 -2
  176. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  177. package/dist/components/CalendarRange/CalendarRange.js +5 -2
  178. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  179. package/dist/components/CardGrid/CardGrid.js +1 -1
  180. package/dist/components/CardGrid/CardGrid.js.map +1 -1
  181. package/dist/components/Clickable/Clickable.d.ts +1 -0
  182. package/dist/components/Clickable/Clickable.d.ts.map +1 -1
  183. package/dist/components/Clickable/Clickable.js +21 -7
  184. package/dist/components/Clickable/Clickable.js.map +1 -1
  185. package/dist/components/Clickable/useState.d.ts +39 -3
  186. package/dist/components/Clickable/useState.d.ts.map +1 -1
  187. package/dist/components/Clickable/useState.js +110 -37
  188. package/dist/components/Clickable/useState.js.map +1 -1
  189. package/dist/components/Clickable/useStateWithDelay.d.ts +19 -1
  190. package/dist/components/Clickable/useStateWithDelay.d.ts.map +1 -1
  191. package/dist/components/Clickable/useStateWithDelay.js +38 -4
  192. package/dist/components/Clickable/useStateWithDelay.js.map +1 -1
  193. package/dist/components/CustomSelect/CustomSelect.d.ts +3 -2
  194. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  195. package/dist/components/CustomSelect/CustomSelect.js +7 -7
  196. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  197. package/dist/components/CustomSelectOption/CustomSelectOption.js +1 -1
  198. package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  199. package/dist/components/DateInput/DateInput.d.ts +2 -2
  200. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  201. package/dist/components/DateInput/DateInput.js +5 -3
  202. package/dist/components/DateInput/DateInput.js.map +1 -1
  203. package/dist/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  204. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  205. package/dist/components/DateRangeInput/DateRangeInput.js +6 -4
  206. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  207. package/dist/components/FormField/FormField.js +1 -1
  208. package/dist/components/FormField/FormField.js.map +1 -1
  209. package/dist/components/FormItem/FormItem.js +1 -1
  210. package/dist/components/FormItem/FormItem.js.map +1 -1
  211. package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -1
  212. package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  213. package/dist/components/Input/Input.js +1 -1
  214. package/dist/components/Input/Input.js.map +1 -1
  215. package/dist/components/ModalRoot/ModalRoot.js +4 -14
  216. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  217. package/dist/components/ModalRoot/ModalRootDesktop.d.ts.map +1 -1
  218. package/dist/components/ModalRoot/ModalRootDesktop.js +9 -1
  219. package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  220. package/dist/components/NativeSelect/NativeSelect.js +1 -1
  221. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  222. package/dist/components/Panel/Panel.js +2 -2
  223. package/dist/components/Panel/Panel.js.map +1 -1
  224. package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
  225. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
  226. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  227. package/dist/components/RichCell/RichCell.js +1 -1
  228. package/dist/components/RichCell/RichCell.js.map +1 -1
  229. package/dist/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
  230. package/dist/components/ScreenSpinner/ScreenSpinner.js +4 -2
  231. package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  232. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +1 -1
  233. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
  234. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js +25 -8
  235. package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
  236. package/dist/components/ScreenSpinner/ScreenSpinnerLoader.d.ts.map +1 -1
  237. package/dist/components/ScreenSpinner/ScreenSpinnerLoader.js +8 -3
  238. package/dist/components/ScreenSpinner/ScreenSpinnerLoader.js.map +1 -1
  239. package/dist/components/ScreenSpinner/context.d.ts +1 -0
  240. package/dist/components/ScreenSpinner/context.d.ts.map +1 -1
  241. package/dist/components/ScreenSpinner/context.js +2 -1
  242. package/dist/components/ScreenSpinner/context.js.map +1 -1
  243. package/dist/components/ScreenSpinner/types.d.ts +5 -0
  244. package/dist/components/ScreenSpinner/types.d.ts.map +1 -1
  245. package/dist/components/ScreenSpinner/types.js.map +1 -1
  246. package/dist/components/Search/Search.d.ts.map +1 -1
  247. package/dist/components/Search/Search.js +17 -12
  248. package/dist/components/Search/Search.js.map +1 -1
  249. package/dist/components/SegmentedControl/SegmentedControl.js +1 -1
  250. package/dist/components/SegmentedControl/SegmentedControl.js.map +1 -1
  251. package/dist/components/Select/Select.d.ts.map +1 -1
  252. package/dist/components/Select/Select.js +5 -1
  253. package/dist/components/Select/Select.js.map +1 -1
  254. package/dist/components/SelectMimicry/SelectMimicry.js +1 -1
  255. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  256. package/dist/components/SimpleCell/SimpleCell.js +1 -1
  257. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  258. package/dist/components/Skeleton/Skeleton.d.ts +1 -1
  259. package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
  260. package/dist/components/Skeleton/Skeleton.js +85 -4
  261. package/dist/components/Skeleton/Skeleton.js.map +1 -1
  262. package/dist/components/Slider/Slider.js +1 -1
  263. package/dist/components/Slider/Slider.js.map +1 -1
  264. package/dist/components/SubnavigationButton/SubnavigationButton.js +1 -1
  265. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  266. package/dist/components/TabsItem/TabsItem.js +1 -1
  267. package/dist/components/TabsItem/TabsItem.js.map +1 -1
  268. package/dist/components/Textarea/Textarea.js +1 -1
  269. package/dist/components/Textarea/Textarea.js.map +1 -1
  270. package/dist/components/ToolButton/ToolButton.d.ts +2 -1
  271. package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
  272. package/dist/components/ToolButton/ToolButton.js +9 -1
  273. package/dist/components/ToolButton/ToolButton.js.map +1 -1
  274. package/dist/components/Typography/Caption/Caption.d.ts.map +1 -1
  275. package/dist/components/Typography/Caption/Caption.js +7 -1
  276. package/dist/components/Typography/Caption/Caption.js.map +1 -1
  277. package/dist/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
  278. package/dist/components/Typography/DisplayTitle/DisplayTitle.js +7 -1
  279. package/dist/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
  280. package/dist/components/Typography/Footnote/Footnote.d.ts.map +1 -1
  281. package/dist/components/Typography/Footnote/Footnote.js +7 -1
  282. package/dist/components/Typography/Footnote/Footnote.js.map +1 -1
  283. package/dist/components/Typography/Headline/Headline.d.ts +1 -1
  284. package/dist/components/Typography/Headline/Headline.d.ts.map +1 -1
  285. package/dist/components/Typography/Headline/Headline.js +2 -4
  286. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  287. package/dist/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
  288. package/dist/components/Typography/Paragraph/Paragraph.js +7 -1
  289. package/dist/components/Typography/Paragraph/Paragraph.js.map +1 -1
  290. package/dist/components/Typography/Subhead/Subhead.js +1 -1
  291. package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
  292. package/dist/components/Typography/Text/Text.js +1 -1
  293. package/dist/components/Typography/Text/Text.js.map +1 -1
  294. package/dist/components/Typography/Title/Title.d.ts.map +1 -1
  295. package/dist/components/Typography/Title/Title.js +7 -1
  296. package/dist/components/Typography/Title/Title.js.map +1 -1
  297. package/dist/components/Typography/Typography.d.ts +7 -1
  298. package/dist/components/Typography/Typography.d.ts.map +1 -1
  299. package/dist/components/Typography/Typography.js +4 -2
  300. package/dist/components/Typography/Typography.js.map +1 -1
  301. package/dist/components/View/ViewInfinite.js +5 -16
  302. package/dist/components/View/ViewInfinite.js.map +1 -1
  303. package/dist/components/WriteBar/WriteBar.js +3 -1
  304. package/dist/components/WriteBar/WriteBar.js.map +1 -1
  305. package/dist/components.css +313 -3
  306. package/dist/components.css.map +1 -1
  307. package/dist/components.js.tmp +647 -301
  308. package/dist/cssm/components/Alert/Alert.js +1 -1
  309. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  310. package/dist/cssm/components/AspectRatio/AspectRatio.js +1 -1
  311. package/dist/cssm/components/AspectRatio/AspectRatio.js.map +1 -1
  312. package/dist/cssm/components/Badge/Badge.js +1 -1
  313. package/dist/cssm/components/Badge/Badge.js.map +1 -1
  314. package/dist/cssm/components/Button/Button.js +1 -1
  315. package/dist/cssm/components/Button/Button.js.map +1 -1
  316. package/dist/cssm/components/Calendar/Calendar.d.ts +2 -2
  317. package/dist/cssm/components/Calendar/Calendar.d.ts.map +1 -1
  318. package/dist/cssm/components/Calendar/Calendar.js +3 -2
  319. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  320. package/dist/cssm/components/CalendarDay/CalendarDay.d.ts +1 -0
  321. package/dist/cssm/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  322. package/dist/cssm/components/CalendarDay/CalendarDay.js +24 -13
  323. package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
  324. package/dist/cssm/components/CalendarDays/CalendarDays.d.ts +3 -3
  325. package/dist/cssm/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  326. package/dist/cssm/components/CalendarDays/CalendarDays.js +2 -1
  327. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  328. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +2 -2
  329. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  330. package/dist/cssm/components/CalendarRange/CalendarRange.js +3 -1
  331. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  332. package/dist/cssm/components/CardGrid/CardGrid.js +1 -1
  333. package/dist/cssm/components/CardGrid/CardGrid.js.map +1 -1
  334. package/dist/cssm/components/Clickable/Clickable.d.ts +1 -0
  335. package/dist/cssm/components/Clickable/Clickable.d.ts.map +1 -1
  336. package/dist/cssm/components/Clickable/Clickable.js +16 -6
  337. package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
  338. package/dist/cssm/components/Clickable/useState.d.ts +39 -3
  339. package/dist/cssm/components/Clickable/useState.d.ts.map +1 -1
  340. package/dist/cssm/components/Clickable/useState.js +104 -36
  341. package/dist/cssm/components/Clickable/useState.js.map +1 -1
  342. package/dist/cssm/components/Clickable/useStateWithDelay.d.ts +19 -1
  343. package/dist/cssm/components/Clickable/useStateWithDelay.d.ts.map +1 -1
  344. package/dist/cssm/components/Clickable/useStateWithDelay.js +38 -4
  345. package/dist/cssm/components/Clickable/useStateWithDelay.js.map +1 -1
  346. package/dist/cssm/components/Counter/Counter.module.css +0 -14
  347. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +3 -2
  348. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  349. package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -3
  350. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  351. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +1 -1
  352. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  353. package/dist/cssm/components/DateInput/DateInput.d.ts +2 -2
  354. package/dist/cssm/components/DateInput/DateInput.d.ts.map +1 -1
  355. package/dist/cssm/components/DateInput/DateInput.js +3 -2
  356. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  357. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  358. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  359. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +4 -3
  360. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  361. package/dist/cssm/components/FormField/FormField.js +1 -1
  362. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  363. package/dist/cssm/components/FormItem/FormItem.js +1 -1
  364. package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
  365. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -1
  366. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  367. package/dist/cssm/components/Input/Input.js +1 -1
  368. package/dist/cssm/components/Input/Input.js.map +1 -1
  369. package/dist/cssm/components/ModalRoot/ModalRootDesktop.d.ts.map +1 -1
  370. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +9 -1
  371. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  372. package/dist/cssm/components/NativeSelect/NativeSelect.js +1 -1
  373. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  374. package/dist/cssm/components/Panel/Panel.js +2 -2
  375. package/dist/cssm/components/Panel/Panel.js.map +1 -1
  376. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
  377. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
  378. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  379. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.module.css +48 -3
  380. package/dist/cssm/components/RichCell/RichCell.js +1 -1
  381. package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
  382. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
  383. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +2 -1
  384. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
  385. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +40 -0
  386. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +1 -1
  387. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
  388. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js +20 -7
  389. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
  390. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerLoader.d.ts.map +1 -1
  391. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerLoader.js +8 -3
  392. package/dist/cssm/components/ScreenSpinner/ScreenSpinnerLoader.js.map +1 -1
  393. package/dist/cssm/components/ScreenSpinner/context.d.ts +1 -0
  394. package/dist/cssm/components/ScreenSpinner/context.d.ts.map +1 -1
  395. package/dist/cssm/components/ScreenSpinner/context.js +2 -1
  396. package/dist/cssm/components/ScreenSpinner/context.js.map +1 -1
  397. package/dist/cssm/components/ScreenSpinner/types.d.ts +5 -0
  398. package/dist/cssm/components/ScreenSpinner/types.d.ts.map +1 -1
  399. package/dist/cssm/components/ScreenSpinner/types.js.map +1 -1
  400. package/dist/cssm/components/Search/Search.d.ts.map +1 -1
  401. package/dist/cssm/components/Search/Search.js +17 -12
  402. package/dist/cssm/components/Search/Search.js.map +1 -1
  403. package/dist/cssm/components/Search/Search.module.css +25 -13
  404. package/dist/cssm/components/SegmentedControl/SegmentedControl.js +1 -1
  405. package/dist/cssm/components/SegmentedControl/SegmentedControl.js.map +1 -1
  406. package/dist/cssm/components/Select/Select.d.ts.map +1 -1
  407. package/dist/cssm/components/Select/Select.js +1 -1
  408. package/dist/cssm/components/Select/Select.js.map +1 -1
  409. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +1 -1
  410. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  411. package/dist/cssm/components/SimpleCell/SimpleCell.js +1 -1
  412. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  413. package/dist/cssm/components/Skeleton/Skeleton.d.ts +1 -1
  414. package/dist/cssm/components/Skeleton/Skeleton.d.ts.map +1 -1
  415. package/dist/cssm/components/Skeleton/Skeleton.js +83 -3
  416. package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
  417. package/dist/cssm/components/Skeleton/Skeleton.module.css +30 -32
  418. package/dist/cssm/components/Slider/Slider.js +1 -1
  419. package/dist/cssm/components/Slider/Slider.js.map +1 -1
  420. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js +1 -1
  421. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  422. package/dist/cssm/components/TabsItem/TabsItem.js +1 -1
  423. package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
  424. package/dist/cssm/components/Textarea/Textarea.js +1 -1
  425. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  426. package/dist/cssm/components/ToolButton/ToolButton.d.ts +2 -1
  427. package/dist/cssm/components/ToolButton/ToolButton.d.ts.map +1 -1
  428. package/dist/cssm/components/ToolButton/ToolButton.js +9 -1
  429. package/dist/cssm/components/ToolButton/ToolButton.js.map +1 -1
  430. package/dist/cssm/components/ToolButton/ToolButton.module.css +13 -6
  431. package/dist/cssm/components/Typography/Caption/Caption.d.ts.map +1 -1
  432. package/dist/cssm/components/Typography/Caption/Caption.js +7 -1
  433. package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
  434. package/dist/cssm/components/Typography/Caption/Caption.module.css +240 -0
  435. package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.d.ts.map +1 -1
  436. package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.js +7 -1
  437. package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.js.map +1 -1
  438. package/dist/cssm/components/Typography/DisplayTitle/DisplayTitle.module.css +160 -0
  439. package/dist/cssm/components/Typography/Footnote/Footnote.d.ts.map +1 -1
  440. package/dist/cssm/components/Typography/Footnote/Footnote.js +10 -2
  441. package/dist/cssm/components/Typography/Footnote/Footnote.js.map +1 -1
  442. package/dist/cssm/components/Typography/Footnote/Footnote.module.css +80 -0
  443. package/dist/cssm/components/Typography/Headline/Headline.d.ts +1 -1
  444. package/dist/cssm/components/Typography/Headline/Headline.d.ts.map +1 -1
  445. package/dist/cssm/components/Typography/Headline/Headline.js +2 -3
  446. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  447. package/dist/cssm/components/Typography/Headline/Headline.module.css +48 -8
  448. package/dist/cssm/components/Typography/Paragraph/Paragraph.d.ts.map +1 -1
  449. package/dist/cssm/components/Typography/Paragraph/Paragraph.js +7 -1
  450. package/dist/cssm/components/Typography/Paragraph/Paragraph.js.map +1 -1
  451. package/dist/cssm/components/Typography/Paragraph/Paragraph.module.css +40 -0
  452. package/dist/cssm/components/Typography/Subhead/Subhead.js +1 -1
  453. package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
  454. package/dist/cssm/components/Typography/Subhead/Subhead.module.css +32 -4
  455. package/dist/cssm/components/Typography/Text/Text.js +1 -1
  456. package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
  457. package/dist/cssm/components/Typography/Text/Text.module.css +29 -4
  458. package/dist/cssm/components/Typography/Title/Title.d.ts.map +1 -1
  459. package/dist/cssm/components/Typography/Title/Title.js +7 -1
  460. package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
  461. package/dist/cssm/components/Typography/Title/Title.module.css +120 -0
  462. package/dist/cssm/components/Typography/Typography.d.ts +7 -1
  463. package/dist/cssm/components/Typography/Typography.d.ts.map +1 -1
  464. package/dist/cssm/components/Typography/Typography.js +3 -2
  465. package/dist/cssm/components/Typography/Typography.js.map +1 -1
  466. package/dist/cssm/components/Typography/Typography.module.css +21 -3
  467. package/dist/cssm/components/WriteBar/WriteBar.js +1 -0
  468. package/dist/cssm/components/WriteBar/WriteBar.js.map +1 -1
  469. package/dist/cssm/hooks/useAdaptivityConditionalRender/constants.js +4 -4
  470. package/dist/cssm/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
  471. package/dist/cssm/hooks/useWaitTransitionFinish.d.ts +1 -1
  472. package/dist/cssm/hooks/useWaitTransitionFinish.d.ts.map +1 -1
  473. package/dist/cssm/hooks/useWaitTransitionFinish.js.map +1 -1
  474. package/dist/cssm/styles/missedThemeTokens.css +22 -0
  475. package/dist/hooks/useAdaptivityConditionalRender/constants.js +4 -4
  476. package/dist/hooks/useAdaptivityConditionalRender/constants.js.map +1 -1
  477. package/dist/hooks/useWaitTransitionFinish.d.ts +1 -1
  478. package/dist/hooks/useWaitTransitionFinish.d.ts.map +1 -1
  479. package/dist/hooks/useWaitTransitionFinish.js.map +1 -1
  480. package/dist/vkui.css +313 -3
  481. package/dist/vkui.css.map +1 -1
  482. package/dist/vkui.js.tmp +647 -301
  483. package/package.json +3 -2
  484. package/src/components/Alert/Alert.tsx +1 -1
  485. package/src/components/AspectRatio/AspectRatio.tsx +1 -1
  486. package/src/components/Badge/Badge.tsx +1 -1
  487. package/src/components/Button/Button.tsx +1 -1
  488. package/src/components/Calendar/Calendar.tsx +3 -1
  489. package/src/components/CalendarDay/CalendarDay.tsx +16 -4
  490. package/src/components/CalendarDays/CalendarDays.tsx +9 -2
  491. package/src/components/CalendarRange/CalendarRange.tsx +4 -1
  492. package/src/components/CardGrid/CardGrid.tsx +1 -1
  493. package/src/components/Clickable/Clickable.tsx +21 -3
  494. package/src/components/Clickable/useState.tsx +195 -42
  495. package/src/components/Clickable/useStateWithDelay.tsx +40 -3
  496. package/src/components/Counter/Counter.module.css +0 -12
  497. package/src/components/CustomSelect/CustomSelect.tsx +11 -10
  498. package/src/components/CustomSelectOption/CustomSelectOption.tsx +1 -1
  499. package/src/components/DateInput/DateInput.tsx +4 -1
  500. package/src/components/DateRangeInput/DateRangeInput.tsx +4 -1
  501. package/src/components/FormField/FormField.tsx +1 -1
  502. package/src/components/FormItem/FormItem.tsx +1 -1
  503. package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +1 -1
  504. package/src/components/Input/Input.tsx +1 -1
  505. package/src/components/ModalRoot/ModalRootDesktop.tsx +13 -1
  506. package/src/components/NativeSelect/NativeSelect.tsx +1 -1
  507. package/src/components/Panel/Panel.tsx +2 -2
  508. package/src/components/PanelHeaderButton/PanelHeaderButton.module.css +44 -3
  509. package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +1 -1
  510. package/src/components/RichCell/RichCell.tsx +1 -1
  511. package/src/components/ScreenSpinner/ScreenSpinner.module.css +35 -0
  512. package/src/components/ScreenSpinner/ScreenSpinner.tsx +2 -1
  513. package/src/components/ScreenSpinner/ScreenSpinnerContainer.tsx +15 -4
  514. package/src/components/ScreenSpinner/ScreenSpinnerLoader.tsx +16 -3
  515. package/src/components/ScreenSpinner/context.ts +2 -0
  516. package/src/components/ScreenSpinner/types.tsx +5 -0
  517. package/src/components/Search/Search.module.css +24 -13
  518. package/src/components/Search/Search.tsx +19 -14
  519. package/src/components/SegmentedControl/SegmentedControl.tsx +1 -1
  520. package/src/components/Select/Select.tsx +4 -0
  521. package/src/components/SelectMimicry/SelectMimicry.tsx +1 -1
  522. package/src/components/SimpleCell/SimpleCell.tsx +1 -1
  523. package/src/components/Skeleton/Skeleton.module.css +30 -32
  524. package/src/components/Skeleton/Skeleton.tsx +90 -2
  525. package/src/components/Slider/Slider.tsx +1 -1
  526. package/src/components/SubnavigationButton/SubnavigationButton.tsx +1 -1
  527. package/src/components/TabsItem/TabsItem.tsx +1 -1
  528. package/src/components/Textarea/Textarea.tsx +1 -1
  529. package/src/components/ToolButton/ToolButton.module.css +12 -6
  530. package/src/components/ToolButton/ToolButton.tsx +15 -2
  531. package/src/components/Typography/Caption/Caption.module.css +240 -0
  532. package/src/components/Typography/Caption/Caption.tsx +14 -1
  533. package/src/components/Typography/DisplayTitle/DisplayTitle.module.css +160 -0
  534. package/src/components/Typography/DisplayTitle/DisplayTitle.tsx +13 -1
  535. package/src/components/Typography/Footnote/Footnote.module.css +80 -0
  536. package/src/components/Typography/Footnote/Footnote.tsx +24 -9
  537. package/src/components/Typography/Headline/Headline.module.css +48 -8
  538. package/src/components/Typography/Headline/Headline.tsx +1 -3
  539. package/src/components/Typography/Paragraph/Paragraph.module.css +40 -0
  540. package/src/components/Typography/Paragraph/Paragraph.tsx +13 -1
  541. package/src/components/Typography/Subhead/Subhead.module.css +32 -4
  542. package/src/components/Typography/Subhead/Subhead.tsx +1 -1
  543. package/src/components/Typography/Text/Text.module.css +29 -4
  544. package/src/components/Typography/Text/Text.tsx +1 -1
  545. package/src/components/Typography/Title/Title.module.css +120 -0
  546. package/src/components/Typography/Title/Title.tsx +13 -1
  547. package/src/components/Typography/Typography.module.css +20 -3
  548. package/src/components/Typography/Typography.tsx +10 -0
  549. package/src/components/WriteBar/WriteBar.tsx +1 -1
  550. package/src/hooks/useAdaptivityConditionalRender/constants.ts +4 -4
  551. package/src/hooks/useWaitTransitionFinish.ts +2 -2
@@ -30,7 +30,7 @@ const getIsDaySelected = (day, value)=>{
30
30
  });
31
31
  };
32
32
  const CalendarRange = (_param)=>{
33
- var { value, onChange, disablePast, disableFuture, shouldDisableDate, onClose, weekStartsOn = 1, disablePickers, prevMonthLabel = 'Предыдущий месяц', nextMonthLabel = 'Следующий месяц', changeMonthLabel = 'Изменить месяц', changeYearLabel = 'Изменить год', changeDayLabel = 'Изменить день', prevMonthIcon, nextMonthIcon, listenDayChangesForUpdate } = _param, props = _object_without_properties._(_param, [
33
+ var { value, onChange, disablePast, disableFuture, shouldDisableDate, onClose, weekStartsOn = 1, disablePickers, prevMonthLabel = 'Предыдущий месяц', nextMonthLabel = 'Следующий месяц', changeMonthLabel = 'Изменить месяц', changeYearLabel = 'Изменить год', changeDayLabel = 'Изменить день', prevMonthIcon, nextMonthIcon, listenDayChangesForUpdate, renderDayContent } = _param, props = _object_without_properties._(_param, [
34
34
  "value",
35
35
  "onChange",
36
36
  "disablePast",
@@ -46,7 +46,8 @@ const CalendarRange = (_param)=>{
46
46
  "changeDayLabel",
47
47
  "prevMonthIcon",
48
48
  "nextMonthIcon",
49
- "listenDayChangesForUpdate"
49
+ "listenDayChangesForUpdate",
50
+ "renderDayContent"
50
51
  ]);
51
52
  const { viewDate, setViewDate, setPrevMonth, setNextMonth, focusedDay, setFocusedDay, isDayFocused, isDayDisabled, resetSelectedDay, isMonthDisabled, isYearDisabled } = (0, _useCalendar.useCalendar)({
52
53
  value,
@@ -183,6 +184,7 @@ const CalendarRange = (_param)=>{
183
184
  isHintedDaySelectionStart: isHintedDaySelectionStart,
184
185
  isDayDisabled: isDayDisabled,
185
186
  listenDayChangesForUpdate: listenDayChangesForUpdate,
187
+ renderDayContent: renderDayContent,
186
188
  "aria-label": changeDayLabel
187
189
  })
188
190
  ]
@@ -224,6 +226,7 @@ const CalendarRange = (_param)=>{
224
226
  isHintedDaySelectionStart: isHintedDaySelectionStart,
225
227
  isDayDisabled: isDayDisabled,
226
228
  listenDayChangesForUpdate: listenDayChangesForUpdate,
229
+ renderDayContent: renderDayContent,
227
230
  tabIndex: 0,
228
231
  onBlur: resetSelectedDay
229
232
  })
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CalendarRange/CalendarRange.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n addMonths,\n endOfDay,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isWithinInterval,\n startOfDay,\n subMonths,\n} from 'date-fns';\nimport { useCalendar } from '../../hooks/useCalendar';\nimport { isFirstDay, isLastDay, navigateDate, setTimeEqual } from '../../lib/calendar';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { CalendarDays, type CalendarDaysProps } from '../CalendarDays/CalendarDays';\nimport { CalendarHeader, type CalendarHeaderProps } from '../CalendarHeader/CalendarHeader';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './CalendarRange.module.css';\n\nexport type DateRangeType = [Date | null, Date | null];\n\nexport interface CalendarRangeProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n Pick<\n CalendarHeaderProps,\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n Pick<CalendarDaysProps, 'listenDayChangesForUpdate'> {\n value?: DateRangeType;\n disablePast?: boolean;\n disableFuture?: boolean;\n disablePickers?: boolean;\n changeDayLabel?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n onChange?: (value: DateRangeType | undefined) => void;\n shouldDisableDate?: (value: Date) => boolean;\n onClose?: () => void;\n}\n\nconst getIsDaySelected = (day: Date, value?: DateRangeType) => {\n if (!value?.[0] || !value[1]) {\n return false;\n }\n\n return isWithinInterval(day, { start: startOfDay(value[0]), end: endOfDay(value[1]) });\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CalendarRange\n */\nexport const CalendarRange = ({\n value,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onClose,\n weekStartsOn = 1,\n disablePickers,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeDayLabel = 'Изменить день',\n prevMonthIcon,\n nextMonthIcon,\n listenDayChangesForUpdate,\n ...props\n}: CalendarRangeProps): React.ReactNode => {\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n resetSelectedDay,\n isMonthDisabled,\n isYearDisabled,\n } = useCalendar({ value, disableFuture, disablePast, shouldDisableDate });\n const [hintedDate, setHintedDate] = React.useState<DateRangeType>();\n const secondViewDate = addMonths(viewDate, 1);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n event.preventDefault();\n }\n\n const newFocusedDay = navigateDate(focusedDay ?? value?.[1], event.key);\n\n if (\n newFocusedDay &&\n !isSameMonth(newFocusedDay, viewDate) &&\n !isSameMonth(newFocusedDay, addMonths(viewDate, 1))\n ) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n },\n [focusedDay, setFocusedDay, setViewDate, value, viewDate],\n );\n\n const getNewValue = React.useCallback(\n (date: Date): DateRangeType => {\n const isValueEmpty = !value || (value[0] === null && value[1] === null);\n if (isValueEmpty) {\n return [date, null];\n }\n\n const [start, end] = value;\n if ((start && isSameDay(date, start)) || (end && isSameDay(date, end))) {\n return [setTimeEqual(date, start), setTimeEqual(date, end)];\n } else if (start && isBefore(date, start)) {\n return [setTimeEqual(date, start), end];\n } else if (start && isAfter(date, start)) {\n return [start, setTimeEqual(date, end)];\n }\n return value;\n },\n [value],\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n onChange?.(getNewValue(date));\n setHintedDate(undefined);\n },\n [onChange, getNewValue],\n );\n\n const isDaySelected = React.useCallback((day: Date) => getIsDaySelected(day, value), [value]);\n\n const isDayActive = React.useCallback(\n (day: Date) =>\n Boolean((value?.[0] && isSameDay(day, value[0])) || (value?.[1] && isSameDay(day, value[1]))),\n [value],\n );\n\n const isDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (value?.[1] && isSameDay(day, value[1]))),\n [value],\n );\n\n const isHintedDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (hintedDate?.[1] && isSameDay(day, hintedDate[1]))),\n [hintedDate],\n );\n\n const isDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (value?.[0] && isSameDay(day, value[0]))),\n [value],\n );\n\n const isHintedDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (hintedDate?.[0] && isSameDay(day, hintedDate[0]))),\n [hintedDate],\n );\n\n const onDayEnter = React.useCallback(\n (date: Date) => setHintedDate(getNewValue(date)),\n [setHintedDate, getNewValue],\n );\n\n const onDayLeave = React.useCallback(() => setHintedDate(undefined), [setHintedDate]);\n\n const isDayHinted = React.useCallback(\n (day: Date) => getIsDaySelected(day, hintedDate),\n [hintedDate],\n );\n\n const onRightPartViewDateChange = React.useCallback(\n (newDate: Date) => setViewDate(subMonths(newDate, 1)),\n [setViewDate],\n );\n\n return (\n <RootComponent {...props} baseClassName={styles['CalendarRange']}>\n <div className={styles['CalendarRange__inner']}>\n <CalendarHeader\n viewDate={viewDate}\n onChange={setViewDate}\n nextMonthHidden\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers}\n className={styles['CalendarRange__header']}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n prevMonthIcon={prevMonthIcon}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n />\n <CalendarDays\n viewDate={viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n aria-label={changeDayLabel}\n />\n </div>\n <div className={styles['CalendarRange__inner']}>\n <CalendarHeader\n viewDate={secondViewDate}\n onChange={onRightPartViewDateChange}\n prevMonthHidden\n onNextMonth={setNextMonth}\n disablePickers={disablePickers}\n className={styles['CalendarRange__header']}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n nextMonthIcon={nextMonthIcon}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n />\n <CalendarDays\n viewDate={secondViewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n aria-label={changeDayLabel}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n tabIndex={0}\n onBlur={resetSelectedDay}\n />\n </div>\n </RootComponent>\n );\n};\n"],"names":["CalendarRange","getIsDaySelected","day","value","isWithinInterval","start","startOfDay","end","endOfDay","onChange","disablePast","disableFuture","shouldDisableDate","onClose","weekStartsOn","disablePickers","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","changeDayLabel","prevMonthIcon","nextMonthIcon","listenDayChangesForUpdate","props","viewDate","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","resetSelectedDay","isMonthDisabled","isYearDisabled","useCalendar","hintedDate","setHintedDate","React","useState","secondViewDate","addMonths","handleKeyDown","useCallback","event","includes","key","preventDefault","newFocusedDay","navigateDate","isSameMonth","getNewValue","date","isValueEmpty","isSameDay","setTimeEqual","isBefore","isAfter","onDayChange","undefined","isDaySelected","isDayActive","Boolean","isDaySelectionEnd","dayOfWeek","isLastDay","isHintedDaySelectionEnd","isDaySelectionStart","isFirstDay","isHintedDaySelectionStart","onDayEnter","onDayLeave","isDayHinted","onRightPartViewDateChange","newDate","subMonths","RootComponent","baseClassName","div","className","CalendarHeader","nextMonthHidden","onPrevMonth","CalendarDays","onKeyDown","aria-label","prevMonthHidden","onNextMonth","tabIndex","onBlur"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/CalendarRange/CalendarRange.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n addMonths,\n endOfDay,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isWithinInterval,\n startOfDay,\n subMonths,\n} from 'date-fns';\nimport { useCalendar } from '../../hooks/useCalendar';\nimport { isFirstDay, isLastDay, navigateDate, setTimeEqual } from '../../lib/calendar';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { CalendarDays, type CalendarDaysProps } from '../CalendarDays/CalendarDays';\nimport { CalendarHeader, type CalendarHeaderProps } from '../CalendarHeader/CalendarHeader';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './CalendarRange.module.css';\n\nexport type DateRangeType = [Date | null, Date | null];\n\nexport interface CalendarRangeProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n Pick<\n CalendarHeaderProps,\n | 'prevMonthLabel'\n | 'nextMonthLabel'\n | 'changeMonthLabel'\n | 'changeYearLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n Pick<CalendarDaysProps, 'listenDayChangesForUpdate' | 'renderDayContent'> {\n value?: DateRangeType;\n disablePast?: boolean;\n disableFuture?: boolean;\n disablePickers?: boolean;\n changeDayLabel?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n onChange?: (value: DateRangeType | undefined) => void;\n shouldDisableDate?: (value: Date) => boolean;\n onClose?: () => void;\n}\n\nconst getIsDaySelected = (day: Date, value?: DateRangeType) => {\n if (!value?.[0] || !value[1]) {\n return false;\n }\n\n return isWithinInterval(day, { start: startOfDay(value[0]), end: endOfDay(value[1]) });\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CalendarRange\n */\nexport const CalendarRange = ({\n value,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onClose,\n weekStartsOn = 1,\n disablePickers,\n prevMonthLabel = 'Предыдущий месяц',\n nextMonthLabel = 'Следующий месяц',\n changeMonthLabel = 'Изменить месяц',\n changeYearLabel = 'Изменить год',\n changeDayLabel = 'Изменить день',\n prevMonthIcon,\n nextMonthIcon,\n listenDayChangesForUpdate,\n renderDayContent,\n ...props\n}: CalendarRangeProps): React.ReactNode => {\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n resetSelectedDay,\n isMonthDisabled,\n isYearDisabled,\n } = useCalendar({ value, disableFuture, disablePast, shouldDisableDate });\n const [hintedDate, setHintedDate] = React.useState<DateRangeType>();\n const secondViewDate = addMonths(viewDate, 1);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n event.preventDefault();\n }\n\n const newFocusedDay = navigateDate(focusedDay ?? value?.[1], event.key);\n\n if (\n newFocusedDay &&\n !isSameMonth(newFocusedDay, viewDate) &&\n !isSameMonth(newFocusedDay, addMonths(viewDate, 1))\n ) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n },\n [focusedDay, setFocusedDay, setViewDate, value, viewDate],\n );\n\n const getNewValue = React.useCallback(\n (date: Date): DateRangeType => {\n const isValueEmpty = !value || (value[0] === null && value[1] === null);\n if (isValueEmpty) {\n return [date, null];\n }\n\n const [start, end] = value;\n if ((start && isSameDay(date, start)) || (end && isSameDay(date, end))) {\n return [setTimeEqual(date, start), setTimeEqual(date, end)];\n } else if (start && isBefore(date, start)) {\n return [setTimeEqual(date, start), end];\n } else if (start && isAfter(date, start)) {\n return [start, setTimeEqual(date, end)];\n }\n return value;\n },\n [value],\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n onChange?.(getNewValue(date));\n setHintedDate(undefined);\n },\n [onChange, getNewValue],\n );\n\n const isDaySelected = React.useCallback((day: Date) => getIsDaySelected(day, value), [value]);\n\n const isDayActive = React.useCallback(\n (day: Date) =>\n Boolean((value?.[0] && isSameDay(day, value[0])) || (value?.[1] && isSameDay(day, value[1]))),\n [value],\n );\n\n const isDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (value?.[1] && isSameDay(day, value[1]))),\n [value],\n );\n\n const isHintedDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (hintedDate?.[1] && isSameDay(day, hintedDate[1]))),\n [hintedDate],\n );\n\n const isDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (value?.[0] && isSameDay(day, value[0]))),\n [value],\n );\n\n const isHintedDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (hintedDate?.[0] && isSameDay(day, hintedDate[0]))),\n [hintedDate],\n );\n\n const onDayEnter = React.useCallback(\n (date: Date) => setHintedDate(getNewValue(date)),\n [setHintedDate, getNewValue],\n );\n\n const onDayLeave = React.useCallback(() => setHintedDate(undefined), [setHintedDate]);\n\n const isDayHinted = React.useCallback(\n (day: Date) => getIsDaySelected(day, hintedDate),\n [hintedDate],\n );\n\n const onRightPartViewDateChange = React.useCallback(\n (newDate: Date) => setViewDate(subMonths(newDate, 1)),\n [setViewDate],\n );\n\n return (\n <RootComponent {...props} baseClassName={styles['CalendarRange']}>\n <div className={styles['CalendarRange__inner']}>\n <CalendarHeader\n viewDate={viewDate}\n onChange={setViewDate}\n nextMonthHidden\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers}\n className={styles['CalendarRange__header']}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n prevMonthIcon={prevMonthIcon}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n />\n <CalendarDays\n viewDate={viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n renderDayContent={renderDayContent}\n aria-label={changeDayLabel}\n />\n </div>\n <div className={styles['CalendarRange__inner']}>\n <CalendarHeader\n viewDate={secondViewDate}\n onChange={onRightPartViewDateChange}\n prevMonthHidden\n onNextMonth={setNextMonth}\n disablePickers={disablePickers}\n className={styles['CalendarRange__header']}\n prevMonthLabel={prevMonthLabel}\n nextMonthLabel={nextMonthLabel}\n changeMonthLabel={changeMonthLabel}\n changeYearLabel={changeYearLabel}\n nextMonthIcon={nextMonthIcon}\n isMonthDisabled={isMonthDisabled}\n isYearDisabled={isYearDisabled}\n />\n <CalendarDays\n viewDate={secondViewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n aria-label={changeDayLabel}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n renderDayContent={renderDayContent}\n tabIndex={0}\n onBlur={resetSelectedDay}\n />\n </div>\n </RootComponent>\n );\n};\n"],"names":["CalendarRange","getIsDaySelected","day","value","isWithinInterval","start","startOfDay","end","endOfDay","onChange","disablePast","disableFuture","shouldDisableDate","onClose","weekStartsOn","disablePickers","prevMonthLabel","nextMonthLabel","changeMonthLabel","changeYearLabel","changeDayLabel","prevMonthIcon","nextMonthIcon","listenDayChangesForUpdate","renderDayContent","props","viewDate","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","resetSelectedDay","isMonthDisabled","isYearDisabled","useCalendar","hintedDate","setHintedDate","React","useState","secondViewDate","addMonths","handleKeyDown","useCallback","event","includes","key","preventDefault","newFocusedDay","navigateDate","isSameMonth","getNewValue","date","isValueEmpty","isSameDay","setTimeEqual","isBefore","isAfter","onDayChange","undefined","isDaySelected","isDayActive","Boolean","isDaySelectionEnd","dayOfWeek","isLastDay","isHintedDaySelectionEnd","isDaySelectionStart","isFirstDay","isHintedDaySelectionStart","onDayEnter","onDayLeave","isDayHinted","onRightPartViewDateChange","newDate","subMonths","RootComponent","baseClassName","div","className","CalendarHeader","nextMonthHidden","onPrevMonth","CalendarDays","onKeyDown","aria-label","prevMonthHidden","onNextMonth","tabIndex","onBlur"],"mappings":";;;;+BAwDaA;;;eAAAA;;;;;;;;iEAxDU;yBAWhB;6BACqB;0BACsC;8BAEb;gCACI;+BAC3B;AA4B9B,MAAMC,mBAAmB,CAACC,KAAWC;IACnC,IAAI,EAACA,kBAAAA,4BAAAA,KAAO,CAAC,EAAE,KAAI,CAACA,KAAK,CAAC,EAAE,EAAE;QAC5B,OAAO;IACT;IAEA,OAAOC,IAAAA,yBAAgB,EAACF,KAAK;QAAEG,OAAOC,IAAAA,mBAAU,EAACH,KAAK,CAAC,EAAE;QAAGI,KAAKC,IAAAA,iBAAQ,EAACL,KAAK,CAAC,EAAE;IAAE;AACtF;AAKO,MAAMH,gBAAgB;QAAC,EAC5BG,KAAK,EACLM,QAAQ,EACRC,WAAW,EACXC,aAAa,EACbC,iBAAiB,EACjBC,OAAO,EACPC,eAAe,CAAC,EAChBC,cAAc,EACdC,iBAAiB,kBAAkB,EACnCC,iBAAiB,iBAAiB,EAClCC,mBAAmB,gBAAgB,EACnCC,kBAAkB,cAAc,EAChCC,iBAAiB,eAAe,EAChCC,aAAa,EACbC,aAAa,EACbC,yBAAyB,EACzBC,gBAAgB,EAEG,WADhBC;QAjBHtB;QACAM;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAM,EACJE,QAAQ,EACRC,WAAW,EACXC,YAAY,EACZC,YAAY,EACZC,UAAU,EACVC,aAAa,EACbC,YAAY,EACZC,aAAa,EACbC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,EACf,GAAGC,IAAAA,wBAAW,EAAC;QAAElC;QAAOQ;QAAeD;QAAaE;IAAkB;IACvE,MAAM,CAAC0B,YAAYC,cAAc,GAAGC,OAAMC,QAAQ;IAClD,MAAMC,iBAAiBC,IAAAA,kBAAS,EAACjB,UAAU;IAE3C,MAAMkB,gBAAgBJ,OAAMK,WAAW,CACrC,CAACC;QACC,IAAI;YAAC;YAAW;YAAa;YAAa;SAAa,CAACC,QAAQ,CAACD,MAAME,GAAG,GAAG;YAC3EF,MAAMG,cAAc;QACtB;QAEA,MAAMC,gBAAgBC,IAAAA,sBAAY,EAACrB,uBAAAA,wBAAAA,aAAc3B,kBAAAA,4BAAAA,KAAO,CAAC,EAAE,EAAE2C,MAAME,GAAG;QAEtE,IACEE,iBACA,CAACE,IAAAA,oBAAW,EAACF,eAAexB,aAC5B,CAAC0B,IAAAA,oBAAW,EAACF,eAAeP,IAAAA,kBAAS,EAACjB,UAAU,KAChD;YACAC,YAAYuB;QACd;QACAnB,cAAcmB;IAChB,GACA;QAACpB;QAAYC;QAAeJ;QAAaxB;QAAOuB;KAAS;IAG3D,MAAM2B,cAAcb,OAAMK,WAAW,CACnC,CAACS;QACC,MAAMC,eAAe,CAACpD,SAAUA,KAAK,CAAC,EAAE,KAAK,QAAQA,KAAK,CAAC,EAAE,KAAK;QAClE,IAAIoD,cAAc;YAChB,OAAO;gBAACD;gBAAM;aAAK;QACrB;QAEA,MAAM,CAACjD,OAAOE,IAAI,GAAGJ;QACrB,IAAI,AAACE,SAASmD,IAAAA,kBAAS,EAACF,MAAMjD,UAAYE,OAAOiD,IAAAA,kBAAS,EAACF,MAAM/C,MAAO;YACtE,OAAO;gBAACkD,IAAAA,sBAAY,EAACH,MAAMjD;gBAAQoD,IAAAA,sBAAY,EAACH,MAAM/C;aAAK;QAC7D,OAAO,IAAIF,SAASqD,IAAAA,iBAAQ,EAACJ,MAAMjD,QAAQ;YACzC,OAAO;gBAACoD,IAAAA,sBAAY,EAACH,MAAMjD;gBAAQE;aAAI;QACzC,OAAO,IAAIF,SAASsD,IAAAA,gBAAO,EAACL,MAAMjD,QAAQ;YACxC,OAAO;gBAACA;gBAAOoD,IAAAA,sBAAY,EAACH,MAAM/C;aAAK;QACzC;QACA,OAAOJ;IACT,GACA;QAACA;KAAM;IAGT,MAAMyD,cAAcpB,OAAMK,WAAW,CACnC,CAACS;QACC7C,qBAAAA,+BAAAA,SAAW4C,YAAYC;QACvBf,cAAcsB;IAChB,GACA;QAACpD;QAAU4C;KAAY;IAGzB,MAAMS,gBAAgBtB,OAAMK,WAAW,CAAC,CAAC3C,MAAcD,iBAAiBC,KAAKC,QAAQ;QAACA;KAAM;IAE5F,MAAM4D,cAAcvB,OAAMK,WAAW,CACnC,CAAC3C,MACC8D,QAAQ,CAAC7D,kBAAAA,4BAAAA,KAAO,CAAC,EAAE,KAAIqD,IAAAA,kBAAS,EAACtD,KAAKC,KAAK,CAAC,EAAE,KAAOA,CAAAA,kBAAAA,4BAAAA,KAAO,CAAC,EAAE,KAAIqD,IAAAA,kBAAS,EAACtD,KAAKC,KAAK,CAAC,EAAE,IAC5F;QAACA;KAAM;IAGT,MAAM8D,oBAAoBzB,OAAMK,WAAW,CACzC,CAAC3C,KAAWgE,YACVF,QAAQG,IAAAA,mBAAS,EAACjE,KAAKgE,cAAe/D,CAAAA,kBAAAA,4BAAAA,KAAO,CAAC,EAAE,KAAIqD,IAAAA,kBAAS,EAACtD,KAAKC,KAAK,CAAC,EAAE,IAC7E;QAACA;KAAM;IAGT,MAAMiE,0BAA0B5B,OAAMK,WAAW,CAC/C,CAAC3C,KAAWgE,YACVF,QAAQG,IAAAA,mBAAS,EAACjE,KAAKgE,cAAe5B,CAAAA,uBAAAA,iCAAAA,UAAY,CAAC,EAAE,KAAIkB,IAAAA,kBAAS,EAACtD,KAAKoC,UAAU,CAAC,EAAE,IACvF;QAACA;KAAW;IAGd,MAAM+B,sBAAsB7B,OAAMK,WAAW,CAC3C,CAAC3C,KAAWgE,YACVF,QAAQM,IAAAA,oBAAU,EAACpE,KAAKgE,cAAe/D,CAAAA,kBAAAA,4BAAAA,KAAO,CAAC,EAAE,KAAIqD,IAAAA,kBAAS,EAACtD,KAAKC,KAAK,CAAC,EAAE,IAC9E;QAACA;KAAM;IAGT,MAAMoE,4BAA4B/B,OAAMK,WAAW,CACjD,CAAC3C,KAAWgE,YACVF,QAAQM,IAAAA,oBAAU,EAACpE,KAAKgE,cAAe5B,CAAAA,uBAAAA,iCAAAA,UAAY,CAAC,EAAE,KAAIkB,IAAAA,kBAAS,EAACtD,KAAKoC,UAAU,CAAC,EAAE,IACxF;QAACA;KAAW;IAGd,MAAMkC,aAAahC,OAAMK,WAAW,CAClC,CAACS,OAAef,cAAcc,YAAYC,QAC1C;QAACf;QAAec;KAAY;IAG9B,MAAMoB,aAAajC,OAAMK,WAAW,CAAC,IAAMN,cAAcsB,YAAY;QAACtB;KAAc;IAEpF,MAAMmC,cAAclC,OAAMK,WAAW,CACnC,CAAC3C,MAAcD,iBAAiBC,KAAKoC,aACrC;QAACA;KAAW;IAGd,MAAMqC,4BAA4BnC,OAAMK,WAAW,CACjD,CAAC+B,UAAkBjD,YAAYkD,IAAAA,kBAAS,EAACD,SAAS,KAClD;QAACjD;KAAY;IAGf,qBACE,sBAACmD,4BAAa,8CAAKrD;QAAOsD,aAAa;;0BACrC,sBAACC;gBAAIC,SAAS;;kCACZ,qBAACC,8BAAc;wBACbxD,UAAUA;wBACVjB,UAAUkB;wBACVwD,eAAe;wBACfC,aAAaxD;wBACbb,gBAAgBA;wBAChBkE,SAAS;wBACTjE,gBAAgBA;wBAChBC,gBAAgBA;wBAChBC,kBAAkBA;wBAClBC,iBAAiBA;wBACjBE,eAAeA;wBACfc,iBAAiBA;wBACjBC,gBAAgBA;;kCAElB,qBAACiD,0BAAY;wBACX3D,UAAUA;wBACVvB,OAAOA;wBACPW,cAAcA;wBACdwE,WAAW1C;wBACXZ,cAAcA;wBACd4B,aAAaA;wBACbE,eAAeA;wBACfC,aAAaA;wBACbE,mBAAmBA;wBACnBI,qBAAqBA;wBACrBK,aAAaA;wBACbF,YAAYA;wBACZC,YAAYA;wBACZL,yBAAyBA;wBACzBG,2BAA2BA;wBAC3BtC,eAAeA;wBACfV,2BAA2BA;wBAC3BC,kBAAkBA;wBAClB+D,cAAYnE;;;;0BAGhB,sBAAC4D;gBAAIC,SAAS;;kCACZ,qBAACC,8BAAc;wBACbxD,UAAUgB;wBACVjC,UAAUkE;wBACVa,eAAe;wBACfC,aAAa5D;wBACbd,gBAAgBA;wBAChBkE,SAAS;wBACTjE,gBAAgBA;wBAChBC,gBAAgBA;wBAChBC,kBAAkBA;wBAClBC,iBAAiBA;wBACjBG,eAAeA;wBACfa,iBAAiBA;wBACjBC,gBAAgBA;;kCAElB,qBAACiD,0BAAY;wBACX3D,UAAUgB;wBACVvC,OAAOA;wBACPW,cAAcA;wBACdyE,cAAYnE;wBACZkE,WAAW1C;wBACXZ,cAAcA;wBACd4B,aAAaA;wBACbE,eAAeA;wBACfC,aAAaA;wBACbE,mBAAmBA;wBACnBI,qBAAqBA;wBACrBK,aAAaA;wBACbF,YAAYA;wBACZC,YAAYA;wBACZL,yBAAyBA;wBACzBG,2BAA2BA;wBAC3BtC,eAAeA;wBACfV,2BAA2BA;wBAC3BC,kBAAkBA;wBAClBkE,UAAU;wBACVC,QAAQzD;;;;;;AAKlB"}
@@ -17,7 +17,7 @@ const _useAdaptivity = require("../../hooks/useAdaptivity");
17
17
  const _RootComponent = require("../RootComponent/RootComponent");
18
18
  const sizeXClassNames = {
19
19
  none: "vkuiCardGrid--sizeX-none",
20
- ['compact']: "vkuiCardGrid--sizeX-compact"
20
+ compact: "vkuiCardGrid--sizeX-compact"
21
21
  };
22
22
  const stylesSize = {
23
23
  s: 'vkuiInternalCardGrid--size-s',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CardGrid/CardGrid.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport type { HasComponent, HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './CardGrid.module.css';\n\nconst sizeXClassNames = {\n none: styles['CardGrid--sizeX-none'],\n ['compact']: styles['CardGrid--sizeX-compact'],\n};\n\nconst stylesSize = {\n s: 'vkuiInternalCardGrid--size-s',\n m: 'vkuiInternalCardGrid--size-m',\n l: 'vkuiInternalCardGrid--size-l',\n};\n\nexport interface CardGridProps extends HTMLAttributesWithRootRef<HTMLDivElement>, HasComponent {\n size?: 's' | 'm' | 'l';\n /**\n * Если true, то вокруг компонента присутствуют стандартные отсупы сверху/снизу и слева/справа\n */\n spaced?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CardGrid\n */\nexport const CardGrid = ({\n size = 's',\n spaced = false,\n // TODO [>=7]: поменять тег на ul https://github.com/VKCOM/VKUI/issues/7336\n Component = 'div',\n ...restProps\n}: CardGridProps): React.ReactNode => {\n const { sizeX = 'none' } = useAdaptivity();\n\n return (\n <RootComponent\n {...restProps}\n Component={Component}\n baseClassName={classNames(\n styles['CardGrid'],\n 'vkuiInternalCardGrid',\n spaced && styles['CardGrid--spaced'],\n stylesSize[size],\n sizeX !== 'regular' && sizeXClassNames[sizeX],\n )}\n />\n );\n};\n"],"names":["CardGrid","sizeXClassNames","none","stylesSize","s","m","l","size","spaced","Component","restProps","sizeX","useAdaptivity","RootComponent","baseClassName","classNames"],"mappings":";;;;+BA4BaA;;;eAAAA;;;;;;;sBA5Bc;+BACG;+BAEA;AAG9B,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;AACb;AAEA,MAAMC,aAAa;IACjBC,GAAG;IACHC,GAAG;IACHC,GAAG;AACL;AAaO,MAAMN,WAAW;QAAC,EACvBO,OAAO,GAAG,EACVC,SAAS,KAAK,EACd,2EAA2E;IAC3EC,YAAY,KAAK,EAEH,WADXC;QAJHH;QACAC;QAEAC;;IAGA,MAAM,EAAEE,QAAQ,MAAM,EAAE,GAAGC,IAAAA,4BAAa;IAExC,qBACE,qBAACC,4BAAa,8CACRH;QACJD,WAAWA;QACXK,eAAeC,IAAAA,gBAAU,kBAEvB,wBACAP,kCACAL,UAAU,CAACI,KAAK,EAChBI,UAAU,aAAaV,eAAe,CAACU,MAAM;;AAIrD"}
1
+ {"version":3,"sources":["../../../../src/components/CardGrid/CardGrid.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport type { HasComponent, HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './CardGrid.module.css';\n\nconst sizeXClassNames = {\n none: styles['CardGrid--sizeX-none'],\n compact: styles['CardGrid--sizeX-compact'],\n};\n\nconst stylesSize = {\n s: 'vkuiInternalCardGrid--size-s',\n m: 'vkuiInternalCardGrid--size-m',\n l: 'vkuiInternalCardGrid--size-l',\n};\n\nexport interface CardGridProps extends HTMLAttributesWithRootRef<HTMLDivElement>, HasComponent {\n size?: 's' | 'm' | 'l';\n /**\n * Если true, то вокруг компонента присутствуют стандартные отсупы сверху/снизу и слева/справа\n */\n spaced?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CardGrid\n */\nexport const CardGrid = ({\n size = 's',\n spaced = false,\n // TODO [>=7]: поменять тег на ul https://github.com/VKCOM/VKUI/issues/7336\n Component = 'div',\n ...restProps\n}: CardGridProps): React.ReactNode => {\n const { sizeX = 'none' } = useAdaptivity();\n\n return (\n <RootComponent\n {...restProps}\n Component={Component}\n baseClassName={classNames(\n styles['CardGrid'],\n 'vkuiInternalCardGrid',\n spaced && styles['CardGrid--spaced'],\n stylesSize[size],\n sizeX !== 'regular' && sizeXClassNames[sizeX],\n )}\n />\n );\n};\n"],"names":["CardGrid","sizeXClassNames","none","compact","stylesSize","s","m","l","size","spaced","Component","restProps","sizeX","useAdaptivity","RootComponent","baseClassName","classNames"],"mappings":";;;;+BA4BaA;;;eAAAA;;;;;;;sBA5Bc;+BACG;+BAEA;AAG9B,MAAMC,kBAAkB;IACtBC,IAAI;IACJC,OAAO;AACT;AAEA,MAAMC,aAAa;IACjBC,GAAG;IACHC,GAAG;IACHC,GAAG;AACL;AAaO,MAAMP,WAAW;QAAC,EACvBQ,OAAO,GAAG,EACVC,SAAS,KAAK,EACd,2EAA2E;IAC3EC,YAAY,KAAK,EAEH,WADXC;QAJHH;QACAC;QAEAC;;IAGA,MAAM,EAAEE,QAAQ,MAAM,EAAE,GAAGC,IAAAA,4BAAa;IAExC,qBACE,qBAACC,4BAAa,8CACRH;QACJD,WAAWA;QACXK,eAAeC,IAAAA,gBAAU,kBAEvB,wBACAP,kCACAL,UAAU,CAACI,KAAK,EAChBI,UAAU,aAAaX,eAAe,CAACW,MAAM;;AAIrD"}
@@ -1,3 +1,4 @@
1
+ import * as React from 'react';
1
2
  import { type FocusVisibleModeProps } from '../../hooks/useFocusVisibleClassName';
2
3
  import { type RootComponentProps } from '../RootComponent/RootComponent';
3
4
  import { type StateProps } from './useState';
@@ -1 +1 @@
1
- {"version":3,"file":"Clickable.d.ts","sourceRoot":"","sources":["../../../../src/components/Clickable/Clickable.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,WAAW,CAC7C,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAC3B,qBAAqB,EACrB,UAAU;CAAG;AA0FjB;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAWnE;AA2CD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,wEAIxB,cAAc,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,SAqB5B,CAAC"}
1
+ {"version":3,"file":"Clickable.d.ts","sourceRoot":"","sources":["../../../../src/components/Clickable/Clickable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACxF,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,WAAW,CAC7C,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAC3B,qBAAqB,EACrB,UAAU;CAAG;AA2GjB;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAWnE;AA2CD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,wEAIxB,cAAc,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,SAqB5B,CAAC"}
@@ -16,10 +16,12 @@ _export(exports, {
16
16
  return checkClickable;
17
17
  }
18
18
  });
19
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
19
20
  const _object_spread = require("@swc/helpers/_/_object_spread");
20
21
  const _object_spread_props = require("@swc/helpers/_/_object_spread_props");
21
22
  const _object_without_properties = require("@swc/helpers/_/_object_without_properties");
22
23
  const _jsxruntime = require("react/jsx-runtime");
24
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
23
25
  const _vkjs = require("@vkontakte/vkjs");
24
26
  const _useFocusVisible = require("../../hooks/useFocusVisible");
25
27
  const _useFocusVisibleClassName = require("../../hooks/useFocusVisibleClassName");
@@ -30,7 +32,7 @@ const _useState = require("./useState");
30
32
  /**
31
33
  * Некликабельный компонент. Отключаем возможность нажимать на компонент.
32
34
  */ const NonClickable = (_param)=>{
33
- var { href, onClick, onClickCapture, activeClassName, hoverClassName, hasActive, hasHover, hovered, activated, activeEffectDelay } = _param, restProps = _object_without_properties._(_param, [
35
+ var { href, onClick, onClickCapture, activeClassName, hoverClassName, hasActive, hasHover, hovered, unlockParentHover, activated, activeEffectDelay } = _param, restProps = _object_without_properties._(_param, [
34
36
  "href",
35
37
  "onClick",
36
38
  "onClickCapture",
@@ -39,6 +41,7 @@ const _useState = require("./useState");
39
41
  "hasActive",
40
42
  "hasHover",
41
43
  "hovered",
44
+ "unlockParentHover",
42
45
  "activated",
43
46
  "activeEffectDelay"
44
47
  ]);
@@ -47,7 +50,7 @@ const _useState = require("./useState");
47
50
  /**
48
51
  * Кликабельный компонент. Добавляем кучу обвесов
49
52
  */ const RealClickable = (_param)=>{
50
- var { baseClassName, children, focusVisibleMode = 'inside', activeClassName, hoverClassName, activeEffectDelay = _useState.DEFAULT_ACTIVE_EFFECT_DELAY, hasHover = true, hasActive = true, hovered, activated, onPointerEnter, onPointerLeave, onPointerDown, onPointerCancel, onPointerUp, onBlur, onFocus, onKeyDown } = _param, restProps = _object_without_properties._(_param, [
53
+ var { baseClassName, children, focusVisibleMode = 'inside', activeClassName, hoverClassName, activeEffectDelay = _useState.DEFAULT_ACTIVE_EFFECT_DELAY, hasHover = true, hasActive = true, hovered, activated, hasHoverWithChildren, unlockParentHover, onPointerEnter, onPointerLeave, onPointerDown, onPointerCancel, onPointerUp, onBlur, onFocus, onKeyDown } = _param, restProps = _object_without_properties._(_param, [
51
54
  "baseClassName",
52
55
  "children",
53
56
  "focusVisibleMode",
@@ -58,6 +61,8 @@ const _useState = require("./useState");
58
61
  "hasActive",
59
62
  "hovered",
60
63
  "activated",
64
+ "hasHoverWithChildren",
65
+ "unlockParentHover",
61
66
  "onPointerEnter",
62
67
  "onPointerLeave",
63
68
  "onPointerDown",
@@ -81,10 +86,12 @@ const _useState = require("./useState");
81
86
  hasHover,
82
87
  hasActive,
83
88
  hovered,
84
- activated
85
- }), { stateClassName, setLockBubblingImmediate } = _useState1, stateEvents = _object_without_properties._(_useState1, [
89
+ activated,
90
+ unlockParentHover
91
+ }), { stateClassName, setLockHoverBubblingImmediate, setLockActiveBubblingImmediate } = _useState1, stateEvents = _object_without_properties._(_useState1, [
86
92
  "stateClassName",
87
- "setLockBubblingImmediate"
93
+ "setLockHoverBubblingImmediate",
94
+ "setLockActiveBubblingImmediate"
88
95
  ]);
89
96
  const handlers = (0, _mergeCalls.mergeCalls)(focusEvents, stateEvents, {
90
97
  onKeyDown: _utils.clickByKeyboardHandler
@@ -98,11 +105,19 @@ const _useState = require("./useState");
98
105
  onFocus,
99
106
  onKeyDown
100
107
  });
108
+ const lockStateContextValue = _react.useMemo(()=>({
109
+ lockHoverStateBubbling: hasHoverWithChildren ? _vkjs.noop : setLockHoverBubblingImmediate,
110
+ lockActiveStateBubbling: setLockActiveBubblingImmediate
111
+ }), [
112
+ setLockHoverBubblingImmediate,
113
+ setLockActiveBubblingImmediate,
114
+ hasHoverWithChildren
115
+ ]);
101
116
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_RootComponent.RootComponent, _object_spread_props._(_object_spread._({
102
117
  baseClassName: (0, _vkjs.classNames)(baseClassName, "vkuiClickable__realClickable", focusVisibleClassNames, stateClassName)
103
118
  }, handlers, restProps), {
104
119
  children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_useState.ClickableLockStateContext.Provider, {
105
- value: setLockBubblingImmediate,
120
+ value: lockStateContextValue,
106
121
  children: children
107
122
  })
108
123
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Clickable/Clickable.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport {\n type FocusVisibleModeProps,\n useFocusVisibleClassName,\n} from '../../hooks/useFocusVisibleClassName';\nimport { mergeCalls } from '../../lib/mergeCalls';\nimport { clickByKeyboardHandler } from '../../lib/utils';\nimport { RootComponent, type RootComponentProps } from '../RootComponent/RootComponent';\nimport {\n ClickableLockStateContext,\n DEFAULT_ACTIVE_EFFECT_DELAY,\n type StateProps,\n useState,\n} from './useState';\nimport styles from './Clickable.module.css';\n\nexport interface ClickableProps<T = HTMLElement>\n extends RootComponentProps<T>,\n FocusVisibleModeProps,\n StateProps {}\n\n/**\n * Некликабельный компонент. Отключаем возможность нажимать на компонент.\n */\nconst NonClickable = <T,>({\n href,\n onClick,\n onClickCapture,\n activeClassName,\n hoverClassName,\n hasActive,\n hasHover,\n hovered,\n activated,\n activeEffectDelay,\n ...restProps\n}: ClickableProps<T>) => <RootComponent {...restProps} />;\n\n/**\n * Кликабельный компонент. Добавляем кучу обвесов\n */\nconst RealClickable = <T,>({\n baseClassName,\n children,\n focusVisibleMode = 'inside',\n activeClassName,\n hoverClassName,\n activeEffectDelay = DEFAULT_ACTIVE_EFFECT_DELAY,\n hasHover = true,\n hasActive = true,\n hovered,\n activated,\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n ...restProps\n}: ClickableProps<T>) => {\n const { focusVisible, ...focusEvents } = useFocusVisible();\n const focusVisibleClassNames = useFocusVisibleClassName({ focusVisible, mode: focusVisibleMode });\n\n const { stateClassName, setLockBubblingImmediate, ...stateEvents } = useState({\n activeClassName,\n hoverClassName,\n activeEffectDelay,\n hasHover,\n hasActive,\n hovered,\n activated,\n });\n\n const handlers = mergeCalls(\n focusEvents,\n stateEvents,\n { onKeyDown: clickByKeyboardHandler },\n {\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n },\n );\n\n return (\n <RootComponent\n baseClassName={classNames(\n baseClassName,\n styles['Clickable__realClickable'],\n focusVisibleClassNames,\n stateClassName,\n )}\n {...handlers}\n {...restProps}\n >\n <ClickableLockStateContext.Provider value={setLockBubblingImmediate}>\n {children}\n </ClickableLockStateContext.Provider>\n </RootComponent>\n );\n};\n\n/**\n * Проверяем, является ли компонент кликабельным\n */\nexport function checkClickable<T>(props: ClickableProps<T>): boolean {\n return (\n (props.href !== undefined ||\n props.onClick !== undefined ||\n props.onClickCapture !== undefined ||\n props.Component === 'a' ||\n props.Component === 'button' ||\n props.Component === 'label' ||\n props.Component === 'input') &&\n !props.disabled\n );\n}\n\n/**\n * Определяет правильный компонент и его свойства\n *\n * - если передан Component, используем его\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n */\nfunction component<T>({\n Component,\n onClick,\n onClickCapture,\n href,\n disabled,\n}: RootComponentProps<T>): RootComponentProps<T> {\n if (Component !== undefined) {\n return { Component };\n } else if (href !== undefined) {\n return { 'Component': 'a', 'aria-disabled': disabled };\n } else if (onClick !== undefined || onClickCapture !== undefined) {\n return {\n 'Component': 'div',\n 'role': 'button',\n 'tabIndex': disabled ? undefined : 0,\n 'aria-disabled': disabled,\n };\n }\n\n return {};\n}\n\nconst getUserAgentResetClassName = (Component?: React.ElementType) => {\n if (Component === 'a') {\n return styles.Clickable__resetLinkStyle;\n }\n if (Component === 'button') {\n return styles.Clickable__resetButtonStyle;\n }\n return;\n};\n\n/**\n * Базовый кликабельный корневой компонент.\n *\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n *\n * Отвечает за:\n *\n * - стейты наведения и нажатия\n * - a11y компонентов\n */\nexport const Clickable = <T,>({\n focusVisibleMode = 'inside',\n baseClassName: baseClassNameProp,\n ...restProps\n}: ClickableProps<T>): React.ReactNode => {\n const commonProps = component(restProps);\n const isClickable = checkClickable(restProps);\n const baseClassName = classNames(\n baseClassNameProp,\n getUserAgentResetClassName(commonProps.Component),\n styles['Clickable__host'],\n );\n\n if (isClickable) {\n return (\n <RealClickable\n baseClassName={baseClassName}\n focusVisibleMode={focusVisibleMode}\n {...commonProps}\n {...restProps}\n />\n );\n }\n\n return <NonClickable baseClassName={baseClassName} {...commonProps} {...restProps} />;\n};\n"],"names":["Clickable","checkClickable","NonClickable","href","onClick","onClickCapture","activeClassName","hoverClassName","hasActive","hasHover","hovered","activated","activeEffectDelay","restProps","RootComponent","RealClickable","baseClassName","children","focusVisibleMode","DEFAULT_ACTIVE_EFFECT_DELAY","onPointerEnter","onPointerLeave","onPointerDown","onPointerCancel","onPointerUp","onBlur","onFocus","onKeyDown","useFocusVisible","focusVisible","focusEvents","focusVisibleClassNames","useFocusVisibleClassName","mode","useState","stateClassName","setLockBubblingImmediate","stateEvents","handlers","mergeCalls","clickByKeyboardHandler","classNames","ClickableLockStateContext","Provider","value","props","undefined","Component","disabled","component","getUserAgentResetClassName","baseClassNameProp","commonProps","isClickable"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/Clickable/Clickable.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport {\n type FocusVisibleModeProps,\n useFocusVisibleClassName,\n} from '../../hooks/useFocusVisibleClassName';\nimport { mergeCalls } from '../../lib/mergeCalls';\nimport { clickByKeyboardHandler } from '../../lib/utils';\nimport { RootComponent, type RootComponentProps } from '../RootComponent/RootComponent';\nimport {\n ClickableLockStateContext,\n DEFAULT_ACTIVE_EFFECT_DELAY,\n type StateProps,\n useState,\n} from './useState';\nimport styles from './Clickable.module.css';\n\nexport interface ClickableProps<T = HTMLElement>\n extends RootComponentProps<T>,\n FocusVisibleModeProps,\n StateProps {}\n\n/**\n * Некликабельный компонент. Отключаем возможность нажимать на компонент.\n */\nconst NonClickable = <T,>({\n href,\n onClick,\n onClickCapture,\n activeClassName,\n hoverClassName,\n hasActive,\n hasHover,\n hovered,\n unlockParentHover,\n activated,\n activeEffectDelay,\n ...restProps\n}: ClickableProps<T>) => <RootComponent {...restProps} />;\n\n/**\n * Кликабельный компонент. Добавляем кучу обвесов\n */\nconst RealClickable = <T,>({\n baseClassName,\n children,\n focusVisibleMode = 'inside',\n activeClassName,\n hoverClassName,\n activeEffectDelay = DEFAULT_ACTIVE_EFFECT_DELAY,\n hasHover = true,\n hasActive = true,\n hovered,\n activated,\n hasHoverWithChildren,\n unlockParentHover,\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n ...restProps\n}: ClickableProps<T>) => {\n const { focusVisible, ...focusEvents } = useFocusVisible();\n const focusVisibleClassNames = useFocusVisibleClassName({ focusVisible, mode: focusVisibleMode });\n\n const {\n stateClassName,\n setLockHoverBubblingImmediate,\n setLockActiveBubblingImmediate,\n ...stateEvents\n } = useState({\n activeClassName,\n hoverClassName,\n activeEffectDelay,\n hasHover,\n hasActive,\n hovered,\n activated,\n unlockParentHover,\n });\n\n const handlers = mergeCalls(\n focusEvents,\n stateEvents,\n { onKeyDown: clickByKeyboardHandler },\n {\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n },\n );\n\n const lockStateContextValue = React.useMemo(\n () => ({\n lockHoverStateBubbling: hasHoverWithChildren ? noop : setLockHoverBubblingImmediate,\n lockActiveStateBubbling: setLockActiveBubblingImmediate,\n }),\n [setLockHoverBubblingImmediate, setLockActiveBubblingImmediate, hasHoverWithChildren],\n );\n\n return (\n <RootComponent\n baseClassName={classNames(\n baseClassName,\n styles['Clickable__realClickable'],\n focusVisibleClassNames,\n stateClassName,\n )}\n {...handlers}\n {...restProps}\n >\n <ClickableLockStateContext.Provider value={lockStateContextValue}>\n {children}\n </ClickableLockStateContext.Provider>\n </RootComponent>\n );\n};\n\n/**\n * Проверяем, является ли компонент кликабельным\n */\nexport function checkClickable<T>(props: ClickableProps<T>): boolean {\n return (\n (props.href !== undefined ||\n props.onClick !== undefined ||\n props.onClickCapture !== undefined ||\n props.Component === 'a' ||\n props.Component === 'button' ||\n props.Component === 'label' ||\n props.Component === 'input') &&\n !props.disabled\n );\n}\n\n/**\n * Определяет правильный компонент и его свойства\n *\n * - если передан Component, используем его\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n */\nfunction component<T>({\n Component,\n onClick,\n onClickCapture,\n href,\n disabled,\n}: RootComponentProps<T>): RootComponentProps<T> {\n if (Component !== undefined) {\n return { Component };\n } else if (href !== undefined) {\n return { 'Component': 'a', 'aria-disabled': disabled };\n } else if (onClick !== undefined || onClickCapture !== undefined) {\n return {\n 'Component': 'div',\n 'role': 'button',\n 'tabIndex': disabled ? undefined : 0,\n 'aria-disabled': disabled,\n };\n }\n\n return {};\n}\n\nconst getUserAgentResetClassName = (Component?: React.ElementType) => {\n if (Component === 'a') {\n return styles.Clickable__resetLinkStyle;\n }\n if (Component === 'button') {\n return styles.Clickable__resetButtonStyle;\n }\n return;\n};\n\n/**\n * Базовый кликабельный корневой компонент.\n *\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n *\n * Отвечает за:\n *\n * - стейты наведения и нажатия\n * - a11y компонентов\n */\nexport const Clickable = <T,>({\n focusVisibleMode = 'inside',\n baseClassName: baseClassNameProp,\n ...restProps\n}: ClickableProps<T>): React.ReactNode => {\n const commonProps = component(restProps);\n const isClickable = checkClickable(restProps);\n const baseClassName = classNames(\n baseClassNameProp,\n getUserAgentResetClassName(commonProps.Component),\n styles['Clickable__host'],\n );\n\n if (isClickable) {\n return (\n <RealClickable\n baseClassName={baseClassName}\n focusVisibleMode={focusVisibleMode}\n {...commonProps}\n {...restProps}\n />\n );\n }\n\n return <NonClickable baseClassName={baseClassName} {...commonProps} {...restProps} />;\n};\n"],"names":["Clickable","checkClickable","NonClickable","href","onClick","onClickCapture","activeClassName","hoverClassName","hasActive","hasHover","hovered","unlockParentHover","activated","activeEffectDelay","restProps","RootComponent","RealClickable","baseClassName","children","focusVisibleMode","DEFAULT_ACTIVE_EFFECT_DELAY","hasHoverWithChildren","onPointerEnter","onPointerLeave","onPointerDown","onPointerCancel","onPointerUp","onBlur","onFocus","onKeyDown","useFocusVisible","focusVisible","focusEvents","focusVisibleClassNames","useFocusVisibleClassName","mode","useState","stateClassName","setLockHoverBubblingImmediate","setLockActiveBubblingImmediate","stateEvents","handlers","mergeCalls","clickByKeyboardHandler","lockStateContextValue","React","useMemo","lockHoverStateBubbling","noop","lockActiveStateBubbling","classNames","ClickableLockStateContext","Provider","value","props","undefined","Component","disabled","component","getUserAgentResetClassName","baseClassNameProp","commonProps","isClickable"],"mappings":"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"}
@@ -16,6 +16,36 @@ export interface StateProps {
16
16
  * Указывает, должен ли компонент реагировать на active-состояние
17
17
  */
18
18
  hasActive?: boolean;
19
+ /**
20
+ * Позволяет родительскому компоненту
21
+ * иметь hovered-cостояние при наведении
22
+ * на любой дочерний элемент.
23
+ * По умолчанию состояние hovered у родителя сбрасывается.
24
+ *
25
+ * Присваивается родителькому компоненту.
26
+ *
27
+ * @example
28
+ * <Tappable hasHoverWithChildren>
29
+ * <IconButton />
30
+ * <IconButton />
31
+ * <IconButton />
32
+ * </Tappable>
33
+ */
34
+ hasHoverWithChildren?: boolean;
35
+ /**
36
+ * Позволяет родительскому компоненту показывать hovered-состояние при наведении
37
+ * на текущий дочерний компонент.
38
+ *
39
+ * Присваивается дочернему компоненту.
40
+ *
41
+ * @example
42
+ * <Tappable>
43
+ * <IconButton unlockParentHover />
44
+ * <IconButton unlockParentHover />
45
+ * <IconButton />
46
+ * </Tappable>
47
+ */
48
+ unlockParentHover?: boolean;
19
49
  /**
20
50
  * Длительность показа `activated`-состояния
21
51
  */
@@ -30,12 +60,18 @@ export interface StateProps {
30
60
  hoverClassName?: string;
31
61
  }
32
62
  export declare const DEFAULT_ACTIVE_EFFECT_DELAY = 600;
33
- export declare const ClickableLockStateContext: React.Context<((v: boolean) => void) | undefined>;
63
+ interface ClickableLockStateContextInterface {
64
+ lockHoverStateBubbling?: (v: boolean) => void;
65
+ lockActiveStateBubbling?: (v: boolean) => void;
66
+ }
67
+ export declare const ClickableLockStateContext: React.Context<ClickableLockStateContextInterface>;
34
68
  /**
35
69
  * Управляет состоянием компонента
36
70
  */
37
- export declare function useState({ hasHover, hasActive, ...restProps }: StateProps): {
71
+ export declare function useState({ hovered, hasHover, hasActive, unlockParentHover, ...restProps }: StateProps): {
38
72
  stateClassName: string;
39
- setLockBubblingImmediate: (...args: any[]) => void;
73
+ setLockHoverBubblingImmediate: (...args: any[]) => void;
74
+ setLockActiveBubblingImmediate: (...args: any[]) => void;
40
75
  };
76
+ export {};
41
77
  //# sourceMappingURL=useState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useState.d.ts","sourceRoot":"","sources":["../../../../src/components/Clickable/useState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AASD,eAAO,MAAM,2BAA2B,MAAM,CAAC;AA0E/C,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CACpB,CAAC;AAcrE;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,EAAE,UAAU,GAAG;IAC3E,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CACpD,CAyBA"}
1
+ {"version":3,"file":"useState.d.ts","sourceRoot":"","sources":["../../../../src/components/Clickable/useState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,2BAA2B,MAAM,CAAC;AA6I/C,UAAU,kCAAkC;IAC1C,sBAAsB,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,uBAAuB,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD;AAED,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,OAAO,CAAC,kCAAkC,CAIpF,CAAC;AAqCL;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,GAAG,SAAS,EACb,EAAE,UAAU,GAAG;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,6BAA6B,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACxD,8BAA8B,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CAC1D,CAkCA"}
@@ -21,42 +21,79 @@ _export(exports, {
21
21
  });
22
22
  const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
23
23
  const _object_spread = require("@swc/helpers/_/_object_spread");
24
+ const _object_spread_props = require("@swc/helpers/_/_object_spread_props");
24
25
  const _object_without_properties = require("@swc/helpers/_/_object_without_properties");
25
26
  const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
26
27
  const _vkjs = require("@vkontakte/vkjs");
27
- const _callMultiple = require("../../lib/callMultiple");
28
28
  const _mergeCalls = require("../../lib/mergeCalls");
29
29
  const _useStateWithDelay = require("./useStateWithDelay");
30
30
  const DEFAULT_ACTIVE_EFFECT_DELAY = 600;
31
31
  const ACTIVE_DELAY = 70;
32
32
  /**
33
33
  * Управляет наведением на компонент, игнорирует тач события
34
- */ function useHover({ hovered, hoverClassName, hasHover = true, lockState }) {
35
- const [hoveredState, setHover] = _react.useState(false);
36
- const hover = hasHover && !lockState && (hovered || hoveredState) ? hoverClassName : undefined;
34
+ */ function useHover({ hovered, hasHover = true, lockState, setParentStateLock }) {
35
+ const [hoveredStateLocal, setHoveredStateLocal] = _react.useState(false);
36
+ const prevIsHoveredRef = _react.useRef(undefined);
37
+ const handleHover = _react.useCallback((isHover)=>{
38
+ setHoveredStateLocal(isHover);
39
+ const isHovered = calculateStateValue({
40
+ hasState: hasHover,
41
+ isLocked: lockState,
42
+ stateValueControlled: Boolean(hovered),
43
+ stateValueLocal: isHover
44
+ });
45
+ // проверка сделана чтобы реже вызывать обновление состояния
46
+ // контекста родителя
47
+ if (isHovered !== prevIsHoveredRef.current) {
48
+ prevIsHoveredRef.current = isHovered;
49
+ setParentStateLock(isHovered);
50
+ }
51
+ }, [
52
+ setParentStateLock,
53
+ hasHover,
54
+ hovered,
55
+ lockState
56
+ ]);
37
57
  const onPointerEnter = (e)=>{
38
58
  if (e.pointerType === 'touch') {
39
59
  return;
40
60
  }
41
- setHover(true);
61
+ handleHover(true);
42
62
  };
43
63
  const onPointerLeave = ()=>{
44
- setHover(false);
64
+ handleHover(false);
45
65
  };
66
+ const isHovered = calculateStateValue({
67
+ hasState: hasHover,
68
+ isLocked: lockState,
69
+ stateValueControlled: Boolean(hovered),
70
+ stateValueLocal: hoveredStateLocal
71
+ });
46
72
  return {
47
- hover,
73
+ isHovered,
48
74
  onPointerEnter: hasHover ? onPointerEnter : _vkjs.noop,
49
75
  onPointerLeave: hasHover ? onPointerLeave : _vkjs.noop
50
76
  };
51
77
  }
52
78
  /**
53
79
  * Управляет активацией компонента
54
- */ function useActive({ activated, activeClassName, activeEffectDelay, hasActive = true, lockState }) {
55
- const [activatedState, setActivated] = (0, _useStateWithDelay.useStateWithDelay)(false);
80
+ */ function useActive({ activated, activeEffectDelay, hasActive = true, lockStateRef, setParentStateLock }) {
81
+ // передаём setParentStateLock, чтобы функция вызывалась вместе с установкой стейта,
82
+ // если установка отложена c помощью delay, то и вызов будет отложен
83
+ const [activatedState, setActivated] = (0, _useStateWithDelay.useStateWithDelay)(false, 0, setParentStateLock);
56
84
  // Список нажатий которые не требуется отменять
57
85
  const pointersUp = _react.useMemo(()=>new Set(), []);
58
- const active = hasActive && !lockState && (activated || activatedState) ? activeClassName : undefined;
59
- const onPointerDown = ()=>setActivated(true, ACTIVE_DELAY);
86
+ const onPointerDown = ()=>{
87
+ if (lockStateRef.current) {
88
+ return;
89
+ }
90
+ setActivated(true, ACTIVE_DELAY);
91
+ // намеренно выставляем lock, так как setActivated вызов отложен
92
+ // а у отложенного setActivated setParentStateLock тоже вызовится отложенно
93
+ // родитель сейчас тоже обработает это же событие PointerDown
94
+ // если мы не залочим activatedState у родителя сейчас, то родитель выставит active состояние
95
+ setParentStateLock(true);
96
+ };
60
97
  const onPointerCancel = (e)=>{
61
98
  if (pointersUp.has(e.pointerId)) {
62
99
  pointersUp.delete(e.pointerId);
@@ -66,59 +103,95 @@ const ACTIVE_DELAY = 70;
66
103
  };
67
104
  const onPointerUp = (e)=>{
68
105
  pointersUp.add(e.pointerId);
106
+ if (lockStateRef.current) {
107
+ return;
108
+ }
69
109
  setActivated(true);
70
110
  setActivated(false, activeEffectDelay);
71
111
  };
112
+ const isActivated = calculateStateValue({
113
+ hasState: hasActive,
114
+ isLocked: lockStateRef.current,
115
+ stateValueControlled: Boolean(activated),
116
+ stateValueLocal: activatedState
117
+ });
72
118
  return {
73
- active,
119
+ isActivated,
74
120
  onPointerLeave: hasActive ? onPointerCancel : _vkjs.noop,
75
121
  onPointerDown: hasActive ? onPointerDown : _vkjs.noop,
76
122
  onPointerCancel: hasActive ? onPointerCancel : _vkjs.noop,
77
123
  onPointerUp: hasActive ? onPointerUp : _vkjs.noop
78
124
  };
79
125
  }
80
- const ClickableLockStateContext = /*#__PURE__*/ _react.createContext(undefined);
126
+ const ClickableLockStateContext = /*#__PURE__*/ _react.createContext({
127
+ lockHoverStateBubbling: undefined,
128
+ lockActiveStateBubbling: undefined
129
+ });
81
130
  /**
82
131
  * Блокирует стейт на всплытие
83
- */ function useLockState() {
84
- const setLockBubbling = _react.useContext(ClickableLockStateContext) || _vkjs.noop;
132
+ */ function useLockState(setParentStateLockBubbling) {
85
133
  const [lockState, setLockState] = _react.useState(false);
86
- const setLockBubblingImmediate = (0, _callMultiple.callMultiple)(setLockState, setLockBubbling);
134
+ const setStateLockBubblingImmediate = _react.useCallback((isLock)=>{
135
+ setLockState(isLock);
136
+ setParentStateLockBubbling(isLock);
137
+ }, [
138
+ setParentStateLockBubbling
139
+ ]);
87
140
  return [
88
141
  lockState,
89
- setLockBubbling,
90
- setLockBubblingImmediate
142
+ setParentStateLockBubbling,
143
+ setStateLockBubblingImmediate
144
+ ];
145
+ }
146
+ function useLockRef(setParentStateLockBubbling) {
147
+ const lockStateRef = _react.useRef(false);
148
+ const setStateLockBubblingImmediate = _react.useCallback((isLock)=>{
149
+ lockStateRef.current = isLock;
150
+ setParentStateLockBubbling(isLock);
151
+ }, [
152
+ setParentStateLockBubbling
153
+ ]);
154
+ return [
155
+ lockStateRef,
156
+ setParentStateLockBubbling,
157
+ setStateLockBubblingImmediate
91
158
  ];
92
159
  }
93
160
  function useState(_param) {
94
- var { hasHover, hasActive } = _param, restProps = _object_without_properties._(_param, [
161
+ var { hovered, hasHover, hasActive, unlockParentHover } = _param, restProps = _object_without_properties._(_param, [
162
+ "hovered",
95
163
  "hasHover",
96
- "hasActive"
164
+ "hasActive",
165
+ "unlockParentHover"
97
166
  ]);
98
- const [lockState, setLockBubbling, setLockBubblingImmediate] = useLockState();
99
- const props = _object_spread._({
167
+ const { lockHoverStateBubbling = _vkjs.noop, lockActiveStateBubbling = _vkjs.noop } = _react.useContext(ClickableLockStateContext);
168
+ const [lockHoverState, setParentStateLockHoverBubbling, setLockHoverBubblingImmediate] = useLockState(unlockParentHover ? _vkjs.noop : lockHoverStateBubbling);
169
+ const [lockActiveStateRef, setParentStateLockActiveBubbling, setLockActiveBubblingImmediate] = useLockRef(lockActiveStateBubbling);
170
+ const _useHover = useHover({
100
171
  hasHover,
101
- hasActive,
102
- lockState
103
- }, restProps);
104
- const _useHover = useHover(_object_spread._({}, props)), { hover } = _useHover, hoverEvent = _object_without_properties._(_useHover, [
105
- "hover"
172
+ hovered,
173
+ lockState: lockHoverState,
174
+ setParentStateLock: setParentStateLockHoverBubbling
175
+ }), { isHovered } = _useHover, hoverEvent = _object_without_properties._(_useHover, [
176
+ "isHovered"
106
177
  ]);
107
- const _useActive = useActive(props), { active } = _useActive, activeEvent = _object_without_properties._(_useActive, [
108
- "active"
178
+ const _useActive = useActive(_object_spread_props._(_object_spread._({}, restProps), {
179
+ lockStateRef: lockActiveStateRef,
180
+ setParentStateLock: setParentStateLockActiveBubbling
181
+ })), { isActivated } = _useActive, activeEvent = _object_without_properties._(_useActive, [
182
+ "isActivated"
109
183
  ]);
110
- const stateClassName = (0, _vkjs.classNames)(hover, active);
184
+ const stateClassName = (0, _vkjs.classNames)(isHovered && restProps.hoverClassName, isActivated && restProps.activeClassName);
111
185
  const handlers = (0, _mergeCalls.mergeCalls)(hoverEvent, activeEvent);
112
- _react.useEffect(()=>{
113
- setLockBubbling(!!stateClassName);
114
- }, [
115
- setLockBubbling,
116
- stateClassName
117
- ]);
118
186
  return _object_spread._({
119
187
  stateClassName,
120
- setLockBubblingImmediate
188
+ setLockHoverBubblingImmediate,
189
+ setLockActiveBubblingImmediate
121
190
  }, handlers);
122
191
  }
192
+ // Общая функция для определения конечного состояния active/hovered
193
+ function calculateStateValue({ hasState, isLocked, stateValueControlled, stateValueLocal }) {
194
+ return hasState && !isLocked && (stateValueControlled || stateValueLocal);
195
+ }
123
196
 
124
197
  //# sourceMappingURL=useState.js.map