@vkontakte/vkui 4.27.1 → 4.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (730) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +11910 -4711
  4. package/.cache/ts/src/components/Button/Button.d.ts +1 -1
  5. package/.cache/ts/src/components/ButtonGroup/ButtonGroup.d.ts +20 -0
  6. package/.cache/ts/src/components/Calendar/Calendar.d.ts +21 -0
  7. package/.cache/ts/src/components/CalendarDay/CalendarDay.d.ts +22 -0
  8. package/.cache/ts/src/components/CalendarDays/CalendarDays.d.ts +22 -0
  9. package/.cache/ts/src/components/CalendarHeader/CalendarHeader.d.ts +16 -0
  10. package/.cache/ts/src/components/CalendarRange/CalendarRange.d.ts +16 -0
  11. package/.cache/ts/src/components/CalendarTime/CalendarTime.d.ts +11 -0
  12. package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -2
  13. package/.cache/ts/src/components/ConfigProvider/ConfigProvider.d.ts +4 -0
  14. package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +0 -7
  15. package/.cache/ts/src/components/CustomScrollView/CustomScrollView.d.ts +1 -1
  16. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +10 -1
  17. package/.cache/ts/src/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +4 -1
  18. package/.cache/ts/src/components/DateInput/DateInput.d.ts +12 -0
  19. package/.cache/ts/src/components/DateRangeInput/DateRangeInput.d.ts +18 -0
  20. package/.cache/ts/src/components/Div/Div.d.ts +1 -2
  21. package/.cache/ts/src/components/IconButton/IconButton.d.ts +1 -1
  22. package/.cache/ts/src/components/InputLike/InputLike.d.ts +10 -0
  23. package/.cache/ts/src/components/InputLike/InputLikeDivider.d.ts +3 -0
  24. package/.cache/ts/src/components/LocaleProviderContext/LocaleProviderContext.d.ts +2 -0
  25. package/.cache/ts/src/components/Pagination/Pagination.d.ts +42 -0
  26. package/.cache/ts/src/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  27. package/.cache/ts/src/components/RichCell/RichCell.d.ts +3 -2
  28. package/.cache/ts/src/components/Select/Select.d.ts +1 -1
  29. package/.cache/ts/src/components/SelectMimicry/SelectMimicry.d.ts +5 -1
  30. package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +1 -1
  31. package/.cache/ts/src/components/SimpleCheckbox/SimpleCheckbox.d.ts +0 -1
  32. package/.cache/ts/src/components/Tappable/Tappable.d.ts +3 -1
  33. package/.cache/ts/src/components/Typography/Caption/Caption.d.ts +8 -4
  34. package/.cache/ts/src/components/Typography/Subhead/Subhead.d.ts +6 -1
  35. package/.cache/ts/src/components/Typography/Title/Title.d.ts +3 -1
  36. package/.cache/ts/src/components/View/ViewInfinite.d.ts +2 -2
  37. package/.cache/ts/src/helpers/typography.d.ts +1 -0
  38. package/.cache/ts/src/hooks/useBooleanState.d.ts +6 -0
  39. package/.cache/ts/src/hooks/useCalendar.d.ts +18 -0
  40. package/.cache/ts/src/hooks/useDateInput.d.ts +30 -0
  41. package/.cache/ts/src/hooks/useKeyboardInputTracker.d.ts +2 -0
  42. package/.cache/ts/src/hooks/useOrientationChange.d.ts +7 -0
  43. package/.cache/ts/src/hooks/usePagination.d.ts +34 -0
  44. package/.cache/ts/src/index.d.ts +12 -2
  45. package/.cache/ts/src/lib/calendar.d.ts +14 -0
  46. package/.cache/ts/src/lib/utils.d.ts +2 -1
  47. package/.cache/ts/src/tokenized/index.d.ts +14 -0
  48. package/.cache/ts/src/unstable/index.d.ts +6 -6
  49. package/CONTRIBUTING.md +3 -2
  50. package/CSS_GUIDE.md +145 -0
  51. package/dist/cjs/components/ActionSheet/ActionSheet.js +4 -7
  52. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  53. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +3 -6
  54. package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  55. package/dist/cjs/components/Alert/Alert.js +5 -8
  56. package/dist/cjs/components/Alert/Alert.js.map +1 -1
  57. package/dist/cjs/components/Banner/Banner.js +1 -3
  58. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  59. package/dist/cjs/components/Button/Button.d.ts +1 -1
  60. package/dist/cjs/components/Button/Button.js +7 -11
  61. package/dist/cjs/components/Button/Button.js.map +1 -1
  62. package/dist/cjs/components/ButtonGroup/ButtonGroup.d.ts +20 -0
  63. package/dist/cjs/components/ButtonGroup/ButtonGroup.js +38 -0
  64. package/dist/cjs/components/ButtonGroup/ButtonGroup.js.map +1 -0
  65. package/dist/cjs/components/Calendar/Calendar.d.ts +21 -0
  66. package/dist/cjs/components/Calendar/Calendar.js +160 -0
  67. package/dist/cjs/components/Calendar/Calendar.js.map +1 -0
  68. package/dist/cjs/components/CalendarDay/CalendarDay.d.ts +22 -0
  69. package/dist/cjs/components/CalendarDay/CalendarDay.js +109 -0
  70. package/dist/cjs/components/CalendarDay/CalendarDay.js.map +1 -0
  71. package/dist/cjs/components/CalendarDays/CalendarDays.d.ts +22 -0
  72. package/dist/cjs/components/CalendarDays/CalendarDays.js +118 -0
  73. package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -0
  74. package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts +16 -0
  75. package/dist/cjs/components/CalendarHeader/CalendarHeader.js +143 -0
  76. package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -0
  77. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +16 -0
  78. package/dist/cjs/components/CalendarRange/CalendarRange.js +219 -0
  79. package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -0
  80. package/dist/cjs/components/CalendarTime/CalendarTime.d.ts +11 -0
  81. package/dist/cjs/components/CalendarTime/CalendarTime.js +92 -0
  82. package/dist/cjs/components/CalendarTime/CalendarTime.js.map +1 -0
  83. package/dist/cjs/components/Checkbox/Checkbox.js +2 -5
  84. package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
  85. package/dist/cjs/components/Chip/Chip.js +2 -4
  86. package/dist/cjs/components/Chip/Chip.js.map +1 -1
  87. package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -2
  88. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +7 -11
  89. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  90. package/dist/cjs/components/ConfigProvider/ConfigProvider.d.ts +4 -0
  91. package/dist/cjs/components/ConfigProvider/ConfigProvider.js +40 -21
  92. package/dist/cjs/components/ConfigProvider/ConfigProvider.js.map +1 -1
  93. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.d.ts +0 -7
  94. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js +3 -5
  95. package/dist/cjs/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  96. package/dist/cjs/components/ContentCard/ContentCard.js +5 -7
  97. package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
  98. package/dist/cjs/components/Counter/Counter.js +3 -3
  99. package/dist/cjs/components/Counter/Counter.js.map +1 -1
  100. package/dist/cjs/components/CustomScrollView/CustomScrollView.d.ts +1 -1
  101. package/dist/cjs/components/CustomScrollView/CustomScrollView.js.map +1 -1
  102. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +10 -1
  103. package/dist/cjs/components/CustomSelect/CustomSelect.js +47 -17
  104. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  105. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +4 -1
  106. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +14 -5
  107. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  108. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +3 -5
  109. package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  110. package/dist/cjs/components/DateInput/DateInput.d.ts +12 -0
  111. package/dist/cjs/components/DateInput/DateInput.js +290 -0
  112. package/dist/cjs/components/DateInput/DateInput.js.map +1 -0
  113. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +18 -0
  114. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +310 -0
  115. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -0
  116. package/dist/cjs/components/Div/Div.d.ts +1 -2
  117. package/dist/cjs/components/Div/Div.js +2 -5
  118. package/dist/cjs/components/Div/Div.js.map +1 -1
  119. package/dist/cjs/components/Footer/Footer.js +2 -4
  120. package/dist/cjs/components/Footer/Footer.js.map +1 -1
  121. package/dist/cjs/components/FormItem/FormItem.js +2 -5
  122. package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
  123. package/dist/cjs/components/FormStatus/FormStatus.js +3 -8
  124. package/dist/cjs/components/FormStatus/FormStatus.js.map +1 -1
  125. package/dist/cjs/components/Group/Group.js +3 -5
  126. package/dist/cjs/components/Group/Group.js.map +1 -1
  127. package/dist/cjs/components/Header/Header.js +10 -23
  128. package/dist/cjs/components/Header/Header.js.map +1 -1
  129. package/dist/cjs/components/HorizontalCell/HorizontalCell.js +5 -10
  130. package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
  131. package/dist/cjs/components/IconButton/IconButton.d.ts +1 -1
  132. package/dist/cjs/components/InfoRow/InfoRow.js +1 -2
  133. package/dist/cjs/components/InfoRow/InfoRow.js.map +1 -1
  134. package/dist/cjs/components/InputLike/InputLike.d.ts +10 -0
  135. package/dist/cjs/components/InputLike/InputLike.js +71 -0
  136. package/dist/cjs/components/InputLike/InputLike.js.map +1 -0
  137. package/dist/cjs/components/InputLike/InputLikeDivider.d.ts +3 -0
  138. package/dist/cjs/components/InputLike/InputLikeDivider.js +27 -0
  139. package/dist/cjs/components/InputLike/InputLikeDivider.js.map +1 -0
  140. package/dist/cjs/components/LocaleProviderContext/LocaleProviderContext.d.ts +2 -0
  141. package/dist/cjs/components/LocaleProviderContext/LocaleProviderContext.js +14 -0
  142. package/dist/cjs/components/LocaleProviderContext/LocaleProviderContext.js.map +1 -0
  143. package/dist/cjs/components/ModalPage/ModalPage.js +5 -5
  144. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  145. package/dist/cjs/components/Pagination/Pagination.d.ts +42 -0
  146. package/dist/cjs/components/Pagination/Pagination.js +152 -0
  147. package/dist/cjs/components/Pagination/Pagination.js.map +1 -0
  148. package/dist/cjs/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  149. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +2 -4
  150. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  151. package/dist/cjs/components/PromoBanner/PromoBanner.js +3 -7
  152. package/dist/cjs/components/PromoBanner/PromoBanner.js.map +1 -1
  153. package/dist/cjs/components/Radio/Radio.js +2 -5
  154. package/dist/cjs/components/Radio/Radio.js.map +1 -1
  155. package/dist/cjs/components/Removable/Removable.js +8 -4
  156. package/dist/cjs/components/Removable/Removable.js.map +1 -1
  157. package/dist/cjs/components/RichCell/RichCell.d.ts +3 -2
  158. package/dist/cjs/components/RichCell/RichCell.js +0 -1
  159. package/dist/cjs/components/RichCell/RichCell.js.map +1 -1
  160. package/dist/cjs/components/Select/Select.d.ts +1 -1
  161. package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +5 -1
  162. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +11 -5
  163. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  164. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +1 -1
  165. package/dist/cjs/components/SimpleCell/SimpleCell.js +0 -1
  166. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  167. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.d.ts +0 -1
  168. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js +2 -5
  169. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -1
  170. package/dist/cjs/components/Spacing/Spacing.js +2 -2
  171. package/dist/cjs/components/Spacing/Spacing.js.map +1 -1
  172. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js +4 -7
  173. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  174. package/dist/cjs/components/Tappable/Tappable.d.ts +3 -1
  175. package/dist/cjs/components/Tappable/Tappable.js +11 -11
  176. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  177. package/dist/cjs/components/TextTooltip/TextTooltip.js +1 -2
  178. package/dist/cjs/components/TextTooltip/TextTooltip.js.map +1 -1
  179. package/dist/cjs/components/Tooltip/Tooltip.js +1 -2
  180. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  181. package/dist/cjs/components/Typography/Caption/Caption.d.ts +8 -4
  182. package/dist/cjs/components/Typography/Caption/Caption.js +12 -14
  183. package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
  184. package/dist/cjs/components/Typography/Subhead/Subhead.d.ts +6 -1
  185. package/dist/cjs/components/Typography/Subhead/Subhead.js +15 -8
  186. package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
  187. package/dist/cjs/components/Typography/Title/Title.d.ts +3 -1
  188. package/dist/cjs/components/Typography/Title/Title.js +4 -2
  189. package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
  190. package/dist/cjs/components/UsersStack/UsersStack.js +3 -5
  191. package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
  192. package/dist/cjs/components/View/ViewInfinite.d.ts +2 -2
  193. package/dist/cjs/components/View/ViewInfinite.js +12 -15
  194. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  195. package/dist/cjs/helpers/typography.d.ts +1 -0
  196. package/dist/cjs/helpers/typography.js +25 -0
  197. package/dist/cjs/helpers/typography.js.map +1 -0
  198. package/dist/cjs/hooks/useBooleanState.d.ts +6 -0
  199. package/dist/cjs/hooks/useBooleanState.js +42 -0
  200. package/dist/cjs/hooks/useBooleanState.js.map +1 -0
  201. package/dist/cjs/hooks/useCalendar.d.ts +18 -0
  202. package/dist/cjs/hooks/useCalendar.js +78 -0
  203. package/dist/cjs/hooks/useCalendar.js.map +1 -0
  204. package/dist/cjs/hooks/useDateInput.d.ts +30 -0
  205. package/dist/cjs/hooks/useDateInput.js +180 -0
  206. package/dist/cjs/hooks/useDateInput.js.map +1 -0
  207. package/dist/cjs/hooks/useKeyboardInputTracker.d.ts +2 -0
  208. package/dist/cjs/hooks/useKeyboardInputTracker.js +15 -4
  209. package/dist/cjs/hooks/useKeyboardInputTracker.js.map +1 -1
  210. package/dist/cjs/hooks/useOrientationChange.d.ts +7 -0
  211. package/dist/cjs/hooks/useOrientationChange.js +56 -0
  212. package/dist/cjs/hooks/useOrientationChange.js.map +1 -0
  213. package/dist/cjs/hooks/usePagination.d.ts +34 -0
  214. package/dist/cjs/hooks/usePagination.js +81 -0
  215. package/dist/cjs/hooks/usePagination.js.map +1 -0
  216. package/dist/cjs/index.d.ts +12 -2
  217. package/dist/cjs/index.js +68 -4
  218. package/dist/cjs/index.js.map +1 -1
  219. package/dist/cjs/lib/calendar.d.ts +14 -0
  220. package/dist/cjs/lib/calendar.js +142 -0
  221. package/dist/cjs/lib/calendar.js.map +1 -0
  222. package/dist/cjs/lib/utils.d.ts +2 -1
  223. package/dist/cjs/lib/utils.js +7 -0
  224. package/dist/cjs/lib/utils.js.map +1 -1
  225. package/dist/cjs/tokenized/index.d.ts +14 -0
  226. package/dist/cjs/tokenized/index.js +56 -0
  227. package/dist/cjs/tokenized/index.js.map +1 -1
  228. package/dist/cjs/unstable/index.d.ts +6 -6
  229. package/dist/cjs/unstable/index.js +6 -8
  230. package/dist/cjs/unstable/index.js.map +1 -1
  231. package/dist/components/ActionSheet/ActionSheet.js +2 -5
  232. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  233. package/dist/components/ActionSheetItem/ActionSheetItem.js +2 -5
  234. package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  235. package/dist/components/Alert/Alert.js +3 -6
  236. package/dist/components/Alert/Alert.js.map +1 -1
  237. package/dist/components/Banner/Banner.js +1 -3
  238. package/dist/components/Banner/Banner.js.map +1 -1
  239. package/dist/components/Button/Button.d.ts +1 -1
  240. package/dist/components/Button/Button.js +6 -10
  241. package/dist/components/Button/Button.js.map +1 -1
  242. package/dist/components/ButtonGroup/ButtonGroup.d.ts +20 -0
  243. package/dist/components/ButtonGroup/ButtonGroup.js +23 -0
  244. package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -0
  245. package/dist/components/Calendar/Calendar.d.ts +21 -0
  246. package/dist/components/Calendar/Calendar.js +133 -0
  247. package/dist/components/Calendar/Calendar.js.map +1 -0
  248. package/dist/components/CalendarDay/CalendarDay.d.ts +22 -0
  249. package/dist/components/CalendarDay/CalendarDay.js +91 -0
  250. package/dist/components/CalendarDay/CalendarDay.js.map +1 -0
  251. package/dist/components/CalendarDays/CalendarDays.d.ts +22 -0
  252. package/dist/components/CalendarDays/CalendarDays.js +94 -0
  253. package/dist/components/CalendarDays/CalendarDays.js.map +1 -0
  254. package/dist/components/CalendarHeader/CalendarHeader.d.ts +16 -0
  255. package/dist/components/CalendarHeader/CalendarHeader.js +118 -0
  256. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -0
  257. package/dist/components/CalendarRange/CalendarRange.d.ts +16 -0
  258. package/dist/components/CalendarRange/CalendarRange.js +196 -0
  259. package/dist/components/CalendarRange/CalendarRange.js.map +1 -0
  260. package/dist/components/CalendarTime/CalendarTime.d.ts +11 -0
  261. package/dist/components/CalendarTime/CalendarTime.js +73 -0
  262. package/dist/components/CalendarTime/CalendarTime.js.map +1 -0
  263. package/dist/components/Checkbox/Checkbox.js +1 -4
  264. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  265. package/dist/components/Chip/Chip.js +1 -3
  266. package/dist/components/Chip/Chip.js.map +1 -1
  267. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -2
  268. package/dist/components/ChipsSelect/ChipsSelect.js +4 -7
  269. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  270. package/dist/components/ConfigProvider/ConfigProvider.d.ts +4 -0
  271. package/dist/components/ConfigProvider/ConfigProvider.js +36 -20
  272. package/dist/components/ConfigProvider/ConfigProvider.js.map +1 -1
  273. package/dist/components/ConfigProvider/ConfigProviderContext.d.ts +0 -7
  274. package/dist/components/ConfigProvider/ConfigProviderContext.js +2 -3
  275. package/dist/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  276. package/dist/components/ContentCard/ContentCard.js +3 -5
  277. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  278. package/dist/components/Counter/Counter.js +2 -2
  279. package/dist/components/Counter/Counter.js.map +1 -1
  280. package/dist/components/CustomScrollView/CustomScrollView.d.ts +1 -1
  281. package/dist/components/CustomScrollView/CustomScrollView.js.map +1 -1
  282. package/dist/components/CustomSelect/CustomSelect.d.ts +10 -1
  283. package/dist/components/CustomSelect/CustomSelect.js +44 -15
  284. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  285. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +4 -1
  286. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +14 -5
  287. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  288. package/dist/components/CustomSelectOption/CustomSelectOption.js +2 -4
  289. package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  290. package/dist/components/DateInput/DateInput.d.ts +12 -0
  291. package/dist/components/DateInput/DateInput.js +261 -0
  292. package/dist/components/DateInput/DateInput.js.map +1 -0
  293. package/dist/components/DateRangeInput/DateRangeInput.d.ts +18 -0
  294. package/dist/components/DateRangeInput/DateRangeInput.js +281 -0
  295. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -0
  296. package/dist/components/Div/Div.d.ts +1 -2
  297. package/dist/components/Div/Div.js +1 -3
  298. package/dist/components/Div/Div.js.map +1 -1
  299. package/dist/components/Footer/Footer.js +1 -3
  300. package/dist/components/Footer/Footer.js.map +1 -1
  301. package/dist/components/FormItem/FormItem.js +1 -4
  302. package/dist/components/FormItem/FormItem.js.map +1 -1
  303. package/dist/components/FormStatus/FormStatus.js +2 -7
  304. package/dist/components/FormStatus/FormStatus.js.map +1 -1
  305. package/dist/components/Group/Group.js +2 -4
  306. package/dist/components/Group/Group.js.map +1 -1
  307. package/dist/components/Header/Header.js +7 -20
  308. package/dist/components/Header/Header.js.map +1 -1
  309. package/dist/components/HorizontalCell/HorizontalCell.js +3 -8
  310. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  311. package/dist/components/IconButton/IconButton.d.ts +1 -1
  312. package/dist/components/InfoRow/InfoRow.js +1 -2
  313. package/dist/components/InfoRow/InfoRow.js.map +1 -1
  314. package/dist/components/InputLike/InputLike.d.ts +10 -0
  315. package/dist/components/InputLike/InputLike.js +52 -0
  316. package/dist/components/InputLike/InputLike.js.map +1 -0
  317. package/dist/components/InputLike/InputLikeDivider.d.ts +3 -0
  318. package/dist/components/InputLike/InputLikeDivider.js +13 -0
  319. package/dist/components/InputLike/InputLikeDivider.js.map +1 -0
  320. package/dist/components/LocaleProviderContext/LocaleProviderContext.d.ts +2 -0
  321. package/dist/components/LocaleProviderContext/LocaleProviderContext.js +3 -0
  322. package/dist/components/LocaleProviderContext/LocaleProviderContext.js.map +1 -0
  323. package/dist/components/ModalPage/ModalPage.js +4 -5
  324. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  325. package/dist/components/Pagination/Pagination.d.ts +42 -0
  326. package/dist/components/Pagination/Pagination.js +129 -0
  327. package/dist/components/Pagination/Pagination.js.map +1 -0
  328. package/dist/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  329. package/dist/components/PanelHeaderContent/PanelHeaderContent.js +1 -3
  330. package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  331. package/dist/components/PromoBanner/PromoBanner.js +1 -5
  332. package/dist/components/PromoBanner/PromoBanner.js.map +1 -1
  333. package/dist/components/Radio/Radio.js +1 -4
  334. package/dist/components/Radio/Radio.js.map +1 -1
  335. package/dist/components/Removable/Removable.js +8 -4
  336. package/dist/components/Removable/Removable.js.map +1 -1
  337. package/dist/components/RichCell/RichCell.d.ts +3 -2
  338. package/dist/components/RichCell/RichCell.js +0 -1
  339. package/dist/components/RichCell/RichCell.js.map +1 -1
  340. package/dist/components/Select/Select.d.ts +1 -1
  341. package/dist/components/SelectMimicry/SelectMimicry.d.ts +5 -1
  342. package/dist/components/SelectMimicry/SelectMimicry.js +10 -5
  343. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  344. package/dist/components/SimpleCell/SimpleCell.d.ts +1 -1
  345. package/dist/components/SimpleCell/SimpleCell.js +0 -1
  346. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  347. package/dist/components/SimpleCheckbox/SimpleCheckbox.d.ts +0 -1
  348. package/dist/components/SimpleCheckbox/SimpleCheckbox.js +1 -3
  349. package/dist/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -1
  350. package/dist/components/Spacing/Spacing.js +2 -2
  351. package/dist/components/Spacing/Spacing.js.map +1 -1
  352. package/dist/components/SubnavigationButton/SubnavigationButton.js +3 -6
  353. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  354. package/dist/components/Tappable/Tappable.d.ts +3 -1
  355. package/dist/components/Tappable/Tappable.js +10 -11
  356. package/dist/components/Tappable/Tappable.js.map +1 -1
  357. package/dist/components/TextTooltip/TextTooltip.js +1 -2
  358. package/dist/components/TextTooltip/TextTooltip.js.map +1 -1
  359. package/dist/components/Tooltip/Tooltip.js +1 -2
  360. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  361. package/dist/components/Typography/Caption/Caption.d.ts +8 -4
  362. package/dist/components/Typography/Caption/Caption.js +10 -14
  363. package/dist/components/Typography/Caption/Caption.js.map +1 -1
  364. package/dist/components/Typography/Subhead/Subhead.d.ts +6 -1
  365. package/dist/components/Typography/Subhead/Subhead.js +13 -7
  366. package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
  367. package/dist/components/Typography/Title/Title.d.ts +3 -1
  368. package/dist/components/Typography/Title/Title.js +3 -2
  369. package/dist/components/Typography/Title/Title.js.map +1 -1
  370. package/dist/components/UsersStack/UsersStack.js +2 -4
  371. package/dist/components/UsersStack/UsersStack.js.map +1 -1
  372. package/dist/components/View/ViewInfinite.d.ts +2 -2
  373. package/dist/components/View/ViewInfinite.js +10 -11
  374. package/dist/components/View/ViewInfinite.js.map +1 -1
  375. package/dist/components.css +5 -5
  376. package/dist/components.css.map +1 -1
  377. package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -5
  378. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  379. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +2 -5
  380. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
  381. package/dist/cssm/components/Alert/Alert.js +3 -6
  382. package/dist/cssm/components/Alert/Alert.js.map +1 -1
  383. package/dist/cssm/components/Banner/Banner.js +1 -3
  384. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  385. package/dist/cssm/components/Button/Button.css +1 -1
  386. package/dist/cssm/components/Button/Button.d.ts +1 -1
  387. package/dist/cssm/components/Button/Button.js +6 -10
  388. package/dist/cssm/components/Button/Button.js.map +1 -1
  389. package/dist/cssm/components/ButtonGroup/ButtonGroup.css +1 -0
  390. package/dist/cssm/components/ButtonGroup/ButtonGroup.d.ts +20 -0
  391. package/dist/cssm/components/ButtonGroup/ButtonGroup.js +24 -0
  392. package/dist/cssm/components/ButtonGroup/ButtonGroup.js.map +1 -0
  393. package/dist/cssm/components/Calendar/Calendar.css +1 -0
  394. package/dist/cssm/components/Calendar/Calendar.d.ts +21 -0
  395. package/dist/cssm/components/Calendar/Calendar.js +134 -0
  396. package/dist/cssm/components/Calendar/Calendar.js.map +1 -0
  397. package/dist/cssm/components/CalendarDay/CalendarDay.css +1 -0
  398. package/dist/cssm/components/CalendarDay/CalendarDay.d.ts +22 -0
  399. package/dist/cssm/components/CalendarDay/CalendarDay.js +92 -0
  400. package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -0
  401. package/dist/cssm/components/CalendarDays/CalendarDays.css +1 -0
  402. package/dist/cssm/components/CalendarDays/CalendarDays.d.ts +22 -0
  403. package/dist/cssm/components/CalendarDays/CalendarDays.js +95 -0
  404. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -0
  405. package/dist/cssm/components/CalendarHeader/CalendarHeader.css +1 -0
  406. package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts +16 -0
  407. package/dist/cssm/components/CalendarHeader/CalendarHeader.js +119 -0
  408. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -0
  409. package/dist/cssm/components/CalendarRange/CalendarRange.css +1 -0
  410. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +16 -0
  411. package/dist/cssm/components/CalendarRange/CalendarRange.js +197 -0
  412. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -0
  413. package/dist/cssm/components/CalendarTime/CalendarTime.css +1 -0
  414. package/dist/cssm/components/CalendarTime/CalendarTime.d.ts +11 -0
  415. package/dist/cssm/components/CalendarTime/CalendarTime.js +74 -0
  416. package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -0
  417. package/dist/cssm/components/Checkbox/Checkbox.js +1 -4
  418. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  419. package/dist/cssm/components/Chip/Chip.js +1 -3
  420. package/dist/cssm/components/Chip/Chip.js.map +1 -1
  421. package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts +1 -2
  422. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +4 -7
  423. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  424. package/dist/cssm/components/ConfigProvider/ConfigProvider.d.ts +4 -0
  425. package/dist/cssm/components/ConfigProvider/ConfigProvider.js +36 -20
  426. package/dist/cssm/components/ConfigProvider/ConfigProvider.js.map +1 -1
  427. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.d.ts +0 -7
  428. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js +2 -3
  429. package/dist/cssm/components/ConfigProvider/ConfigProviderContext.js.map +1 -1
  430. package/dist/cssm/components/ContentCard/ContentCard.js +3 -5
  431. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  432. package/dist/cssm/components/Counter/Counter.js +2 -2
  433. package/dist/cssm/components/Counter/Counter.js.map +1 -1
  434. package/dist/cssm/components/CustomScrollView/CustomScrollView.d.ts +1 -1
  435. package/dist/cssm/components/CustomScrollView/CustomScrollView.js.map +1 -1
  436. package/dist/cssm/components/CustomSelect/CustomSelect.css +1 -1
  437. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +10 -1
  438. package/dist/cssm/components/CustomSelect/CustomSelect.js +44 -15
  439. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  440. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.css +1 -1
  441. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +4 -1
  442. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +14 -5
  443. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  444. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +2 -4
  445. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
  446. package/dist/cssm/components/DateInput/DateInput.css +1 -0
  447. package/dist/cssm/components/DateInput/DateInput.d.ts +12 -0
  448. package/dist/cssm/components/DateInput/DateInput.js +262 -0
  449. package/dist/cssm/components/DateInput/DateInput.js.map +1 -0
  450. package/dist/cssm/components/DateRangeInput/DateRangeInput.css +1 -0
  451. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +18 -0
  452. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +282 -0
  453. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -0
  454. package/dist/cssm/components/Div/Div.css +1 -1
  455. package/dist/cssm/components/Div/Div.d.ts +1 -2
  456. package/dist/cssm/components/Div/Div.js +1 -3
  457. package/dist/cssm/components/Div/Div.js.map +1 -1
  458. package/dist/cssm/components/Footer/Footer.js +1 -3
  459. package/dist/cssm/components/Footer/Footer.js.map +1 -1
  460. package/dist/cssm/components/FormField/FormField.css +1 -1
  461. package/dist/cssm/components/FormItem/FormItem.js +1 -4
  462. package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
  463. package/dist/cssm/components/FormStatus/FormStatus.js +2 -7
  464. package/dist/cssm/components/FormStatus/FormStatus.js.map +1 -1
  465. package/dist/cssm/components/Group/Group.js +2 -4
  466. package/dist/cssm/components/Group/Group.js.map +1 -1
  467. package/dist/cssm/components/Header/Header.js +7 -20
  468. package/dist/cssm/components/Header/Header.js.map +1 -1
  469. package/dist/cssm/components/HorizontalCell/HorizontalCell.js +3 -8
  470. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  471. package/dist/cssm/components/IconButton/IconButton.d.ts +1 -1
  472. package/dist/cssm/components/InfoRow/InfoRow.js +1 -2
  473. package/dist/cssm/components/InfoRow/InfoRow.js.map +1 -1
  474. package/dist/cssm/components/InputLike/InputLike.css +1 -0
  475. package/dist/cssm/components/InputLike/InputLike.d.ts +10 -0
  476. package/dist/cssm/components/InputLike/InputLike.js +53 -0
  477. package/dist/cssm/components/InputLike/InputLike.js.map +1 -0
  478. package/dist/cssm/components/InputLike/InputLikeDivider.css +1 -0
  479. package/dist/cssm/components/InputLike/InputLikeDivider.d.ts +3 -0
  480. package/dist/cssm/components/InputLike/InputLikeDivider.js +14 -0
  481. package/dist/cssm/components/InputLike/InputLikeDivider.js.map +1 -0
  482. package/dist/cssm/components/LocaleProviderContext/LocaleProviderContext.d.ts +2 -0
  483. package/dist/cssm/components/LocaleProviderContext/LocaleProviderContext.js +3 -0
  484. package/dist/cssm/components/LocaleProviderContext/LocaleProviderContext.js.map +1 -0
  485. package/dist/cssm/components/ModalPage/ModalPage.js +4 -5
  486. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  487. package/dist/cssm/components/Pagination/Pagination.css +1 -0
  488. package/dist/cssm/components/Pagination/Pagination.d.ts +42 -0
  489. package/dist/cssm/components/Pagination/Pagination.js +130 -0
  490. package/dist/cssm/components/Pagination/Pagination.js.map +1 -0
  491. package/dist/cssm/components/PanelHeaderBack/PanelHeaderBack.d.ts +1 -1
  492. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +1 -3
  493. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  494. package/dist/cssm/components/PromoBanner/PromoBanner.js +1 -5
  495. package/dist/cssm/components/PromoBanner/PromoBanner.js.map +1 -1
  496. package/dist/cssm/components/Radio/Radio.js +1 -4
  497. package/dist/cssm/components/Radio/Radio.js.map +1 -1
  498. package/dist/cssm/components/Removable/Removable.js +8 -4
  499. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  500. package/dist/cssm/components/RichCell/RichCell.d.ts +3 -2
  501. package/dist/cssm/components/RichCell/RichCell.js +0 -1
  502. package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
  503. package/dist/cssm/components/Select/Select.css +1 -1
  504. package/dist/cssm/components/Select/Select.d.ts +1 -1
  505. package/dist/cssm/components/SelectMimicry/SelectMimicry.css +1 -0
  506. package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +5 -1
  507. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +11 -5
  508. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  509. package/dist/cssm/components/SimpleCell/SimpleCell.d.ts +1 -1
  510. package/dist/cssm/components/SimpleCell/SimpleCell.js +0 -1
  511. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  512. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.d.ts +0 -1
  513. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js +1 -3
  514. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -1
  515. package/dist/cssm/components/Spacing/Spacing.js +2 -2
  516. package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
  517. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js +3 -6
  518. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  519. package/dist/cssm/components/Tappable/Tappable.d.ts +3 -1
  520. package/dist/cssm/components/Tappable/Tappable.js +10 -11
  521. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  522. package/dist/cssm/components/TextTooltip/TextTooltip.js +1 -2
  523. package/dist/cssm/components/TextTooltip/TextTooltip.js.map +1 -1
  524. package/dist/cssm/components/Tooltip/Tooltip.js +1 -2
  525. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  526. package/dist/cssm/components/Typography/Caption/Caption.css +1 -1
  527. package/dist/cssm/components/Typography/Caption/Caption.d.ts +8 -4
  528. package/dist/cssm/components/Typography/Caption/Caption.js +10 -14
  529. package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
  530. package/dist/cssm/components/Typography/Subhead/Subhead.css +1 -1
  531. package/dist/cssm/components/Typography/Subhead/Subhead.d.ts +6 -1
  532. package/dist/cssm/components/Typography/Subhead/Subhead.js +13 -7
  533. package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
  534. package/dist/cssm/components/Typography/Title/Title.d.ts +3 -1
  535. package/dist/cssm/components/Typography/Title/Title.js +3 -2
  536. package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
  537. package/dist/cssm/components/UsersStack/UsersStack.js +2 -4
  538. package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
  539. package/dist/cssm/components/View/ViewInfinite.d.ts +2 -2
  540. package/dist/cssm/components/View/ViewInfinite.js +10 -11
  541. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  542. package/dist/cssm/helpers/typography.d.ts +1 -0
  543. package/dist/cssm/helpers/typography.js +18 -0
  544. package/dist/cssm/helpers/typography.js.map +1 -0
  545. package/dist/cssm/hooks/useBooleanState.d.ts +6 -0
  546. package/dist/cssm/hooks/useBooleanState.js +27 -0
  547. package/dist/cssm/hooks/useBooleanState.js.map +1 -0
  548. package/dist/cssm/hooks/useCalendar.d.ts +18 -0
  549. package/dist/cssm/hooks/useCalendar.js +64 -0
  550. package/dist/cssm/hooks/useCalendar.js.map +1 -0
  551. package/dist/cssm/hooks/useDateInput.d.ts +30 -0
  552. package/dist/cssm/hooks/useDateInput.js +163 -0
  553. package/dist/cssm/hooks/useDateInput.js.map +1 -0
  554. package/dist/cssm/hooks/useKeyboardInputTracker.d.ts +2 -0
  555. package/dist/cssm/hooks/useKeyboardInputTracker.js +11 -4
  556. package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
  557. package/dist/cssm/hooks/useOrientationChange.d.ts +7 -0
  558. package/dist/cssm/hooks/useOrientationChange.js +42 -0
  559. package/dist/cssm/hooks/useOrientationChange.js.map +1 -0
  560. package/dist/cssm/hooks/usePagination.d.ts +34 -0
  561. package/dist/cssm/hooks/usePagination.js +67 -0
  562. package/dist/cssm/hooks/usePagination.js.map +1 -0
  563. package/dist/cssm/index.d.ts +12 -2
  564. package/dist/cssm/index.js +11 -3
  565. package/dist/cssm/index.js.map +1 -1
  566. package/dist/cssm/lib/calendar.d.ts +14 -0
  567. package/dist/cssm/lib/calendar.js +111 -0
  568. package/dist/cssm/lib/calendar.js.map +1 -0
  569. package/dist/cssm/lib/utils.d.ts +2 -1
  570. package/dist/cssm/lib/utils.js +3 -0
  571. package/dist/cssm/lib/utils.js.map +1 -1
  572. package/dist/cssm/styles/components.css +5 -5
  573. package/dist/cssm/styles/themes.css +1 -1
  574. package/dist/cssm/tokenized/index.d.ts +14 -0
  575. package/dist/cssm/tokenized/index.js +7 -0
  576. package/dist/cssm/tokenized/index.js.map +1 -1
  577. package/dist/cssm/unstable/index.d.ts +6 -6
  578. package/dist/cssm/unstable/index.js +3 -3
  579. package/dist/cssm/unstable/index.js.map +1 -1
  580. package/dist/helpers/typography.d.ts +1 -0
  581. package/dist/helpers/typography.js +18 -0
  582. package/dist/helpers/typography.js.map +1 -0
  583. package/dist/hooks/useBooleanState.d.ts +6 -0
  584. package/dist/hooks/useBooleanState.js +27 -0
  585. package/dist/hooks/useBooleanState.js.map +1 -0
  586. package/dist/hooks/useCalendar.d.ts +18 -0
  587. package/dist/hooks/useCalendar.js +64 -0
  588. package/dist/hooks/useCalendar.js.map +1 -0
  589. package/dist/hooks/useDateInput.d.ts +30 -0
  590. package/dist/hooks/useDateInput.js +163 -0
  591. package/dist/hooks/useDateInput.js.map +1 -0
  592. package/dist/hooks/useKeyboardInputTracker.d.ts +2 -0
  593. package/dist/hooks/useKeyboardInputTracker.js +11 -4
  594. package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
  595. package/dist/hooks/useOrientationChange.d.ts +7 -0
  596. package/dist/hooks/useOrientationChange.js +42 -0
  597. package/dist/hooks/useOrientationChange.js.map +1 -0
  598. package/dist/hooks/usePagination.d.ts +34 -0
  599. package/dist/hooks/usePagination.js +67 -0
  600. package/dist/hooks/usePagination.js.map +1 -0
  601. package/dist/index.d.ts +12 -2
  602. package/dist/index.js +11 -3
  603. package/dist/index.js.map +1 -1
  604. package/dist/lib/calendar.d.ts +14 -0
  605. package/dist/lib/calendar.js +111 -0
  606. package/dist/lib/calendar.js.map +1 -0
  607. package/dist/lib/utils.d.ts +2 -1
  608. package/dist/lib/utils.js +3 -0
  609. package/dist/lib/utils.js.map +1 -1
  610. package/dist/tokenized/index.d.ts +14 -0
  611. package/dist/tokenized/index.js +7 -0
  612. package/dist/tokenized/index.js.map +1 -1
  613. package/dist/unstable/index.d.ts +6 -6
  614. package/dist/unstable/index.js +3 -3
  615. package/dist/unstable/index.js.map +1 -1
  616. package/dist/vkui.css +6 -6
  617. package/dist/vkui.css.map +1 -1
  618. package/package.json +14 -11
  619. package/src/components/ActionSheet/ActionSheet.tsx +3 -6
  620. package/src/components/ActionSheetItem/ActionSheetItem.tsx +3 -11
  621. package/src/components/Alert/Alert.tsx +3 -7
  622. package/src/components/Alert/Readme.md +4 -4
  623. package/src/components/AppRoot/Readme.md +2 -2
  624. package/src/components/Banner/Banner.tsx +1 -1
  625. package/src/components/Button/Button.css +26 -1
  626. package/src/components/Button/Button.tsx +6 -9
  627. package/src/components/ButtonGroup/ButtonGroup.css +52 -0
  628. package/src/components/ButtonGroup/ButtonGroup.tsx +48 -0
  629. package/src/components/ButtonGroup/Readme.md +311 -0
  630. package/src/components/Calendar/Calendar.css +31 -0
  631. package/src/components/Calendar/Calendar.tsx +184 -0
  632. package/src/components/Calendar/Readme.md +124 -0
  633. package/src/components/CalendarDay/CalendarDay.css +85 -0
  634. package/src/components/CalendarDay/CalendarDay.tsx +114 -0
  635. package/src/components/CalendarDays/CalendarDays.css +31 -0
  636. package/src/components/CalendarDays/CalendarDays.tsx +131 -0
  637. package/src/components/CalendarHeader/CalendarHeader.css +50 -0
  638. package/src/components/CalendarHeader/CalendarHeader.tsx +167 -0
  639. package/src/components/CalendarRange/CalendarRange.css +27 -0
  640. package/src/components/CalendarRange/CalendarRange.tsx +278 -0
  641. package/src/components/CalendarRange/Readme.md +85 -0
  642. package/src/components/CalendarTime/CalendarTime.css +18 -0
  643. package/src/components/CalendarTime/CalendarTime.tsx +88 -0
  644. package/src/components/Checkbox/Checkbox.tsx +2 -9
  645. package/src/components/Chip/Chip.tsx +2 -8
  646. package/src/components/ChipsSelect/ChipsSelect.tsx +6 -7
  647. package/src/components/ConfigProvider/ConfigProvider.tsx +36 -18
  648. package/src/components/ConfigProvider/ConfigProviderContext.tsx +9 -13
  649. package/src/components/ContentCard/ContentCard.tsx +3 -10
  650. package/src/components/Counter/Counter.tsx +2 -2
  651. package/src/components/CustomScrollView/CustomScrollView.tsx +1 -1
  652. package/src/components/CustomSelect/CustomSelect.css +0 -15
  653. package/src/components/CustomSelect/CustomSelect.tsx +46 -7
  654. package/src/components/CustomSelectDropdown/CustomSelectDropdown.css +13 -1
  655. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +12 -3
  656. package/src/components/CustomSelectOption/CustomSelectOption.tsx +3 -7
  657. package/src/components/CustomSelectOption/Readme.md +1 -1
  658. package/src/components/DateInput/DateInput.css +20 -0
  659. package/src/components/DateInput/DateInput.tsx +317 -0
  660. package/src/components/DateInput/Readme.md +116 -0
  661. package/src/components/DateRangeInput/DateRangeInput.css +16 -0
  662. package/src/components/DateRangeInput/DateRangeInput.tsx +350 -0
  663. package/src/components/DateRangeInput/Readme.md +96 -0
  664. package/src/components/Div/Div.css +1 -8
  665. package/src/components/Div/Div.tsx +2 -5
  666. package/src/components/Footer/Footer.tsx +2 -8
  667. package/src/components/Footer/Readme.md +1 -1
  668. package/src/components/FormField/FormField.css +33 -0
  669. package/src/components/FormItem/FormItem.tsx +3 -9
  670. package/src/components/FormStatus/FormStatus.tsx +3 -9
  671. package/src/components/Gallery/Readme.md +1 -1
  672. package/src/components/Group/Group.tsx +2 -4
  673. package/src/components/Header/Header.tsx +8 -11
  674. package/src/components/HorizontalCell/HorizontalCell.tsx +4 -12
  675. package/src/components/InfoRow/InfoRow.tsx +1 -1
  676. package/src/components/InputLike/InputLike.css +25 -0
  677. package/src/components/InputLike/InputLike.tsx +72 -0
  678. package/src/components/InputLike/InputLikeDivider.css +4 -0
  679. package/src/components/InputLike/InputLikeDivider.tsx +12 -0
  680. package/src/components/LocaleProviderContext/LocaleProviderContext.tsx +5 -0
  681. package/src/components/ModalPage/ModalPage.tsx +10 -4
  682. package/src/components/Pagination/Pagination.css +62 -0
  683. package/src/components/Pagination/Pagination.tsx +196 -0
  684. package/src/components/Pagination/Readme.md +110 -0
  685. package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +2 -8
  686. package/src/components/PopoutWrapper/Readme.md +1 -1
  687. package/src/components/Popper/Readme.md +1 -1
  688. package/src/components/PromoBanner/PromoBanner.tsx +3 -5
  689. package/src/components/Radio/Radio.tsx +2 -9
  690. package/src/components/Removable/Removable.tsx +9 -7
  691. package/src/components/RichCell/Readme.md +4 -4
  692. package/src/components/RichCell/RichCell.tsx +3 -6
  693. package/src/components/RichTooltip/Readme.md +1 -1
  694. package/src/components/Select/Select.css +5 -0
  695. package/src/components/SelectMimicry/SelectMimicry.css +10 -0
  696. package/src/components/SelectMimicry/SelectMimicry.tsx +13 -3
  697. package/src/components/SimpleCell/SimpleCell.tsx +1 -5
  698. package/src/components/SimpleCheckbox/SimpleCheckbox.tsx +0 -3
  699. package/src/components/Spacing/Spacing.tsx +2 -2
  700. package/src/components/SubnavigationButton/SubnavigationButton.tsx +3 -9
  701. package/src/components/Tabbar/Readme.md +1 -1
  702. package/src/components/Tappable/Tappable.tsx +12 -3
  703. package/src/components/TextTooltip/Readme.md +1 -1
  704. package/src/components/TextTooltip/TextTooltip.tsx +2 -6
  705. package/src/components/Tooltip/Tooltip.tsx +2 -6
  706. package/src/components/Typography/Caption/Caption.css +61 -19
  707. package/src/components/Typography/Caption/Caption.tsx +24 -15
  708. package/src/components/Typography/Caption/Readme.md +26 -48
  709. package/src/components/Typography/Subhead/Readme.md +18 -24
  710. package/src/components/Typography/Subhead/Subhead.css +22 -7
  711. package/src/components/Typography/Subhead/Subhead.tsx +25 -7
  712. package/src/components/Typography/Title/Title.tsx +6 -3
  713. package/src/components/UsersStack/Readme.md +1 -1
  714. package/src/components/UsersStack/UsersStack.tsx +3 -4
  715. package/src/components/View/Readme.md +1 -1
  716. package/src/components/View/ViewInfinite.tsx +3 -4
  717. package/src/helpers/typography.ts +24 -0
  718. package/src/hooks/useBooleanState.ts +19 -0
  719. package/src/hooks/useCalendar.ts +78 -0
  720. package/src/hooks/useDateInput.ts +213 -0
  721. package/src/hooks/useKeyboardInputTracker.ts +25 -8
  722. package/src/hooks/useOrientationChange.ts +39 -0
  723. package/src/hooks/usePagination.ts +96 -0
  724. package/src/index.ts +12 -2
  725. package/src/lib/calendar.ts +123 -0
  726. package/src/lib/utils.ts +4 -1
  727. package/src/styles/components.css +14 -0
  728. package/src/tokenized/index.ts +21 -0
  729. package/src/unstable/index.ts +6 -6
  730. package/postcss.config.js +0 -54
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { Card, CardProps } from "../Card/Card";
3
- import Caption from "../Typography/Caption/Caption";
3
+ import { Caption } from "../Typography/Caption/Caption";
4
4
  import Title from "../Typography/Title/Title";
5
5
  import Text from "../Typography/Text/Text";
6
6
  import Tappable, { TappableProps } from "../Tappable/Tappable";
@@ -121,12 +121,7 @@ const ContentCard: React.FC<ContentCardProps> = (props: ContentCardProps) => {
121
121
  )}
122
122
  <div vkuiClass="ContentCard__body">
123
123
  {hasReactNode(subtitle) && (
124
- <Caption
125
- caps
126
- vkuiClass="ContentCard__text"
127
- weight="semibold"
128
- level="3"
129
- >
124
+ <Caption caps vkuiClass="ContentCard__text" weight="1" level="3">
130
125
  {subtitle}
131
126
  </Caption>
132
127
  )}
@@ -141,9 +136,7 @@ const ContentCard: React.FC<ContentCardProps> = (props: ContentCardProps) => {
141
136
  </Text>
142
137
  )}
143
138
  {hasReactNode(caption) && (
144
- <Caption vkuiClass="ContentCard__text" weight="regular" level="1">
145
- {caption}
146
- </Caption>
139
+ <Caption vkuiClass="ContentCard__text">{caption}</Caption>
147
140
  )}
148
141
  </div>
149
142
  </Tappable>
@@ -2,7 +2,7 @@ import * as React from "react";
2
2
  import { classNames } from "../../lib/classNames";
3
3
  import { getClassName } from "../../helpers/getClassName";
4
4
  import { usePlatform } from "../../hooks/usePlatform";
5
- import Caption from "../Typography/Caption/Caption";
5
+ import { Caption } from "../Typography/Caption/Caption";
6
6
  import Text from "../Typography/Text/Text";
7
7
  import { VKCOM } from "../../lib/platform";
8
8
  import { hasReactNode } from "../../lib/utils";
@@ -29,7 +29,7 @@ const CounterTypography: React.FC<CounterTypographyProps> = ({
29
29
  return size === "s" ? (
30
30
  <Caption
31
31
  level="2"
32
- weight={platform === VKCOM ? "medium" : "regular"}
32
+ weight={platform === VKCOM ? "1" : undefined}
33
33
  {...restProps}
34
34
  />
35
35
  ) : (
@@ -5,7 +5,7 @@ import "./CustomScrollView.css";
5
5
 
6
6
  interface Props extends DOMProps {
7
7
  windowResize?: boolean;
8
- boxRef: React.Ref<HTMLDivElement>;
8
+ boxRef?: React.Ref<HTMLDivElement>;
9
9
  className?: HTMLDivElement["className"];
10
10
  }
11
11
 
@@ -22,18 +22,3 @@
22
22
  text-align: center;
23
23
  color: var(--text_secondary);
24
24
  }
25
-
26
- .CustomSelect__open.Select--mimicry:focus .FormField__border {
27
- border-color: var(--field_border);
28
- }
29
-
30
- .CustomSelect__open:not(.CustomSelect__open--popupDirectionTop)
31
- .FormField__border {
32
- border-bottom-left-radius: 0;
33
- border-bottom-right-radius: 0;
34
- }
35
-
36
- .CustomSelect__open.CustomSelect__open--popupDirectionTop .FormField__border {
37
- border-top-left-radius: 0;
38
- border-top-right-radius: 0;
39
- }
@@ -13,7 +13,7 @@ import { FormFieldProps } from "../FormField/FormField";
13
13
  import { HasPlatform } from "../../types";
14
14
  import Input from "../Input/Input";
15
15
  import { DropdownIcon } from "../DropdownIcon/DropdownIcon";
16
- import Caption from "../Typography/Caption/Caption";
16
+ import { Caption } from "../Typography/Caption/Caption";
17
17
  import { warnOnce } from "../../lib/warnOnce";
18
18
  import { defaultFilterFn } from "../../lib/select";
19
19
  import { is } from "../../lib/is";
@@ -62,6 +62,11 @@ const checkOptionsValueType = (options: CustomSelectOptionInterface[]) => {
62
62
 
63
63
  type SelectValue = React.SelectHTMLAttributes<HTMLSelectElement>["value"];
64
64
 
65
+ export enum SelectType {
66
+ Default = "default",
67
+ Plain = "plain",
68
+ }
69
+
65
70
  export interface CustomSelectOptionInterface {
66
71
  value: SelectValue;
67
72
  label: string;
@@ -135,6 +140,11 @@ export interface CustomSelectProps
135
140
  fetching?: boolean;
136
141
  onClose?: VoidFunction;
137
142
  onOpen?: VoidFunction;
143
+ icon?: React.ReactNode;
144
+ dropdownOffsetDistance?: number;
145
+ fixDropdownWidth?: boolean;
146
+ forceDropdownPortal?: boolean;
147
+ selectType?: SelectType;
138
148
  }
139
149
 
140
150
  type MouseEventHandler = (event: React.MouseEvent<HTMLElement>) => void;
@@ -151,6 +161,10 @@ class CustomSelect extends React.Component<
151
161
  options: [],
152
162
  emptyText: "Ничего не найдено",
153
163
  filterFn: defaultFilterFn,
164
+ icon: <DropdownIcon />,
165
+ dropdownOffsetDistance: 0,
166
+ fixDropdownWidth: true,
167
+ selectType: SelectType.Default,
154
168
  };
155
169
 
156
170
  public constructor(props: CustomSelectProps) {
@@ -345,9 +359,14 @@ class CustomSelect extends React.Component<
345
359
 
346
360
  scrollTo && this.scrollToElement(index);
347
361
 
348
- this.setState(() => ({
349
- focusedOptionIndex: index,
350
- }));
362
+ this.setState((prevState) =>
363
+ // Это оптимизация, прежде всего, под `onMouseOver`
364
+ prevState.focusedOptionIndex !== index
365
+ ? {
366
+ focusedOptionIndex: index,
367
+ }
368
+ : null
369
+ );
351
370
  };
352
371
 
353
372
  focusOption = (type: "next" | "prev") => {
@@ -586,7 +605,15 @@ class CustomSelect extends React.Component<
586
605
  disabled: option.disabled,
587
606
  onClick: this.handleOptionClick,
588
607
  onMouseDown: this.handleOptionDown,
589
- onMouseEnter: this.handleOptionHover,
608
+ // Используем `onMouseOver` вместо `onMouseEnter`.
609
+ // При параметре `searchable`, обновляется "ребёнок", из-за чего `onMouseEnter` не срабатывает в следующих кейсах:
610
+ // 1. До загрузки выпадающего списка, курсор мышки находится над произвольным элементом этого списка.
611
+ // > Лечение: только увод курсора мыши и возвращении его обратно вызывает событие `onMouseEnter` на этот элемент.
612
+ // 2. Если это тач-устройство.
613
+ // > Лечение: нужно нажать на какой-нибудь произвольный элемент списка, после чего `onMouseEnter` будет работать на соседние элементы,
614
+ // но не на тот, на который нажали в первый раз.
615
+ // Более подробно по ссылке https://github.com/facebook/react/issues/13956#issuecomment-1082055744
616
+ onMouseOver: this.handleOptionHover,
590
617
  })}
591
618
  </React.Fragment>
592
619
  );
@@ -631,6 +658,10 @@ class CustomSelect extends React.Component<
631
658
  onOpen,
632
659
  onClose,
633
660
  fetching,
661
+ icon,
662
+ dropdownOffsetDistance,
663
+ fixDropdownWidth,
664
+ forceDropdownPortal,
634
665
  ...restProps
635
666
  } = this.props;
636
667
  const selected = this.getSelectedItem();
@@ -640,7 +671,7 @@ class CustomSelect extends React.Component<
640
671
  stateOptions !== undefined && stateOptions.length > 0 ? (
641
672
  stateOptions.map(this.renderOption)
642
673
  ) : (
643
- <Caption level="1" weight="regular" vkuiClass="CustomSelect__empty">
674
+ <Caption vkuiClass="CustomSelect__empty">
644
675
  {this.props.emptyText}
645
676
  </Caption>
646
677
  );
@@ -671,6 +702,8 @@ class CustomSelect extends React.Component<
671
702
  vkuiClass={classNames({
672
703
  CustomSelect__open: opened,
673
704
  "CustomSelect__open--popupDirectionTop": isPopperDirectionTop,
705
+ "CustomSelect__open--not-adjacent":
706
+ (dropdownOffsetDistance as number) > 0,
674
707
  })}
675
708
  value={this.state.inputValue}
676
709
  onKeyDown={this.onInputKeyDown}
@@ -679,7 +712,7 @@ class CustomSelect extends React.Component<
679
712
  // TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.
680
713
  // @ts-ignore
681
714
  onClick={onClick}
682
- after={<DropdownIcon />}
715
+ after={icon}
683
716
  placeholder={restProps.placeholder}
684
717
  />
685
718
  ) : (
@@ -694,7 +727,10 @@ class CustomSelect extends React.Component<
694
727
  vkuiClass={classNames({
695
728
  CustomSelect__open: opened,
696
729
  "CustomSelect__open--popupDirectionTop": isPopperDirectionTop,
730
+ "CustomSelect__open--not-adjacent":
731
+ (dropdownOffsetDistance as number) > 0,
697
732
  })}
733
+ after={icon}
698
734
  >
699
735
  {label}
700
736
  </SelectMimicry>
@@ -722,6 +758,9 @@ class CustomSelect extends React.Component<
722
758
  onPlacementChange={this.onPlacementChange}
723
759
  onMouseLeave={this.resetFocusedOption}
724
760
  fetching={fetching}
761
+ offsetDistance={dropdownOffsetDistance}
762
+ sameWidth={fixDropdownWidth}
763
+ forcePortal={forceDropdownPortal}
725
764
  >
726
765
  {resolvedContent}
727
766
  </CustomSelectDropdown>
@@ -1,5 +1,4 @@
1
1
  .CustomSelectDropdown__options {
2
- width: 100%;
3
2
  overflow: hidden;
4
3
  background-color: var(--modal_card_background);
5
4
  box-sizing: border-box;
@@ -9,6 +8,14 @@
9
8
  border-radius: 0 0 8px 8px;
10
9
  }
11
10
 
11
+ .CustomSelectDropdown__options--same-width {
12
+ width: 100%;
13
+ }
14
+
15
+ :not(.CustomSelectDropdown__options--same-width) .CustomScrollView__box {
16
+ padding-right: 8px;
17
+ }
18
+
12
19
  .CustomSelectDropdown__options--popupDirectionTop {
13
20
  bottom: 100%;
14
21
  border-radius: 8px 8px 0 0;
@@ -17,6 +24,11 @@
17
24
  box-shadow: 0 -2px 2px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.03);
18
25
  }
19
26
 
27
+ .CustomSelectDropdown__options--not-adjacent {
28
+ border-radius: 8px;
29
+ border: solid 1px var(--field_border);
30
+ }
31
+
20
32
  .CustomSelectDropdown__CustomScrollView {
21
33
  max-height: 160px;
22
34
  }
@@ -11,8 +11,11 @@ export interface CustomSelectDropdownProps
11
11
  HasRef<HTMLDivElement> {
12
12
  targetRef: React.RefObject<HTMLElement>;
13
13
  placement?: Placement;
14
- scrollBoxRef: React.Ref<HTMLDivElement>;
14
+ scrollBoxRef?: React.Ref<HTMLDivElement>;
15
15
  fetching?: boolean;
16
+ offsetDistance?: number;
17
+ sameWidth?: boolean;
18
+ forcePortal?: boolean;
16
19
  onPlacementChange?: (placement?: Placement) => void;
17
20
  }
18
21
 
@@ -25,6 +28,9 @@ export const CustomSelectDropdown: React.FC<CustomSelectDropdownProps> = ({
25
28
  placement,
26
29
  fetching,
27
30
  onPlacementChange: parentOnPlacementChange,
31
+ offsetDistance = 0,
32
+ sameWidth = true,
33
+ forcePortal = true,
28
34
  ...restProps
29
35
  }) => {
30
36
  const [isTop, setIsTop] = React.useState(() => calcIsTop(placement));
@@ -40,13 +46,16 @@ export const CustomSelectDropdown: React.FC<CustomSelectDropdownProps> = ({
40
46
  return (
41
47
  <Popper
42
48
  targetRef={targetRef}
43
- offsetDistance={0}
44
- sameWidth
49
+ offsetDistance={offsetDistance}
50
+ sameWidth={sameWidth}
45
51
  onPlacementChange={onPlacementChange}
46
52
  placement={placement}
47
53
  vkuiClass={classNames("CustomSelectDropdown__options", {
48
54
  "CustomSelectDropdown__options--popupDirectionTop": isTop,
55
+ "CustomSelectDropdown__options--not-adjacent": offsetDistance > 0,
56
+ "CustomSelectDropdown__options--same-width": sameWidth,
49
57
  })}
58
+ forcePortal={forcePortal}
50
59
  {...restProps}
51
60
  >
52
61
  <CustomScrollView
@@ -3,7 +3,7 @@ import { Icon16Done } from "@vkontakte/icons";
3
3
  import { classNames } from "../../lib/classNames";
4
4
  import { hasReactNode } from "../../lib/utils";
5
5
  import Text from "../Typography/Text/Text";
6
- import Caption from "../Typography/Caption/Caption";
6
+ import { Caption } from "../Typography/Caption/Caption";
7
7
  import { HasRootRef } from "../../types";
8
8
  import { useAdaptivity } from "../../hooks/useAdaptivity";
9
9
  import { warnOnce } from "../../lib/warnOnce";
@@ -67,18 +67,14 @@ const CustomSelectOption: React.FC<CustomSelectOptionProps> = ({
67
67
  <div vkuiClass="CustomSelectOption__main">
68
68
  <div vkuiClass="CustomSelectOption__children">{children}</div>
69
69
  {hasReactNode(description) && (
70
- <Caption
71
- level="1"
72
- weight="regular"
73
- vkuiClass="CustomSelectOption__description"
74
- >
70
+ <Caption vkuiClass="CustomSelectOption__description">
75
71
  {description}
76
72
  </Caption>
77
73
  )}
78
74
  </div>
79
75
  <div vkuiClass="CustomSelectOption__after">
80
76
  {hasReactNode(after) && (
81
- <div className="CustomSelectOption__afterIn">{after}</div>
77
+ <div vkuiClass="CustomSelectOption__afterIn">{after}</div>
82
78
  )}
83
79
  {selected && (
84
80
  <Icon16Done vkuiClass="CustomSelectOption__selectedIcon" />
@@ -1,4 +1,4 @@
1
- Унивирсальный компонент для отрисовки option в кастомных селектах.
1
+ Универсальный компонент для отрисовки option в кастомных селектах.
2
2
  Используется внутри [CustomSelect](#!/CustomSelect), [ChipsSelect](#!/ChipsSelect).
3
3
 
4
4
  ```jsx { "props": { "layout": false, "iframe": false } }
@@ -0,0 +1,20 @@
1
+ .DateInput__input {
2
+ flex-grow: 1;
3
+ margin-left: 10px;
4
+ margin-right: 14px;
5
+ font-size: 16px;
6
+ z-index: 2;
7
+ cursor: text;
8
+ white-space: nowrap;
9
+ user-select: text;
10
+ font-variant-numeric: tabular-nums;
11
+ }
12
+
13
+ .DateInput__input-time-divider {
14
+ letter-spacing: 6px;
15
+ }
16
+
17
+ .DateInput--sizeY-compact .DateInput__input {
18
+ font-size: 15px;
19
+ margin-right: 22px;
20
+ }
@@ -0,0 +1,317 @@
1
+ import * as React from "react";
2
+ import { format, isMatch, parse } from "date-fns";
3
+ import { Icon16Clear, Icon20CalendarOutline } from "@vkontakte/icons";
4
+ import { Calendar, CalendarProps } from "../Calendar/Calendar";
5
+ import { Popper, Placement } from "../Popper/Popper";
6
+ import { multiRef } from "../../lib/utils";
7
+ import IconButton from "../IconButton/IconButton";
8
+ import { classNames } from "../../lib/classNames";
9
+ import { FormField } from "../FormField/FormField";
10
+ import { HasRootRef } from "../../types";
11
+ import { useDateInput } from "../../hooks/useDateInput";
12
+ import { InputLike } from "../InputLike/InputLike";
13
+ import { InputLikeDivider } from "../InputLike/InputLikeDivider";
14
+ import { useAdaptivity } from "../../hooks/useAdaptivity";
15
+ import { callMultiple } from "../../lib/callMultiple";
16
+ import "./DateInput.css";
17
+
18
+ export interface DateInputProps
19
+ extends Omit<
20
+ React.InputHTMLAttributes<HTMLDivElement>,
21
+ "value" | "onChange" | "size"
22
+ >,
23
+ Pick<
24
+ CalendarProps,
25
+ | "disablePast"
26
+ | "disableFuture"
27
+ | "enableTime"
28
+ | "shouldDisableDate"
29
+ | "onChange"
30
+ | "value"
31
+ | "doneButtonText"
32
+ | "weekStartsOn"
33
+ | "disablePickers"
34
+ | "changeHoursAriaLabel"
35
+ | "changeMinutesAriaLabel"
36
+ | "prevMonthAriaLabel"
37
+ | "nextMonthAriaLabel"
38
+ | "changeMonthAriaLabel"
39
+ | "changeYearAriaLabel"
40
+ | "changeDayAriaLabel"
41
+ | "showNeighboringMonth"
42
+ | "size"
43
+ >,
44
+ HasRootRef<HTMLDivElement> {
45
+ calendarPlacement?: Placement;
46
+ closeOnChange?: boolean;
47
+ clearFieldAriaLabel?: string;
48
+ showCalendarAriaLabel?: string;
49
+ }
50
+
51
+ const elementsConfig = (index: number) => {
52
+ let length = 2;
53
+ let min = 1;
54
+ let max = 0;
55
+
56
+ switch (index) {
57
+ case 0:
58
+ max = 31;
59
+ break;
60
+ case 1:
61
+ max = 12;
62
+ break;
63
+ case 2:
64
+ max = 2100;
65
+ min = 1900;
66
+ length = 4;
67
+ break;
68
+ case 3:
69
+ max = 23;
70
+ break;
71
+ case 4:
72
+ max = 59;
73
+ break;
74
+ }
75
+
76
+ return { length, min, max };
77
+ };
78
+
79
+ const getInternalValue = (value: CalendarProps["value"]) => {
80
+ const newValue = ["", "", "", "", ""];
81
+ if (value) {
82
+ newValue[0] = String(value.getDate()).padStart(2, "0");
83
+ newValue[1] = String(value.getMonth() + 1).padStart(2, "0");
84
+ newValue[2] = String(value.getFullYear()).padStart(4, "0");
85
+ newValue[3] = String(value.getHours()).padStart(2, "0");
86
+ newValue[4] = String(value.getMinutes()).padStart(2, "0");
87
+ }
88
+ return newValue;
89
+ };
90
+
91
+ export const DateInput: React.FC<DateInputProps> = ({
92
+ enableTime,
93
+ shouldDisableDate,
94
+ disableFuture,
95
+ disablePast,
96
+ value,
97
+ onChange,
98
+ calendarPlacement = "bottom-start",
99
+ style,
100
+ className,
101
+ doneButtonText,
102
+ closeOnChange = true,
103
+ disablePickers,
104
+ getRootRef,
105
+ name,
106
+ autoFocus,
107
+ disabled,
108
+ onClick,
109
+ onFocus,
110
+ prevMonthAriaLabel,
111
+ nextMonthAriaLabel,
112
+ showNeighboringMonth,
113
+ size,
114
+ changeMonthAriaLabel = "Изменить месяц",
115
+ changeYearAriaLabel = "Изменить год",
116
+ changeDayAriaLabel = "Изменить день",
117
+ changeHoursAriaLabel = "Изменить час",
118
+ changeMinutesAriaLabel = "Изменить минуту",
119
+ clearFieldAriaLabel = "Очистить поле",
120
+ showCalendarAriaLabel = "Показать календарь",
121
+ ...props
122
+ }) => {
123
+ const daysRef = React.useRef<HTMLSpanElement>(null);
124
+ const monthsRef = React.useRef<HTMLSpanElement>(null);
125
+ const yearsRef = React.useRef<HTMLSpanElement>(null);
126
+ const hoursRef = React.useRef<HTMLSpanElement>(null);
127
+ const minutesRef = React.useRef<HTMLSpanElement>(null);
128
+
129
+ const maxElement = enableTime ? 4 : 2;
130
+
131
+ const onInternalValueChange = React.useCallback(
132
+ (internalValue: string[]) => {
133
+ for (let i = 0; i <= maxElement; i += 1) {
134
+ if (internalValue[i].length < elementsConfig(i).length) {
135
+ return;
136
+ }
137
+ }
138
+
139
+ let formattedValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;
140
+ let mask = "dd.MM.yyyy";
141
+ if (enableTime) {
142
+ formattedValue += ` ${internalValue[3]}:${internalValue[4]}`;
143
+ mask += " HH:mm";
144
+ }
145
+
146
+ if (isMatch(formattedValue, mask)) {
147
+ onChange?.(parse(formattedValue, mask, value ?? new Date()));
148
+ }
149
+ },
150
+ [enableTime, maxElement, onChange, value]
151
+ );
152
+
153
+ const refs = React.useMemo(
154
+ () => [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],
155
+ [daysRef, monthsRef, yearsRef, hoursRef, minutesRef]
156
+ );
157
+
158
+ const {
159
+ rootRef,
160
+ calendarRef,
161
+ open,
162
+ openCalendar,
163
+ closeCalendar,
164
+ internalValue,
165
+ handleKeyDown,
166
+ setFocusedElement,
167
+ handleFieldEnter,
168
+ clear,
169
+ removeFocusFromField,
170
+ } = useDateInput({
171
+ maxElement,
172
+ refs,
173
+ autoFocus,
174
+ disabled,
175
+ elementsConfig,
176
+ onChange,
177
+ onInternalValueChange,
178
+ getInternalValue,
179
+ value,
180
+ });
181
+
182
+ const { sizeY } = useAdaptivity();
183
+
184
+ const onCalendarChange = React.useCallback(
185
+ (value?: Date | undefined) => {
186
+ onChange?.(value);
187
+ if (closeOnChange && !enableTime) {
188
+ removeFocusFromField();
189
+ }
190
+ },
191
+ [onChange, removeFocusFromField, closeOnChange, enableTime]
192
+ );
193
+
194
+ return (
195
+ <FormField
196
+ vkuiClass={classNames("DateInput", `DateInput--sizeY-${sizeY}`)}
197
+ style={style}
198
+ className={className}
199
+ getRootRef={multiRef(rootRef, getRootRef)}
200
+ after={
201
+ value ? (
202
+ <IconButton
203
+ hoverMode="opacity"
204
+ aria-label={clearFieldAriaLabel}
205
+ onClick={clear}
206
+ >
207
+ <Icon16Clear />
208
+ </IconButton>
209
+ ) : (
210
+ <IconButton
211
+ hoverMode="opacity"
212
+ aria-label={showCalendarAriaLabel}
213
+ onClick={openCalendar}
214
+ >
215
+ <Icon20CalendarOutline />
216
+ </IconButton>
217
+ )
218
+ }
219
+ disabled={disabled}
220
+ onClick={callMultiple(handleFieldEnter, onClick)}
221
+ onFocus={callMultiple(handleFieldEnter, onFocus)}
222
+ {...props}
223
+ >
224
+ <input
225
+ type="hidden"
226
+ name={name}
227
+ value={
228
+ value
229
+ ? format(value, enableTime ? "dd.MM.yyyy'T'HH:mm" : "dd.MM.yyyy")
230
+ : ""
231
+ }
232
+ />
233
+ <span vkuiClass="DateInput__input" onKeyDown={handleKeyDown}>
234
+ <InputLike
235
+ tabIndex={1}
236
+ length={2}
237
+ getRootRef={daysRef}
238
+ index={0}
239
+ onElementSelect={setFocusedElement}
240
+ value={internalValue[0]}
241
+ aria-label={changeDayAriaLabel}
242
+ />
243
+ <InputLikeDivider>.</InputLikeDivider>
244
+ <InputLike
245
+ length={2}
246
+ getRootRef={monthsRef}
247
+ index={1}
248
+ onElementSelect={setFocusedElement}
249
+ value={internalValue[1]}
250
+ aria-label={changeMonthAriaLabel}
251
+ />
252
+ <InputLikeDivider>.</InputLikeDivider>
253
+ <InputLike
254
+ length={4}
255
+ getRootRef={yearsRef}
256
+ index={2}
257
+ onElementSelect={setFocusedElement}
258
+ value={internalValue[2]}
259
+ aria-label={changeYearAriaLabel}
260
+ />
261
+ {enableTime && (
262
+ <React.Fragment>
263
+ <InputLikeDivider vkuiClass="DateInput__input-time-divider">
264
+ {" "}
265
+ </InputLikeDivider>
266
+ <InputLike
267
+ length={2}
268
+ getRootRef={hoursRef}
269
+ index={3}
270
+ onElementSelect={setFocusedElement}
271
+ value={internalValue[3]}
272
+ aria-label={changeHoursAriaLabel}
273
+ />
274
+ <InputLikeDivider>:</InputLikeDivider>
275
+ <InputLike
276
+ length={2}
277
+ getRootRef={minutesRef}
278
+ index={4}
279
+ onElementSelect={setFocusedElement}
280
+ value={internalValue[4]}
281
+ aria-label={changeMinutesAriaLabel}
282
+ />
283
+ </React.Fragment>
284
+ )}
285
+ </span>
286
+ {open && (
287
+ <Popper
288
+ targetRef={rootRef}
289
+ offsetDistance={8}
290
+ placement={calendarPlacement}
291
+ >
292
+ <Calendar
293
+ value={value}
294
+ onChange={onCalendarChange}
295
+ enableTime={enableTime}
296
+ disablePast={disablePast}
297
+ disableFuture={disableFuture}
298
+ shouldDisableDate={shouldDisableDate}
299
+ onClose={closeCalendar}
300
+ getRootRef={calendarRef}
301
+ doneButtonText={doneButtonText}
302
+ disablePickers={disablePickers}
303
+ changeHoursAriaLabel={changeHoursAriaLabel}
304
+ changeMinutesAriaLabel={changeMinutesAriaLabel}
305
+ prevMonthAriaLabel={prevMonthAriaLabel}
306
+ nextMonthAriaLabel={nextMonthAriaLabel}
307
+ changeMonthAriaLabel={changeMonthAriaLabel}
308
+ changeYearAriaLabel={changeYearAriaLabel}
309
+ changeDayAriaLabel={changeDayAriaLabel}
310
+ showNeighboringMonth={showNeighboringMonth}
311
+ size={size}
312
+ />
313
+ </Popper>
314
+ )}
315
+ </FormField>
316
+ );
317
+ };