@vkontakte/vkui 5.1.2 → 5.2.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 (281) hide show
  1. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  2. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  3. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +0 -4
  4. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  5. package/dist/cjs/components/ContentCard/ContentCard.js +2 -1
  6. package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
  7. package/dist/cjs/components/CustomSelect/CustomSelect.js +4 -3
  8. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  9. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  10. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +21 -72
  11. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  12. package/dist/cjs/components/DateInput/DateInput.d.ts +3 -2
  13. package/dist/cjs/components/DateInput/DateInput.js +3 -2
  14. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  15. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  16. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +3 -2
  17. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  18. package/dist/cjs/components/FixedLayout/FixedLayout.js +2 -2
  19. package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
  20. package/dist/cjs/components/FormField/FormField.js +6 -10
  21. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  22. package/dist/cjs/components/IconButton/IconButton.js +9 -0
  23. package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
  24. package/dist/cjs/components/ModalCard/ModalCard.d.ts +1 -1
  25. package/dist/cjs/components/ModalCard/ModalCard.js +4 -2
  26. package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
  27. package/dist/cjs/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  28. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +9 -2
  29. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  30. package/dist/cjs/components/ModalPage/ModalPage.d.ts +2 -6
  31. package/dist/cjs/components/ModalPage/ModalPage.js +13 -7
  32. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  33. package/dist/cjs/components/ModalRoot/ModalRoot.js +1 -2
  34. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  35. package/dist/cjs/components/Popper/Popper.d.ts +12 -9
  36. package/dist/cjs/components/Popper/Popper.js +92 -119
  37. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  38. package/dist/cjs/components/PopperArrow/PopperArrow.d.ts +15 -5
  39. package/dist/cjs/components/PopperArrow/PopperArrow.js +44 -17
  40. package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
  41. package/dist/cjs/components/Root/Root.js +2 -2
  42. package/dist/cjs/components/Root/Root.js.map +1 -1
  43. package/dist/cjs/components/SplitCol/SplitCol.d.ts +0 -6
  44. package/dist/cjs/components/SplitCol/SplitCol.js +3 -11
  45. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  46. package/dist/cjs/components/SplitCol/SplitColContext.d.ts +7 -0
  47. package/dist/cjs/components/SplitCol/SplitColContext.js +18 -0
  48. package/dist/cjs/components/SplitCol/SplitColContext.js.map +1 -0
  49. package/dist/cjs/components/TabbarItem/TabbarItem.js +9 -0
  50. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  51. package/dist/cjs/components/Tooltip/Tooltip.d.ts +3 -3
  52. package/dist/cjs/components/Tooltip/Tooltip.js +115 -151
  53. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  54. package/dist/cjs/components/View/View.js +2 -2
  55. package/dist/cjs/components/View/View.js.map +1 -1
  56. package/dist/cjs/components/View/ViewInfinite.d.ts +1 -1
  57. package/dist/cjs/components/View/ViewInfinite.js +2 -2
  58. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  59. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +10 -8
  60. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  61. package/dist/cjs/index.d.ts +37 -30
  62. package/dist/cjs/index.js +13 -13
  63. package/dist/cjs/index.js.map +1 -1
  64. package/dist/cjs/lib/floating/adapters.d.ts +2 -0
  65. package/dist/cjs/lib/floating/adapters.js +63 -0
  66. package/dist/cjs/lib/floating/adapters.js.map +1 -0
  67. package/dist/cjs/lib/floating/functions.d.ts +10 -0
  68. package/dist/cjs/lib/floating/functions.js +36 -0
  69. package/dist/cjs/lib/floating/functions.js.map +1 -0
  70. package/dist/cjs/lib/floating/index.d.ts +4 -0
  71. package/dist/cjs/lib/floating/index.js +75 -0
  72. package/dist/cjs/lib/floating/index.js.map +1 -0
  73. package/dist/cjs/lib/floating/types.d.ts +4 -0
  74. package/dist/cjs/lib/floating/types.js +6 -0
  75. package/dist/cjs/lib/floating/types.js.map +1 -0
  76. package/dist/cjs/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  77. package/dist/cjs/lib/warnOnce.d.ts +7 -0
  78. package/dist/cjs/lib/warnOnce.js +14 -0
  79. package/dist/cjs/lib/warnOnce.js.map +1 -1
  80. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  81. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  82. package/dist/components/ChipsSelect/ChipsSelect.js +0 -4
  83. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  84. package/dist/components/ContentCard/ContentCard.js +2 -1
  85. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  86. package/dist/components/CustomSelect/CustomSelect.js +5 -4
  87. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  88. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  89. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
  90. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  91. package/dist/components/DateInput/DateInput.d.ts +3 -2
  92. package/dist/components/DateInput/DateInput.js +3 -2
  93. package/dist/components/DateInput/DateInput.js.map +1 -1
  94. package/dist/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  95. package/dist/components/DateRangeInput/DateRangeInput.js +3 -2
  96. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  97. package/dist/components/FixedLayout/FixedLayout.js +1 -1
  98. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  99. package/dist/components/FormField/FormField.js +6 -10
  100. package/dist/components/FormField/FormField.js.map +1 -1
  101. package/dist/components/IconButton/IconButton.js +9 -0
  102. package/dist/components/IconButton/IconButton.js.map +1 -1
  103. package/dist/components/ModalCard/ModalCard.d.ts +1 -1
  104. package/dist/components/ModalCard/ModalCard.js +4 -2
  105. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  106. package/dist/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  107. package/dist/components/ModalCardBase/ModalCardBase.js +9 -2
  108. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  109. package/dist/components/ModalPage/ModalPage.d.ts +2 -6
  110. package/dist/components/ModalPage/ModalPage.js +13 -7
  111. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  112. package/dist/components/ModalRoot/ModalRoot.js +1 -2
  113. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  114. package/dist/components/Popper/Popper.d.ts +12 -9
  115. package/dist/components/Popper/Popper.js +93 -120
  116. package/dist/components/Popper/Popper.js.map +1 -1
  117. package/dist/components/PopperArrow/PopperArrow.d.ts +15 -5
  118. package/dist/components/PopperArrow/PopperArrow.js +40 -15
  119. package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
  120. package/dist/components/Root/Root.js +1 -1
  121. package/dist/components/Root/Root.js.map +1 -1
  122. package/dist/components/SplitCol/SplitCol.d.ts +0 -6
  123. package/dist/components/SplitCol/SplitCol.js +1 -7
  124. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  125. package/dist/components/SplitCol/SplitColContext.d.ts +7 -0
  126. package/dist/components/SplitCol/SplitColContext.js +9 -0
  127. package/dist/components/SplitCol/SplitColContext.js.map +1 -0
  128. package/dist/components/TabbarItem/TabbarItem.js +9 -0
  129. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  130. package/dist/components/Tooltip/Tooltip.d.ts +3 -3
  131. package/dist/components/Tooltip/Tooltip.js +115 -151
  132. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  133. package/dist/components/View/View.js +1 -1
  134. package/dist/components/View/View.js.map +1 -1
  135. package/dist/components/View/ViewInfinite.d.ts +1 -1
  136. package/dist/components/View/ViewInfinite.js +1 -1
  137. package/dist/components/View/ViewInfinite.js.map +1 -1
  138. package/dist/components/WriteBarIcon/WriteBarIcon.js +11 -9
  139. package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  140. package/dist/components.css +142 -2
  141. package/dist/components.css.map +1 -1
  142. package/dist/components.js.tmp +61921 -4
  143. package/dist/cssm/components/Alert/Alert.module.css +1 -1
  144. package/dist/cssm/components/Avatar/Avatar.module.css +1 -1
  145. package/dist/cssm/components/Button/Button.module.css +1 -1
  146. package/dist/cssm/components/CalendarDay/CalendarDay.module.css +1 -1
  147. package/dist/cssm/components/CalendarTime/CalendarTime.module.css +1 -1
  148. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  149. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  150. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.module.css +1 -1
  151. package/dist/cssm/components/Checkbox/Checkbox.module.css +1 -1
  152. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +0 -4
  153. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  154. package/dist/cssm/components/ContentCard/ContentCard.js +2 -1
  155. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  156. package/dist/cssm/components/CustomSelect/CustomSelect.js +5 -4
  157. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  158. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  159. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
  160. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  161. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.module.css +1 -1
  162. package/dist/cssm/components/DateInput/DateInput.d.ts +3 -2
  163. package/dist/cssm/components/DateInput/DateInput.js +4 -2
  164. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  165. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  166. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +3 -2
  167. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  168. package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -1
  169. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  170. package/dist/cssm/components/FormField/FormField.js +6 -10
  171. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  172. package/dist/cssm/components/FormField/FormField.module.css +1 -1
  173. package/dist/cssm/components/Header/Header.module.css +1 -1
  174. package/dist/cssm/components/HorizontalCell/HorizontalCell.module.css +1 -1
  175. package/dist/cssm/components/IconButton/IconButton.js +9 -0
  176. package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
  177. package/dist/cssm/components/InputLike/InputLike.module.css +1 -1
  178. package/dist/cssm/components/ModalCard/ModalCard.d.ts +1 -1
  179. package/dist/cssm/components/ModalCard/ModalCard.js +4 -2
  180. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  181. package/dist/cssm/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  182. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +9 -2
  183. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  184. package/dist/cssm/components/ModalPage/ModalPage.d.ts +2 -6
  185. package/dist/cssm/components/ModalPage/ModalPage.js +13 -7
  186. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  187. package/dist/cssm/components/ModalPage/ModalPage.module.css +1 -1
  188. package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -2
  189. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  190. package/dist/cssm/components/Pagination/Pagination.module.css +1 -1
  191. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +1 -1
  192. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.module.css +1 -1
  193. package/dist/cssm/components/Popper/Popper.d.ts +12 -9
  194. package/dist/cssm/components/Popper/Popper.js +93 -120
  195. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  196. package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +15 -5
  197. package/dist/cssm/components/PopperArrow/PopperArrow.js +40 -15
  198. package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
  199. package/dist/cssm/components/PopperArrow/PopperArrow.module.css +1 -1
  200. package/dist/cssm/components/Radio/Radio.module.css +1 -1
  201. package/dist/cssm/components/RichCell/RichCell.module.css +1 -1
  202. package/dist/cssm/components/Root/Root.js +1 -1
  203. package/dist/cssm/components/Root/Root.js.map +1 -1
  204. package/dist/cssm/components/Search/Search.module.css +1 -1
  205. package/dist/cssm/components/SegmentedControl/SegmentedControl.module.css +1 -1
  206. package/dist/cssm/components/Select/Select.module.css +1 -1
  207. package/dist/cssm/components/SimpleCell/SimpleCell.module.css +1 -1
  208. package/dist/cssm/components/SplitCol/SplitCol.d.ts +0 -6
  209. package/dist/cssm/components/SplitCol/SplitCol.js +1 -7
  210. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  211. package/dist/cssm/components/SplitCol/SplitColContext.d.ts +7 -0
  212. package/dist/cssm/components/SplitCol/SplitColContext.js +9 -0
  213. package/dist/cssm/components/SplitCol/SplitColContext.js.map +1 -0
  214. package/dist/cssm/components/TabbarItem/TabbarItem.js +9 -0
  215. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  216. package/dist/cssm/components/Tabs/Tabs.module.css +1 -1
  217. package/dist/cssm/components/Tooltip/Tooltip.d.ts +3 -3
  218. package/dist/cssm/components/Tooltip/Tooltip.js +121 -151
  219. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  220. package/dist/cssm/components/Tooltip/Tooltip.module.css +1 -1
  221. package/dist/cssm/components/Typography/Caption/Caption.module.css +1 -1
  222. package/dist/cssm/components/Typography/Footnote/Footnote.module.css +1 -1
  223. package/dist/cssm/components/Typography/Headline/Headline.module.css +1 -1
  224. package/dist/cssm/components/Typography/Paragraph/Paragraph.module.css +1 -1
  225. package/dist/cssm/components/Typography/Subhead/Subhead.module.css +1 -1
  226. package/dist/cssm/components/Typography/Text/Text.module.css +1 -1
  227. package/dist/cssm/components/Typography/Title/Title.module.css +1 -1
  228. package/dist/cssm/components/View/View.js +1 -1
  229. package/dist/cssm/components/View/View.js.map +1 -1
  230. package/dist/cssm/components/View/View.module.css +1 -1
  231. package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
  232. package/dist/cssm/components/View/ViewInfinite.js +1 -1
  233. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  234. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +11 -9
  235. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  236. package/dist/cssm/index.d.ts +37 -30
  237. package/dist/cssm/index.js +24 -18
  238. package/dist/cssm/index.js.map +1 -1
  239. package/dist/cssm/lib/floating/adapters.d.ts +2 -0
  240. package/dist/cssm/lib/floating/adapters.js +56 -0
  241. package/dist/cssm/lib/floating/adapters.js.map +1 -0
  242. package/dist/cssm/lib/floating/functions.d.ts +10 -0
  243. package/dist/cssm/lib/floating/functions.js +28 -0
  244. package/dist/cssm/lib/floating/functions.js.map +1 -0
  245. package/dist/cssm/lib/floating/index.d.ts +4 -0
  246. package/dist/cssm/lib/floating/index.js +4 -0
  247. package/dist/cssm/lib/floating/index.js.map +1 -0
  248. package/dist/cssm/lib/floating/types.d.ts +4 -0
  249. package/dist/cssm/lib/floating/types.js +2 -0
  250. package/dist/cssm/lib/floating/types.js.map +1 -0
  251. package/dist/cssm/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  252. package/dist/cssm/lib/warnOnce.d.ts +7 -0
  253. package/dist/cssm/lib/warnOnce.js +12 -0
  254. package/dist/cssm/lib/warnOnce.js.map +1 -1
  255. package/dist/cssm/styles/common.css +1 -1
  256. package/dist/cssm/styles/themes.css +1 -1
  257. package/dist/index.d.ts +37 -30
  258. package/dist/index.js +22 -16
  259. package/dist/index.js.map +1 -1
  260. package/dist/lib/floating/adapters.d.ts +2 -0
  261. package/dist/lib/floating/adapters.js +56 -0
  262. package/dist/lib/floating/adapters.js.map +1 -0
  263. package/dist/lib/floating/functions.d.ts +10 -0
  264. package/dist/lib/floating/functions.js +28 -0
  265. package/dist/lib/floating/functions.js.map +1 -0
  266. package/dist/lib/floating/index.d.ts +4 -0
  267. package/dist/lib/floating/index.js +4 -0
  268. package/dist/lib/floating/index.js.map +1 -0
  269. package/dist/lib/floating/types.d.ts +4 -0
  270. package/dist/lib/floating/types.js +2 -0
  271. package/dist/lib/floating/types.js.map +1 -0
  272. package/dist/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  273. package/dist/lib/warnOnce.d.ts +7 -0
  274. package/dist/lib/warnOnce.js +12 -0
  275. package/dist/lib/warnOnce.js.map +1 -1
  276. package/dist/stable.js.tmp +69 -21
  277. package/dist/vkui.css +143 -3
  278. package/dist/vkui.css.map +1 -1
  279. package/dist/vkui.js.tmp +61837 -0
  280. package/package.json +4 -5
  281. package/dist/cssm/styles/components.css +0 -3
@@ -1,91 +1,40 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _createForOfIteratorHelper from "@babel/runtime/helpers/createForOfIteratorHelper";
3
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
- var _excluded = ["children", "targetRef", "scrollBoxRef", "placement", "fetching", "onPlacementChange", "offsetDistance", "sameWidth", "forcePortal", "autoHideScrollbar", "autoHideScrollbarDelay", "observableRefs", "className"];
4
+ var _excluded = ["children", "targetRef", "scrollBoxRef", "placement", "fetching", "onPlacementChange", "offsetDistance", "sameWidth", "forcePortal", "autoHideScrollbar", "autoHideScrollbarDelay", "className"];
6
5
  import * as React from 'react';
7
6
  import { CustomScrollView } from '../CustomScrollView/CustomScrollView';
8
- import { classNames, noop } from '@vkontakte/vkjs';
7
+ import { classNames } from '@vkontakte/vkjs';
9
8
  import { Popper } from '../Popper/Popper';
10
9
  import { Spinner } from '../Spinner/Spinner';
11
- import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
12
10
  var calcIsTop = function calcIsTop(placement) {
13
11
  return placement === null || placement === void 0 ? void 0 : placement.includes('top');
14
12
  };
15
- function getObserverModifier(element) {
16
- return {
17
- name: 'customSelectChildrenChange',
18
- enabled: true,
19
- phase: 'main',
20
- fn: noop,
21
- effect: function effect(_ref) {
22
- var instance = _ref.instance;
23
- var observer = new MutationObserver(instance.forceUpdate);
24
- observer.observe(element, {
25
- childList: true,
26
- subtree: true
27
- });
28
- return function () {
29
- observer.disconnect();
30
- };
31
- }
32
- };
33
- }
34
- export var CustomSelectDropdown = function CustomSelectDropdown(_ref2) {
35
- var children = _ref2.children,
36
- targetRef = _ref2.targetRef,
37
- scrollBoxRef = _ref2.scrollBoxRef,
38
- placement = _ref2.placement,
39
- fetching = _ref2.fetching,
40
- parentOnPlacementChange = _ref2.onPlacementChange,
41
- _ref2$offsetDistance = _ref2.offsetDistance,
42
- offsetDistance = _ref2$offsetDistance === void 0 ? 0 : _ref2$offsetDistance,
43
- _ref2$sameWidth = _ref2.sameWidth,
44
- sameWidth = _ref2$sameWidth === void 0 ? true : _ref2$sameWidth,
45
- _ref2$forcePortal = _ref2.forcePortal,
46
- forcePortal = _ref2$forcePortal === void 0 ? true : _ref2$forcePortal,
47
- autoHideScrollbar = _ref2.autoHideScrollbar,
48
- autoHideScrollbarDelay = _ref2.autoHideScrollbarDelay,
49
- observableRefs = _ref2.observableRefs,
50
- className = _ref2.className,
51
- restProps = _objectWithoutProperties(_ref2, _excluded);
13
+ export var CustomSelectDropdown = function CustomSelectDropdown(_ref) {
14
+ var children = _ref.children,
15
+ targetRef = _ref.targetRef,
16
+ scrollBoxRef = _ref.scrollBoxRef,
17
+ placement = _ref.placement,
18
+ fetching = _ref.fetching,
19
+ parentOnPlacementChange = _ref.onPlacementChange,
20
+ _ref$offsetDistance = _ref.offsetDistance,
21
+ offsetDistance = _ref$offsetDistance === void 0 ? 0 : _ref$offsetDistance,
22
+ _ref$sameWidth = _ref.sameWidth,
23
+ sameWidth = _ref$sameWidth === void 0 ? true : _ref$sameWidth,
24
+ _ref$forcePortal = _ref.forcePortal,
25
+ forcePortal = _ref$forcePortal === void 0 ? true : _ref$forcePortal,
26
+ autoHideScrollbar = _ref.autoHideScrollbar,
27
+ autoHideScrollbarDelay = _ref.autoHideScrollbarDelay,
28
+ className = _ref.className,
29
+ restProps = _objectWithoutProperties(_ref, _excluded);
52
30
  var _React$useState = React.useState(function () {
53
31
  return calcIsTop(placement);
54
32
  }),
55
33
  _React$useState2 = _slicedToArray(_React$useState, 2),
56
34
  isTop = _React$useState2[0],
57
35
  setIsTop = _React$useState2[1];
58
- var _React$useState3 = React.useState([]),
59
- _React$useState4 = _slicedToArray(_React$useState3, 2),
60
- customModifiers = _React$useState4[0],
61
- setCustomModifiers = _React$useState4[1];
62
- useIsomorphicLayoutEffect(function () {
63
- if (!observableRefs) {
64
- return;
65
- }
66
- var customModifiers = [];
67
- if (Array.isArray(observableRefs)) {
68
- var _iterator = _createForOfIteratorHelper(observableRefs),
69
- _step;
70
- try {
71
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
72
- var ref = _step.value;
73
- if (ref !== null && ref !== void 0 && ref.current) {
74
- customModifiers.push(getObserverModifier(ref.current));
75
- }
76
- }
77
- } catch (err) {
78
- _iterator.e(err);
79
- } finally {
80
- _iterator.f();
81
- }
82
- } else if (observableRefs.current) {
83
- customModifiers.push(getObserverModifier(observableRefs.current));
84
- }
85
- setCustomModifiers(customModifiers);
86
- }, [observableRefs]);
87
- var onPlacementChange = React.useCallback(function (_ref3) {
88
- var placement = _ref3.placement;
36
+ var onPlacementChange = React.useCallback(function (_ref2) {
37
+ var placement = _ref2.placement;
89
38
  setIsTop(calcIsTop(placement));
90
39
  parentOnPlacementChange === null || parentOnPlacementChange === void 0 ? void 0 : parentOnPlacementChange(placement);
91
40
  }, [parentOnPlacementChange, setIsTop]);
@@ -97,7 +46,7 @@ export var CustomSelectDropdown = function CustomSelectDropdown(_ref2) {
97
46
  placement: placement,
98
47
  className: classNames("vkuiCustomSelectDropdown", offsetDistance === 0 && (isTop ? "vkuiCustomSelectDropdown--top" : "vkuiCustomSelectDropdown--bottom"), sameWidth && "vkuiCustomSelectDropdown--wide", className),
99
48
  forcePortal: forcePortal,
100
- customModifiers: customModifiers
49
+ autoUpdateOnTargetResize: true
101
50
  }, restProps), /*#__PURE__*/React.createElement(CustomScrollView, {
102
51
  boxRef: scrollBoxRef,
103
52
  className: "vkuiCustomSelectDropdown__in",
@@ -1 +1 @@
1
- {"version":3,"file":"CustomSelectDropdown.js","names":["React","CustomScrollView","classNames","noop","Popper","Spinner","useIsomorphicLayoutEffect","calcIsTop","placement","includes","getObserverModifier","element","name","enabled","phase","fn","effect","instance","observer","MutationObserver","forceUpdate","observe","childList","subtree","disconnect","CustomSelectDropdown","children","targetRef","scrollBoxRef","fetching","parentOnPlacementChange","onPlacementChange","offsetDistance","sameWidth","forcePortal","autoHideScrollbar","autoHideScrollbarDelay","observableRefs","className","restProps","useState","isTop","setIsTop","customModifiers","setCustomModifiers","Array","isArray","ref","current","push","useCallback"],"sources":["../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Modifier } from 'react-popper';\nimport { CustomScrollView } from '../CustomScrollView/CustomScrollView';\nimport { TrackerOptionsProps } from '../CustomScrollView/useTrackerVisibility';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { Popper, Placement } from '../Popper/Popper';\nimport { Spinner } from '../Spinner/Spinner';\nimport { HasRef } from '../../types';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport styles from './CustomSelectDropdown.module.css';\n\nexport interface CustomSelectDropdownProps\n extends React.HTMLAttributes<HTMLElement>,\n HasRef<HTMLDivElement>,\n TrackerOptionsProps {\n targetRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n scrollBoxRef?: React.Ref<HTMLDivElement>;\n observableRefs?: Array<React.RefObject<HTMLElement>> | React.RefObject<HTMLElement>;\n fetching?: boolean;\n offsetDistance?: number;\n sameWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange?: (placement?: Placement) => void;\n}\n\nconst calcIsTop = (placement?: Placement) => placement?.includes('top');\n\nfunction getObserverModifier<T extends HTMLElement>(element: T): Modifier<string> {\n return {\n name: 'customSelectChildrenChange',\n enabled: true,\n phase: 'main',\n fn: noop,\n effect: ({ instance }) => {\n const observer = new MutationObserver(instance.forceUpdate);\n\n observer.observe(element, {\n childList: true,\n subtree: true,\n });\n\n return () => {\n observer.disconnect();\n };\n },\n };\n}\n\nexport const CustomSelectDropdown = ({\n children,\n targetRef,\n scrollBoxRef,\n placement,\n fetching,\n onPlacementChange: parentOnPlacementChange,\n offsetDistance = 0,\n sameWidth = true,\n forcePortal = true,\n autoHideScrollbar,\n autoHideScrollbarDelay,\n observableRefs,\n className,\n ...restProps\n}: CustomSelectDropdownProps) => {\n const [isTop, setIsTop] = React.useState(() => calcIsTop(placement));\n const [customModifiers, setCustomModifiers] = React.useState<Array<Modifier<string>>>([]);\n\n useIsomorphicLayoutEffect(() => {\n if (!observableRefs) {\n return;\n }\n const customModifiers: Array<Modifier<string>> = [];\n\n if (Array.isArray(observableRefs)) {\n for (const ref of observableRefs) {\n if (ref?.current) {\n customModifiers.push(getObserverModifier(ref.current));\n }\n }\n } else if (observableRefs.current) {\n customModifiers.push(getObserverModifier(observableRefs.current));\n }\n\n setCustomModifiers(customModifiers);\n }, [observableRefs]);\n\n const onPlacementChange = React.useCallback(\n ({ placement }: { placement?: Placement }) => {\n setIsTop(calcIsTop(placement));\n parentOnPlacementChange?.(placement);\n },\n [parentOnPlacementChange, setIsTop],\n );\n\n return (\n <Popper\n targetRef={targetRef}\n offsetDistance={offsetDistance}\n sameWidth={sameWidth}\n onPlacementChange={onPlacementChange}\n placement={placement}\n className={classNames(\n styles['CustomSelectDropdown'],\n offsetDistance === 0 &&\n (isTop ? styles['CustomSelectDropdown--top'] : styles['CustomSelectDropdown--bottom']),\n sameWidth && styles['CustomSelectDropdown--wide'],\n className,\n )}\n forcePortal={forcePortal}\n customModifiers={customModifiers}\n {...restProps}\n >\n <CustomScrollView\n boxRef={scrollBoxRef}\n className={styles['CustomSelectDropdown__in']}\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n >\n {fetching ? (\n <div className={styles['CustomSelectDropdown__fetching']}>\n <Spinner size=\"small\" />\n </div>\n ) : (\n children\n )}\n </CustomScrollView>\n </Popper>\n );\n};\n"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,gBAAgB,QAAQ,sCAAsC;AAEvE,SAASC,UAAU,EAAEC,IAAI,QAAQ,iBAAiB;AAClD,SAASC,MAAM,QAAmB,kBAAkB;AACpD,SAASC,OAAO,QAAQ,oBAAoB;AAE5C,SAASC,yBAAyB,QAAQ,qCAAqC;AAkB/E,IAAMC,SAAS,GAAG,SAAZA,SAAS,CAAIC,SAAqB;EAAA,OAAKA,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEC,QAAQ,CAAC,KAAK,CAAC;AAAA;AAEvE,SAASC,mBAAmB,CAAwBC,OAAU,EAAoB;EAChF,OAAO;IACLC,IAAI,EAAE,4BAA4B;IAClCC,OAAO,EAAE,IAAI;IACbC,KAAK,EAAE,MAAM;IACbC,EAAE,EAAEZ,IAAI;IACRa,MAAM,EAAE,sBAAkB;MAAA,IAAfC,QAAQ,QAARA,QAAQ;MACjB,IAAMC,QAAQ,GAAG,IAAIC,gBAAgB,CAACF,QAAQ,CAACG,WAAW,CAAC;MAE3DF,QAAQ,CAACG,OAAO,CAACV,OAAO,EAAE;QACxBW,SAAS,EAAE,IAAI;QACfC,OAAO,EAAE;MACX,CAAC,CAAC;MAEF,OAAO,YAAM;QACXL,QAAQ,CAACM,UAAU,EAAE;MACvB,CAAC;IACH;EACF,CAAC;AACH;AAEA,OAAO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoB,QAeA;EAAA,IAd/BC,QAAQ,SAARA,QAAQ;IACRC,SAAS,SAATA,SAAS;IACTC,YAAY,SAAZA,YAAY;IACZpB,SAAS,SAATA,SAAS;IACTqB,QAAQ,SAARA,QAAQ;IACWC,uBAAuB,SAA1CC,iBAAiB;IAAA,6BACjBC,cAAc;IAAdA,cAAc,qCAAG,CAAC;IAAA,wBAClBC,SAAS;IAATA,SAAS,gCAAG,IAAI;IAAA,0BAChBC,WAAW;IAAXA,WAAW,kCAAG,IAAI;IAClBC,iBAAiB,SAAjBA,iBAAiB;IACjBC,sBAAsB,SAAtBA,sBAAsB;IACtBC,cAAc,SAAdA,cAAc;IACdC,SAAS,SAATA,SAAS;IACNC,SAAS;EAEZ,sBAA0BvC,KAAK,CAACwC,QAAQ,CAAC;MAAA,OAAMjC,SAAS,CAACC,SAAS,CAAC;IAAA,EAAC;IAAA;IAA7DiC,KAAK;IAAEC,QAAQ;EACtB,uBAA8C1C,KAAK,CAACwC,QAAQ,CAA0B,EAAE,CAAC;IAAA;IAAlFG,eAAe;IAAEC,kBAAkB;EAE1CtC,yBAAyB,CAAC,YAAM;IAC9B,IAAI,CAAC+B,cAAc,EAAE;MACnB;IACF;IACA,IAAMM,eAAwC,GAAG,EAAE;IAEnD,IAAIE,KAAK,CAACC,OAAO,CAACT,cAAc,CAAC,EAAE;MAAA,2CACfA,cAAc;QAAA;MAAA;QAAhC,oDAAkC;UAAA,IAAvBU,GAAG;UACZ,IAAIA,GAAG,aAAHA,GAAG,eAAHA,GAAG,CAAEC,OAAO,EAAE;YAChBL,eAAe,CAACM,IAAI,CAACvC,mBAAmB,CAACqC,GAAG,CAACC,OAAO,CAAC,CAAC;UACxD;QACF;MAAC;QAAA;MAAA;QAAA;MAAA;IACH,CAAC,MAAM,IAAIX,cAAc,CAACW,OAAO,EAAE;MACjCL,eAAe,CAACM,IAAI,CAACvC,mBAAmB,CAAC2B,cAAc,CAACW,OAAO,CAAC,CAAC;IACnE;IAEAJ,kBAAkB,CAACD,eAAe,CAAC;EACrC,CAAC,EAAE,CAACN,cAAc,CAAC,CAAC;EAEpB,IAAMN,iBAAiB,GAAG/B,KAAK,CAACkD,WAAW,CACzC,iBAA8C;IAAA,IAA3C1C,SAAS,SAATA,SAAS;IACVkC,QAAQ,CAACnC,SAAS,CAACC,SAAS,CAAC,CAAC;IAC9BsB,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAGtB,SAAS,CAAC;EACtC,CAAC,EACD,CAACsB,uBAAuB,EAAEY,QAAQ,CAAC,CACpC;EAED,oBACE,oBAAC,MAAM;IACL,SAAS,EAAEf,SAAU;IACrB,cAAc,EAAEK,cAAe;IAC/B,SAAS,EAAEC,SAAU;IACrB,iBAAiB,EAAEF,iBAAkB;IACrC,SAAS,EAAEvB,SAAU;IACrB,SAAS,EAAEN,UAAU,6BAEnB8B,cAAc,KAAK,CAAC,KACjBS,KAAK,uEAA+E,CAAC,EACxFR,SAAS,oCAAwC,EACjDK,SAAS,CACT;IACF,WAAW,EAAEJ,WAAY;IACzB,eAAe,EAAES;EAAgB,GAC7BJ,SAAS,gBAEb,oBAAC,gBAAgB;IACf,MAAM,EAAEX,YAAa;IACrB,SAAS,gCAAqC;IAC9C,iBAAiB,EAAEO,iBAAkB;IACrC,sBAAsB,EAAEC;EAAuB,GAE9CP,QAAQ,gBACP;IAAK,SAAS;EAA2C,gBACvD,oBAAC,OAAO;IAAC,IAAI,EAAC;EAAO,EAAG,CACpB,GAENH,QACD,CACgB,CACZ;AAEb,CAAC"}
1
+ {"version":3,"file":"CustomSelectDropdown.js","names":["React","CustomScrollView","classNames","Popper","Spinner","calcIsTop","placement","includes","CustomSelectDropdown","children","targetRef","scrollBoxRef","fetching","parentOnPlacementChange","onPlacementChange","offsetDistance","sameWidth","forcePortal","autoHideScrollbar","autoHideScrollbarDelay","className","restProps","useState","isTop","setIsTop","useCallback"],"sources":["../../../src/components/CustomSelectDropdown/CustomSelectDropdown.tsx"],"sourcesContent":["import * as React from 'react';\nimport { CustomScrollView } from '../CustomScrollView/CustomScrollView';\nimport { TrackerOptionsProps } from '../CustomScrollView/useTrackerVisibility';\nimport { classNames } from '@vkontakte/vkjs';\nimport { Popper } from '../Popper/Popper';\nimport { Spinner } from '../Spinner/Spinner';\nimport { HasRef } from '../../types';\nimport type { Placement } from '../../lib/floating';\nimport styles from './CustomSelectDropdown.module.css';\n\nexport interface CustomSelectDropdownProps\n extends React.HTMLAttributes<HTMLElement>,\n HasRef<HTMLDivElement>,\n TrackerOptionsProps {\n targetRef: React.RefObject<HTMLElement>;\n placement?: Placement;\n scrollBoxRef?: React.Ref<HTMLDivElement>;\n fetching?: boolean;\n offsetDistance?: number;\n sameWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange?: (placement?: Placement) => void;\n}\n\nconst calcIsTop = (placement?: Placement) => placement?.includes('top');\n\nexport const CustomSelectDropdown = ({\n children,\n targetRef,\n scrollBoxRef,\n placement,\n fetching,\n onPlacementChange: parentOnPlacementChange,\n offsetDistance = 0,\n sameWidth = true,\n forcePortal = true,\n autoHideScrollbar,\n autoHideScrollbarDelay,\n className,\n ...restProps\n}: CustomSelectDropdownProps) => {\n const [isTop, setIsTop] = React.useState(() => calcIsTop(placement));\n\n const onPlacementChange = React.useCallback(\n ({ placement }: { placement?: Placement }) => {\n setIsTop(calcIsTop(placement));\n parentOnPlacementChange?.(placement);\n },\n [parentOnPlacementChange, setIsTop],\n );\n\n return (\n <Popper\n targetRef={targetRef}\n offsetDistance={offsetDistance}\n sameWidth={sameWidth}\n onPlacementChange={onPlacementChange}\n placement={placement}\n className={classNames(\n styles['CustomSelectDropdown'],\n offsetDistance === 0 &&\n (isTop ? styles['CustomSelectDropdown--top'] : styles['CustomSelectDropdown--bottom']),\n sameWidth && styles['CustomSelectDropdown--wide'],\n className,\n )}\n forcePortal={forcePortal}\n autoUpdateOnTargetResize\n {...restProps}\n >\n <CustomScrollView\n boxRef={scrollBoxRef}\n className={styles['CustomSelectDropdown__in']}\n autoHideScrollbar={autoHideScrollbar}\n autoHideScrollbarDelay={autoHideScrollbarDelay}\n >\n {fetching ? (\n <div className={styles['CustomSelectDropdown__fetching']}>\n <Spinner size=\"small\" />\n </div>\n ) : (\n children\n )}\n </CustomScrollView>\n </Popper>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,gBAAgB,QAAQ,sCAAsC;AAEvE,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,OAAO,QAAQ,oBAAoB;AAmB5C,IAAMC,SAAS,GAAG,SAAZA,SAAS,CAAIC,SAAqB;EAAA,OAAKA,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEC,QAAQ,CAAC,KAAK,CAAC;AAAA;AAEvE,OAAO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoB,OAcA;EAAA,IAb/BC,QAAQ,QAARA,QAAQ;IACRC,SAAS,QAATA,SAAS;IACTC,YAAY,QAAZA,YAAY;IACZL,SAAS,QAATA,SAAS;IACTM,QAAQ,QAARA,QAAQ;IACWC,uBAAuB,QAA1CC,iBAAiB;IAAA,2BACjBC,cAAc;IAAdA,cAAc,oCAAG,CAAC;IAAA,sBAClBC,SAAS;IAATA,SAAS,+BAAG,IAAI;IAAA,wBAChBC,WAAW;IAAXA,WAAW,iCAAG,IAAI;IAClBC,iBAAiB,QAAjBA,iBAAiB;IACjBC,sBAAsB,QAAtBA,sBAAsB;IACtBC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,sBAA0BrB,KAAK,CAACsB,QAAQ,CAAC;MAAA,OAAMjB,SAAS,CAACC,SAAS,CAAC;IAAA,EAAC;IAAA;IAA7DiB,KAAK;IAAEC,QAAQ;EAEtB,IAAMV,iBAAiB,GAAGd,KAAK,CAACyB,WAAW,CACzC,iBAA8C;IAAA,IAA3CnB,SAAS,SAATA,SAAS;IACVkB,QAAQ,CAACnB,SAAS,CAACC,SAAS,CAAC,CAAC;IAC9BO,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAGP,SAAS,CAAC;EACtC,CAAC,EACD,CAACO,uBAAuB,EAAEW,QAAQ,CAAC,CACpC;EAED,oBACE,oBAAC,MAAM;IACL,SAAS,EAAEd,SAAU;IACrB,cAAc,EAAEK,cAAe;IAC/B,SAAS,EAAEC,SAAU;IACrB,iBAAiB,EAAEF,iBAAkB;IACrC,SAAS,EAAER,SAAU;IACrB,SAAS,EAAEJ,UAAU,6BAEnBa,cAAc,KAAK,CAAC,KACjBQ,KAAK,uEAA+E,CAAC,EACxFP,SAAS,oCAAwC,EACjDI,SAAS,CACT;IACF,WAAW,EAAEH,WAAY;IACzB,wBAAwB;EAAA,GACpBI,SAAS,gBAEb,oBAAC,gBAAgB;IACf,MAAM,EAAEV,YAAa;IACrB,SAAS,gCAAqC;IAC9C,iBAAiB,EAAEO,iBAAkB;IACrC,sBAAsB,EAAEC;EAAuB,GAE9CP,QAAQ,gBACP;IAAK,SAAS;EAA2C,gBACvD,oBAAC,OAAO;IAAC,IAAI,EAAC;EAAO,EAAG,CACpB,GAENH,QACD,CACgB,CACZ;AAEb,CAAC"}
@@ -1,10 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import { CalendarProps } from '../Calendar/Calendar';
3
- import { Placement } from '../Popper/Popper';
4
3
  import { FormFieldProps } from '../FormField/FormField';
5
4
  import { HasRootRef } from '../../types';
5
+ import type { PlacementWithAuto } from '../../lib/floating';
6
+ import '../InputLike/InputLikeDivider.module.css';
6
7
  export interface DateInputProps extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange' | 'size'>, Pick<CalendarProps, 'disablePast' | 'disableFuture' | 'enableTime' | 'shouldDisableDate' | 'onChange' | 'value' | 'doneButtonText' | 'weekStartsOn' | 'disablePickers' | 'changeHoursAriaLabel' | 'changeMinutesAriaLabel' | 'prevMonthAriaLabel' | 'nextMonthAriaLabel' | 'changeMonthAriaLabel' | 'changeYearAriaLabel' | 'changeDayAriaLabel' | 'showNeighboringMonth' | 'size' | 'viewDate' | 'onHeaderChange' | 'onNextMonth' | 'onPrevMonth' | 'prevMonthIcon' | 'nextMonthIcon'>, HasRootRef<HTMLDivElement>, FormFieldProps {
7
- calendarPlacement?: Placement;
8
+ calendarPlacement?: PlacementWithAuto;
8
9
  closeOnChange?: boolean;
9
10
  clearFieldAriaLabel?: string;
10
11
  showCalendarAriaLabel?: string;
@@ -6,11 +6,11 @@ import { format, isMatch, parse } from '../../lib/date';
6
6
  import { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';
7
7
  import { Calendar } from '../Calendar/Calendar';
8
8
  import { Popper } from '../Popper/Popper';
9
- import { multiRef } from '../../lib/utils';
10
9
  import { IconButton } from '../IconButton/IconButton';
11
10
  import { classNames } from '@vkontakte/vkjs';
12
11
  import { FormField } from '../FormField/FormField';
13
12
  import { useDateInput } from '../../hooks/useDateInput';
13
+ import { useExternRef } from '../../hooks/useExternRef';
14
14
  import { InputLike } from '../InputLike/InputLike';
15
15
  import { InputLikeDivider } from '../InputLike/InputLikeDivider';
16
16
  import { useAdaptivity } from '../../hooks/useAdaptivity';
@@ -157,6 +157,7 @@ export var DateInput = function DateInput(_ref) {
157
157
  removeFocusFromField = _useDateInput.removeFocusFromField;
158
158
  var _useAdaptivity = useAdaptivity(),
159
159
  sizeY = _useAdaptivity.sizeY;
160
+ var handleRootRef = useExternRef(rootRef, getRootRef);
160
161
  var onCalendarChange = React.useCallback(function (value) {
161
162
  onChange === null || onChange === void 0 ? void 0 : onChange(value);
162
163
  if (closeOnChange && !enableTime) {
@@ -166,7 +167,7 @@ export var DateInput = function DateInput(_ref) {
166
167
  return /*#__PURE__*/React.createElement(FormField, _extends({
167
168
  style: style,
168
169
  className: classNames("vkuiDateInput", getSizeYClassName("vkuiDateInput", sizeY), className),
169
- getRootRef: multiRef(rootRef, getRootRef),
170
+ getRootRef: handleRootRef,
170
171
  after: value ? /*#__PURE__*/React.createElement(IconButton, {
171
172
  hoverMode: "opacity",
172
173
  "aria-label": clearFieldAriaLabel,
@@ -1 +1 @@
1
- {"version":3,"file":"DateInput.js","names":["React","format","isMatch","parse","Icon16Clear","Icon20CalendarOutline","Calendar","Popper","multiRef","IconButton","classNames","FormField","useDateInput","InputLike","InputLikeDivider","useAdaptivity","callMultiple","getSizeYClassName","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","getHours","getMinutes","DateInput","enableTime","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","doneButtonText","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthAriaLabel","nextMonthAriaLabel","showNeighboringMonth","size","changeMonthAriaLabel","changeYearAriaLabel","changeDayAriaLabel","changeHoursAriaLabel","changeMinutesAriaLabel","clearFieldAriaLabel","showCalendarAriaLabel","viewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysRef","useRef","monthsRef","yearsRef","hoursRef","minutesRef","maxElement","onInternalValueChange","useCallback","internalValue","i","formattedValue","mask","Date","refs","useMemo","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","onCalendarChange"],"sources":["../../../src/components/DateInput/DateInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { format, isMatch, parse } from '../../lib/date';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { Calendar, CalendarProps } from '../Calendar/Calendar';\nimport { Popper, Placement } from '../Popper/Popper';\nimport { multiRef } from '../../lib/utils';\nimport { IconButton } from '../IconButton/IconButton';\nimport { classNames } from '@vkontakte/vkjs';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { HasRootRef } from '../../types';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { getSizeYClassName } from '../../helpers/getSizeYClassName';\nimport styles from './DateInput.module.css';\n\nexport interface DateInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange' | 'size'>,\n Pick<\n CalendarProps,\n | 'disablePast'\n | 'disableFuture'\n | 'enableTime'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'doneButtonText'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'changeHoursAriaLabel'\n | 'changeMinutesAriaLabel'\n | 'prevMonthAriaLabel'\n | 'nextMonthAriaLabel'\n | 'changeMonthAriaLabel'\n | 'changeYearAriaLabel'\n | 'changeDayAriaLabel'\n | 'showNeighboringMonth'\n | 'size'\n | 'viewDate'\n | 'onHeaderChange'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: Placement;\n closeOnChange?: boolean;\n clearFieldAriaLabel?: string;\n showCalendarAriaLabel?: string;\n disableCalendar?: boolean;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n max = 31;\n break;\n case 1:\n max = 12;\n break;\n case 2:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n case 3:\n max = 23;\n break;\n case 4:\n max = 59;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarProps['value']) => {\n const newValue = ['', '', '', '', ''];\n if (value) {\n newValue[0] = String(value.getDate()).padStart(2, '0');\n newValue[1] = String(value.getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value.getFullYear()).padStart(4, '0');\n newValue[3] = String(value.getHours()).padStart(2, '0');\n newValue[4] = String(value.getMinutes()).padStart(2, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateInput\n */\nexport const DateInput = ({\n enableTime,\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n doneButtonText,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n showNeighboringMonth,\n size,\n changeMonthAriaLabel = 'Изменить месяц',\n changeYearAriaLabel = 'Изменить год',\n changeDayAriaLabel = 'Изменить день',\n changeHoursAriaLabel = 'Изменить час',\n changeMinutesAriaLabel = 'Изменить минуту',\n clearFieldAriaLabel = 'Очистить поле',\n showCalendarAriaLabel = 'Показать календарь',\n viewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateInputProps) => {\n const daysRef = React.useRef<HTMLSpanElement>(null);\n const monthsRef = React.useRef<HTMLSpanElement>(null);\n const yearsRef = React.useRef<HTMLSpanElement>(null);\n const hoursRef = React.useRef<HTMLSpanElement>(null);\n const minutesRef = React.useRef<HTMLSpanElement>(null);\n\n const maxElement = enableTime ? 4 : 2;\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n for (let i = 0; i <= maxElement; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n return;\n }\n }\n\n let formattedValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n let mask = 'DD.MM.YYYY';\n if (enableTime) {\n formattedValue += ` ${internalValue[3]}:${internalValue[4]}`;\n mask += ' HH:mm';\n }\n\n if (isMatch(formattedValue, mask)) {\n onChange?.(parse(formattedValue, mask, value ?? new Date()));\n }\n },\n [enableTime, maxElement, onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY } = useAdaptivity();\n\n const onCalendarChange = React.useCallback(\n (value?: Date | undefined) => {\n onChange?.(value);\n if (closeOnChange && !enableTime) {\n removeFocusFromField();\n }\n },\n [onChange, removeFocusFromField, closeOnChange, enableTime],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(\n styles['DateInput'],\n getSizeYClassName(styles['DateInput'], sizeY),\n className,\n )}\n getRootRef={multiRef(rootRef, getRootRef)}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" aria-label={clearFieldAriaLabel} onClick={clear}>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" aria-label={showCalendarAriaLabel} onClick={openCalendar}>\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={value ? format(value, enableTime ? 'DD.MM.YYYYTHH:mm' : 'DD.MM.YYYY') : ''}\n />\n <span className={styles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n aria-label={changeDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n aria-label={changeMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n aria-label={changeYearAriaLabel}\n />\n {enableTime && (\n <React.Fragment>\n <InputLikeDivider className={styles['DateInput__input--time-divider']}>\n {' '}\n </InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={hoursRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n aria-label={changeHoursAriaLabel}\n />\n <InputLikeDivider>:</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={minutesRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n aria-label={changeMinutesAriaLabel}\n />\n </React.Fragment>\n )}\n </span>\n {open && !disableCalendar && (\n <Popper targetRef={rootRef} offsetDistance={8} placement={calendarPlacement}>\n <Calendar\n value={value}\n onChange={onCalendarChange}\n enableTime={enableTime}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n doneButtonText={doneButtonText}\n disablePickers={disablePickers}\n changeHoursAriaLabel={changeHoursAriaLabel}\n changeMinutesAriaLabel={changeMinutesAriaLabel}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n changeDayAriaLabel={changeDayAriaLabel}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n viewDate={viewDate}\n onHeaderChange={onHeaderChange}\n onNextMonth={onNextMonth}\n onPrevMonth={onPrevMonth}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"DateInput.js","names":["React","format","isMatch","parse","Icon16Clear","Icon20CalendarOutline","Calendar","Popper","IconButton","classNames","FormField","useDateInput","useExternRef","InputLike","InputLikeDivider","useAdaptivity","callMultiple","getSizeYClassName","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","getHours","getMinutes","DateInput","enableTime","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","doneButtonText","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthAriaLabel","nextMonthAriaLabel","showNeighboringMonth","size","changeMonthAriaLabel","changeYearAriaLabel","changeDayAriaLabel","changeHoursAriaLabel","changeMinutesAriaLabel","clearFieldAriaLabel","showCalendarAriaLabel","viewDate","onHeaderChange","onNextMonth","onPrevMonth","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysRef","useRef","monthsRef","yearsRef","hoursRef","minutesRef","maxElement","onInternalValueChange","useCallback","internalValue","i","formattedValue","mask","Date","refs","useMemo","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","handleRootRef","onCalendarChange"],"sources":["../../../src/components/DateInput/DateInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { format, isMatch, parse } from '../../lib/date';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { Calendar, CalendarProps } from '../Calendar/Calendar';\nimport { Popper } from '../Popper/Popper';\nimport { IconButton } from '../IconButton/IconButton';\nimport { classNames } from '@vkontakte/vkjs';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { HasRootRef } from '../../types';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { getSizeYClassName } from '../../helpers/getSizeYClassName';\nimport '../InputLike/InputLikeDivider.module.css'; // Reorder css\nimport styles from './DateInput.module.css';\n\nexport interface DateInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange' | 'size'>,\n Pick<\n CalendarProps,\n | 'disablePast'\n | 'disableFuture'\n | 'enableTime'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'doneButtonText'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'changeHoursAriaLabel'\n | 'changeMinutesAriaLabel'\n | 'prevMonthAriaLabel'\n | 'nextMonthAriaLabel'\n | 'changeMonthAriaLabel'\n | 'changeYearAriaLabel'\n | 'changeDayAriaLabel'\n | 'showNeighboringMonth'\n | 'size'\n | 'viewDate'\n | 'onHeaderChange'\n | 'onNextMonth'\n | 'onPrevMonth'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldAriaLabel?: string;\n showCalendarAriaLabel?: string;\n disableCalendar?: boolean;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n max = 31;\n break;\n case 1:\n max = 12;\n break;\n case 2:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n case 3:\n max = 23;\n break;\n case 4:\n max = 59;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarProps['value']) => {\n const newValue = ['', '', '', '', ''];\n if (value) {\n newValue[0] = String(value.getDate()).padStart(2, '0');\n newValue[1] = String(value.getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value.getFullYear()).padStart(4, '0');\n newValue[3] = String(value.getHours()).padStart(2, '0');\n newValue[4] = String(value.getMinutes()).padStart(2, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateInput\n */\nexport const DateInput = ({\n enableTime,\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n doneButtonText,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n showNeighboringMonth,\n size,\n changeMonthAriaLabel = 'Изменить месяц',\n changeYearAriaLabel = 'Изменить год',\n changeDayAriaLabel = 'Изменить день',\n changeHoursAriaLabel = 'Изменить час',\n changeMinutesAriaLabel = 'Изменить минуту',\n clearFieldAriaLabel = 'Очистить поле',\n showCalendarAriaLabel = 'Показать календарь',\n viewDate,\n onHeaderChange,\n onNextMonth,\n onPrevMonth,\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateInputProps) => {\n const daysRef = React.useRef<HTMLSpanElement>(null);\n const monthsRef = React.useRef<HTMLSpanElement>(null);\n const yearsRef = React.useRef<HTMLSpanElement>(null);\n const hoursRef = React.useRef<HTMLSpanElement>(null);\n const minutesRef = React.useRef<HTMLSpanElement>(null);\n\n const maxElement = enableTime ? 4 : 2;\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n for (let i = 0; i <= maxElement; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n return;\n }\n }\n\n let formattedValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n let mask = 'DD.MM.YYYY';\n if (enableTime) {\n formattedValue += ` ${internalValue[3]}:${internalValue[4]}`;\n mask += ' HH:mm';\n }\n\n if (isMatch(formattedValue, mask)) {\n onChange?.(parse(formattedValue, mask, value ?? new Date()));\n }\n },\n [enableTime, maxElement, onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n [daysRef, monthsRef, yearsRef, hoursRef, minutesRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (value?: Date | undefined) => {\n onChange?.(value);\n if (closeOnChange && !enableTime) {\n removeFocusFromField();\n }\n },\n [onChange, removeFocusFromField, closeOnChange, enableTime],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(\n styles['DateInput'],\n getSizeYClassName(styles['DateInput'], sizeY),\n className,\n )}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" aria-label={clearFieldAriaLabel} onClick={clear}>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" aria-label={showCalendarAriaLabel} onClick={openCalendar}>\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={value ? format(value, enableTime ? 'DD.MM.YYYYTHH:mm' : 'DD.MM.YYYY') : ''}\n />\n <span className={styles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n aria-label={changeDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n aria-label={changeMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n aria-label={changeYearAriaLabel}\n />\n {enableTime && (\n <React.Fragment>\n <InputLikeDivider className={styles['DateInput__input--time-divider']}>\n {' '}\n </InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={hoursRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n aria-label={changeHoursAriaLabel}\n />\n <InputLikeDivider>:</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={minutesRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n aria-label={changeMinutesAriaLabel}\n />\n </React.Fragment>\n )}\n </span>\n {open && !disableCalendar && (\n <Popper targetRef={rootRef} offsetDistance={8} placement={calendarPlacement}>\n <Calendar\n value={value}\n onChange={onCalendarChange}\n enableTime={enableTime}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n doneButtonText={doneButtonText}\n disablePickers={disablePickers}\n changeHoursAriaLabel={changeHoursAriaLabel}\n changeMinutesAriaLabel={changeMinutesAriaLabel}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n changeDayAriaLabel={changeDayAriaLabel}\n showNeighboringMonth={showNeighboringMonth}\n size={size}\n viewDate={viewDate}\n onHeaderChange={onHeaderChange}\n onNextMonth={onNextMonth}\n onPrevMonth={onPrevMonth}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import * as React from 'react';
2
2
  import { CalendarRangeProps } from '../CalendarRange/CalendarRange';
3
- import { Placement } from '../Popper/Popper';
4
3
  import { HasRootRef } from '../../types';
4
+ import type { PlacementWithAuto } from '../../lib/floating';
5
5
  import { FormFieldProps } from '../FormField/FormField';
6
6
  export interface DateRangeInputProps extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange'>, Pick<CalendarRangeProps, 'disablePast' | 'disableFuture' | 'shouldDisableDate' | 'onChange' | 'value' | 'weekStartsOn' | 'disablePickers' | 'prevMonthAriaLabel' | 'nextMonthAriaLabel' | 'changeMonthAriaLabel' | 'changeYearAriaLabel' | 'changeDayAriaLabel' | 'prevMonthIcon' | 'nextMonthIcon'>, HasRootRef<HTMLDivElement>, FormFieldProps {
7
- calendarPlacement?: Placement;
7
+ calendarPlacement?: PlacementWithAuto;
8
8
  closeOnChange?: boolean;
9
9
  clearFieldAriaLabel?: string;
10
10
  showCalendarAriaLabel?: string;
@@ -9,8 +9,8 @@ import { Popper } from '../Popper/Popper';
9
9
  import { IconButton } from '../IconButton/IconButton';
10
10
  import { useDateInput } from '../../hooks/useDateInput';
11
11
  import { useAdaptivity } from '../../hooks/useAdaptivity';
12
+ import { useExternRef } from '../../hooks/useExternRef';
12
13
  import { classNames } from '@vkontakte/vkjs';
13
- import { multiRef } from '../../lib/utils';
14
14
  import { FormField } from '../FormField/FormField';
15
15
  import { InputLike } from '../InputLike/InputLike';
16
16
  import { InputLikeDivider } from '../InputLike/InputLikeDivider';
@@ -171,6 +171,7 @@ export var DateRangeInput = function DateRangeInput(_ref) {
171
171
  removeFocusFromField = _useDateInput.removeFocusFromField;
172
172
  var _useAdaptivity = useAdaptivity(),
173
173
  sizeY = _useAdaptivity.sizeY;
174
+ var handleRootRef = useExternRef(rootRef, getRootRef);
174
175
  var onCalendarChange = React.useCallback(function (newValue) {
175
176
  onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
176
177
  if (closeOnChange && newValue !== null && newValue !== void 0 && newValue[1] && newValue[1] !== (value === null || value === void 0 ? void 0 : value[1])) {
@@ -180,7 +181,7 @@ export var DateRangeInput = function DateRangeInput(_ref) {
180
181
  return /*#__PURE__*/React.createElement(FormField, _extends({
181
182
  style: style,
182
183
  className: classNames("vkuiDateRangeInput", getSizeYClassName("vkuiDateRangeInput", sizeY), className),
183
- getRootRef: multiRef(rootRef, getRootRef),
184
+ getRootRef: handleRootRef,
184
185
  after: value ? /*#__PURE__*/React.createElement(IconButton, {
185
186
  hoverMode: "opacity",
186
187
  "aria-label": clearFieldAriaLabel,
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangeInput.js","names":["React","format","isMatch","parse","isAfter","Icon16Clear","Icon20CalendarOutline","CalendarRange","Popper","IconButton","useDateInput","useAdaptivity","classNames","multiRef","FormField","InputLike","InputLikeDivider","callMultiple","getSizeYClassName","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","DateRangeInput","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthAriaLabel","nextMonthAriaLabel","changeDayAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","changeStartDayAriaLabel","changeStartMonthAriaLabel","changeStartYearAriaLabel","changeEndDayAriaLabel","changeEndMonthAriaLabel","changeEndYearAriaLabel","clearFieldAriaLabel","showCalendarAriaLabel","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysStartRef","useRef","monthsStartRef","yearsStartRef","daysEndRef","monthsEndRef","yearsEndRef","onInternalValueChange","useCallback","internalValue","isStartValid","isEndValid","i","formattedStartValue","formattedEndValue","mask","valueExists","Array","isArray","now","Date","start","end","refs","useMemo","maxElement","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","onCalendarChange"],"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { format, isMatch, parse, isAfter } from '../../lib/date';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { CalendarRange, CalendarRangeProps } from '../CalendarRange/CalendarRange';\nimport { Popper, Placement } from '../Popper/Popper';\nimport { IconButton } from '../IconButton/IconButton';\nimport { HasRootRef } from '../../types';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { classNames } from '@vkontakte/vkjs';\nimport { multiRef } from '../../lib/utils';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { getSizeYClassName } from '../../helpers/getSizeYClassName';\nimport styles from './DateRangeInput.module.css';\nimport dateInputStyles from '../DateInput/DateInput.module.css';\n\nexport interface DateRangeInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange'>,\n Pick<\n CalendarRangeProps,\n | 'disablePast'\n | 'disableFuture'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'prevMonthAriaLabel'\n | 'nextMonthAriaLabel'\n | 'changeMonthAriaLabel'\n | 'changeYearAriaLabel'\n | 'changeDayAriaLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: Placement;\n closeOnChange?: boolean;\n clearFieldAriaLabel?: string;\n showCalendarAriaLabel?: string;\n changeStartDayAriaLabel?: string;\n changeStartMonthAriaLabel?: string;\n changeStartYearAriaLabel?: string;\n changeEndDayAriaLabel?: string;\n changeEndMonthAriaLabel?: string;\n changeEndYearAriaLabel?: string;\n disableCalendar?: boolean;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n case 3:\n max = 31;\n break;\n case 1:\n case 4:\n max = 12;\n break;\n case 2:\n case 5:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarRangeProps['value']) => {\n const newValue = ['', '', '', '', '', ''];\n if (value?.[0]) {\n newValue[0] = String(value[0].getDate()).padStart(2, '0');\n newValue[1] = String(value[0].getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value[0].getFullYear()).padStart(4, '0');\n }\n if (value?.[1]) {\n newValue[3] = String(value[1].getDate()).padStart(2, '0');\n newValue[4] = String(value[1].getMonth() + 1).padStart(2, '0');\n newValue[5] = String(value[1].getFullYear()).padStart(4, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateRangeInput\n */\nexport const DateRangeInput = ({\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeDayAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n changeStartDayAriaLabel = 'Изменить день начала',\n changeStartMonthAriaLabel = 'Изменить месяц начала',\n changeStartYearAriaLabel = 'Изменить год начала',\n changeEndDayAriaLabel = 'Изменить день окончания',\n changeEndMonthAriaLabel = 'Изменить месяц окончания',\n changeEndYearAriaLabel = 'Изменить год окончания',\n clearFieldAriaLabel = 'Очистить поле',\n showCalendarAriaLabel = 'Показать календарь',\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateRangeInputProps) => {\n const daysStartRef = React.useRef<HTMLSpanElement>(null);\n const monthsStartRef = React.useRef<HTMLSpanElement>(null);\n const yearsStartRef = React.useRef<HTMLSpanElement>(null);\n const daysEndRef = React.useRef<HTMLSpanElement>(null);\n const monthsEndRef = React.useRef<HTMLSpanElement>(null);\n const yearsEndRef = React.useRef<HTMLSpanElement>(null);\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n let isStartValid = true;\n let isEndValid = true;\n for (let i = 0; i <= 2; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isStartValid = false;\n }\n }\n for (let i = 3; i <= 5; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isEndValid = false;\n }\n }\n const formattedStartValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n const formattedEndValue = `${internalValue[3]}.${internalValue[4]}.${internalValue[5]}`;\n const mask = 'dd.MM.yyyy';\n\n if (!isMatch(formattedStartValue, mask)) {\n isStartValid = false;\n }\n if (!isMatch(formattedEndValue, mask)) {\n isEndValid = false;\n }\n\n if (!isStartValid && !isEndValid) {\n return;\n }\n\n const valueExists = Array.isArray(value);\n const now = new Date();\n const start = isStartValid\n ? parse(formattedStartValue, mask, (valueExists && value?.[0]) || now)\n : null;\n const end = isEndValid\n ? parse(formattedEndValue, mask, (valueExists && value?.[1]) || now)\n : null;\n if (start && end && isAfter(end, start)) {\n onChange?.([start, end]);\n }\n },\n [onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement: 5,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY } = useAdaptivity();\n\n const onCalendarChange = React.useCallback(\n (newValue?: Array<Date | null> | undefined) => {\n onChange?.(newValue);\n if (closeOnChange && newValue?.[1] && newValue[1] !== value?.[1]) {\n removeFocusFromField();\n }\n },\n [onChange, closeOnChange, value, removeFocusFromField],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(\n styles['DateRangeInput'],\n getSizeYClassName(styles['DateRangeInput'], sizeY),\n className,\n )}\n getRootRef={multiRef(rootRef, getRootRef)}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" aria-label={clearFieldAriaLabel} onClick={clear}>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" aria-label={showCalendarAriaLabel} onClick={openCalendar}>\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? `${value[0] ? format(value[0], 'DD.MM.YYYY') : ''} - ${\n value[1] ? format(value[1], 'DD.MM.YYYY') : ''\n }`\n : ''\n }\n />\n <span className={dateInputStyles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n aria-label={changeStartDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n aria-label={changeStartMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n aria-label={changeStartYearAriaLabel}\n />\n <InputLikeDivider>{' — '}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n aria-label={changeEndDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n aria-label={changeEndMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n aria-label={changeEndYearAriaLabel}\n />\n </span>\n {open && !disableCalendar && (\n <Popper targetRef={rootRef} offsetDistance={8} placement={calendarPlacement}>\n <CalendarRange\n value={value}\n onChange={onCalendarChange}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n disablePickers={disablePickers}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n changeDayAriaLabel={changeDayAriaLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"DateRangeInput.js","names":["React","format","isMatch","parse","isAfter","Icon16Clear","Icon20CalendarOutline","CalendarRange","Popper","IconButton","useDateInput","useAdaptivity","useExternRef","classNames","FormField","InputLike","InputLikeDivider","callMultiple","getSizeYClassName","elementsConfig","index","length","min","max","getInternalValue","value","newValue","String","getDate","padStart","getMonth","getFullYear","DateRangeInput","shouldDisableDate","disableFuture","disablePast","onChange","calendarPlacement","style","className","closeOnChange","disablePickers","getRootRef","name","autoFocus","disabled","onClick","onFocus","prevMonthAriaLabel","nextMonthAriaLabel","changeDayAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","changeStartDayAriaLabel","changeStartMonthAriaLabel","changeStartYearAriaLabel","changeEndDayAriaLabel","changeEndMonthAriaLabel","changeEndYearAriaLabel","clearFieldAriaLabel","showCalendarAriaLabel","prevMonthIcon","nextMonthIcon","disableCalendar","props","daysStartRef","useRef","monthsStartRef","yearsStartRef","daysEndRef","monthsEndRef","yearsEndRef","onInternalValueChange","useCallback","internalValue","isStartValid","isEndValid","i","formattedStartValue","formattedEndValue","mask","valueExists","Array","isArray","now","Date","start","end","refs","useMemo","maxElement","rootRef","calendarRef","open","openCalendar","closeCalendar","handleKeyDown","setFocusedElement","handleFieldEnter","clear","removeFocusFromField","sizeY","handleRootRef","onCalendarChange"],"sources":["../../../src/components/DateRangeInput/DateRangeInput.tsx"],"sourcesContent":["import * as React from 'react';\nimport { format, isMatch, parse, isAfter } from '../../lib/date';\nimport { Icon16Clear, Icon20CalendarOutline } from '@vkontakte/icons';\nimport { CalendarRange, CalendarRangeProps } from '../CalendarRange/CalendarRange';\nimport { Popper } from '../Popper/Popper';\nimport { IconButton } from '../IconButton/IconButton';\nimport { HasRootRef } from '../../types';\nimport type { PlacementWithAuto } from '../../lib/floating';\nimport { useDateInput } from '../../hooks/useDateInput';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { classNames } from '@vkontakte/vkjs';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport { InputLike } from '../InputLike/InputLike';\nimport { InputLikeDivider } from '../InputLike/InputLikeDivider';\nimport { callMultiple } from '../../lib/callMultiple';\nimport { getSizeYClassName } from '../../helpers/getSizeYClassName';\nimport styles from './DateRangeInput.module.css';\nimport dateInputStyles from '../DateInput/DateInput.module.css';\n\nexport interface DateRangeInputProps\n extends Omit<React.InputHTMLAttributes<HTMLDivElement>, 'value' | 'onChange'>,\n Pick<\n CalendarRangeProps,\n | 'disablePast'\n | 'disableFuture'\n | 'shouldDisableDate'\n | 'onChange'\n | 'value'\n | 'weekStartsOn'\n | 'disablePickers'\n | 'prevMonthAriaLabel'\n | 'nextMonthAriaLabel'\n | 'changeMonthAriaLabel'\n | 'changeYearAriaLabel'\n | 'changeDayAriaLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n HasRootRef<HTMLDivElement>,\n FormFieldProps {\n calendarPlacement?: PlacementWithAuto;\n closeOnChange?: boolean;\n clearFieldAriaLabel?: string;\n showCalendarAriaLabel?: string;\n changeStartDayAriaLabel?: string;\n changeStartMonthAriaLabel?: string;\n changeStartYearAriaLabel?: string;\n changeEndDayAriaLabel?: string;\n changeEndMonthAriaLabel?: string;\n changeEndYearAriaLabel?: string;\n disableCalendar?: boolean;\n}\n\nconst elementsConfig = (index: number) => {\n let length = 2;\n let min = 1;\n let max = 0;\n\n switch (index) {\n case 0:\n case 3:\n max = 31;\n break;\n case 1:\n case 4:\n max = 12;\n break;\n case 2:\n case 5:\n max = 2100;\n min = 1900;\n length = 4;\n break;\n }\n\n return { length, min, max };\n};\n\nconst getInternalValue = (value: CalendarRangeProps['value']) => {\n const newValue = ['', '', '', '', '', ''];\n if (value?.[0]) {\n newValue[0] = String(value[0].getDate()).padStart(2, '0');\n newValue[1] = String(value[0].getMonth() + 1).padStart(2, '0');\n newValue[2] = String(value[0].getFullYear()).padStart(4, '0');\n }\n if (value?.[1]) {\n newValue[3] = String(value[1].getDate()).padStart(2, '0');\n newValue[4] = String(value[1].getMonth() + 1).padStart(2, '0');\n newValue[5] = String(value[1].getFullYear()).padStart(4, '0');\n }\n return newValue;\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/DateRangeInput\n */\nexport const DateRangeInput = ({\n shouldDisableDate,\n disableFuture,\n disablePast,\n value,\n onChange,\n calendarPlacement = 'bottom-start',\n style,\n className,\n closeOnChange = true,\n disablePickers,\n getRootRef,\n name,\n autoFocus,\n disabled,\n onClick,\n onFocus,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeDayAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n changeStartDayAriaLabel = 'Изменить день начала',\n changeStartMonthAriaLabel = 'Изменить месяц начала',\n changeStartYearAriaLabel = 'Изменить год начала',\n changeEndDayAriaLabel = 'Изменить день окончания',\n changeEndMonthAriaLabel = 'Изменить месяц окончания',\n changeEndYearAriaLabel = 'Изменить год окончания',\n clearFieldAriaLabel = 'Очистить поле',\n showCalendarAriaLabel = 'Показать календарь',\n prevMonthIcon,\n nextMonthIcon,\n disableCalendar = false,\n ...props\n}: DateRangeInputProps) => {\n const daysStartRef = React.useRef<HTMLSpanElement>(null);\n const monthsStartRef = React.useRef<HTMLSpanElement>(null);\n const yearsStartRef = React.useRef<HTMLSpanElement>(null);\n const daysEndRef = React.useRef<HTMLSpanElement>(null);\n const monthsEndRef = React.useRef<HTMLSpanElement>(null);\n const yearsEndRef = React.useRef<HTMLSpanElement>(null);\n\n const onInternalValueChange = React.useCallback(\n (internalValue: string[]) => {\n let isStartValid = true;\n let isEndValid = true;\n for (let i = 0; i <= 2; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isStartValid = false;\n }\n }\n for (let i = 3; i <= 5; i += 1) {\n if (internalValue[i].length < elementsConfig(i).length) {\n isEndValid = false;\n }\n }\n const formattedStartValue = `${internalValue[0]}.${internalValue[1]}.${internalValue[2]}`;\n const formattedEndValue = `${internalValue[3]}.${internalValue[4]}.${internalValue[5]}`;\n const mask = 'dd.MM.yyyy';\n\n if (!isMatch(formattedStartValue, mask)) {\n isStartValid = false;\n }\n if (!isMatch(formattedEndValue, mask)) {\n isEndValid = false;\n }\n\n if (!isStartValid && !isEndValid) {\n return;\n }\n\n const valueExists = Array.isArray(value);\n const now = new Date();\n const start = isStartValid\n ? parse(formattedStartValue, mask, (valueExists && value?.[0]) || now)\n : null;\n const end = isEndValid\n ? parse(formattedEndValue, mask, (valueExists && value?.[1]) || now)\n : null;\n if (start && end && isAfter(end, start)) {\n onChange?.([start, end]);\n }\n },\n [onChange, value],\n );\n\n const refs = React.useMemo(\n () => [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n [daysStartRef, monthsStartRef, yearsStartRef, daysEndRef, monthsEndRef, yearsEndRef],\n );\n\n const {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n handleKeyDown,\n setFocusedElement,\n handleFieldEnter,\n clear,\n removeFocusFromField,\n } = useDateInput({\n maxElement: 5,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n });\n\n const { sizeY } = useAdaptivity();\n\n const handleRootRef = useExternRef(rootRef, getRootRef);\n\n const onCalendarChange = React.useCallback(\n (newValue?: Array<Date | null> | undefined) => {\n onChange?.(newValue);\n if (closeOnChange && newValue?.[1] && newValue[1] !== value?.[1]) {\n removeFocusFromField();\n }\n },\n [onChange, closeOnChange, value, removeFocusFromField],\n );\n\n return (\n <FormField\n style={style}\n className={classNames(\n styles['DateRangeInput'],\n getSizeYClassName(styles['DateRangeInput'], sizeY),\n className,\n )}\n getRootRef={handleRootRef}\n after={\n value ? (\n <IconButton hoverMode=\"opacity\" aria-label={clearFieldAriaLabel} onClick={clear}>\n <Icon16Clear />\n </IconButton>\n ) : (\n <IconButton hoverMode=\"opacity\" aria-label={showCalendarAriaLabel} onClick={openCalendar}>\n <Icon20CalendarOutline />\n </IconButton>\n )\n }\n disabled={disabled}\n onClick={callMultiple(handleFieldEnter, onClick)}\n onFocus={callMultiple(handleFieldEnter, onFocus)}\n {...props}\n >\n <input\n type=\"hidden\"\n name={name}\n value={\n value\n ? `${value[0] ? format(value[0], 'DD.MM.YYYY') : ''} - ${\n value[1] ? format(value[1], 'DD.MM.YYYY') : ''\n }`\n : ''\n }\n />\n <span className={dateInputStyles['DateInput__input']} onKeyDown={handleKeyDown}>\n <InputLike\n length={2}\n getRootRef={daysStartRef}\n index={0}\n onElementSelect={setFocusedElement}\n value={internalValue[0]}\n aria-label={changeStartDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsStartRef}\n index={1}\n onElementSelect={setFocusedElement}\n value={internalValue[1]}\n aria-label={changeStartMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsStartRef}\n index={2}\n onElementSelect={setFocusedElement}\n value={internalValue[2]}\n aria-label={changeStartYearAriaLabel}\n />\n <InputLikeDivider>{' — '}</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={daysEndRef}\n index={3}\n onElementSelect={setFocusedElement}\n value={internalValue[3]}\n aria-label={changeEndDayAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={2}\n getRootRef={monthsEndRef}\n index={4}\n onElementSelect={setFocusedElement}\n value={internalValue[4]}\n aria-label={changeEndMonthAriaLabel}\n />\n <InputLikeDivider>.</InputLikeDivider>\n <InputLike\n length={4}\n getRootRef={yearsEndRef}\n index={5}\n onElementSelect={setFocusedElement}\n value={internalValue[5]}\n aria-label={changeEndYearAriaLabel}\n />\n </span>\n {open && !disableCalendar && (\n <Popper targetRef={rootRef} offsetDistance={8} placement={calendarPlacement}>\n <CalendarRange\n value={value}\n onChange={onCalendarChange}\n disablePast={disablePast}\n disableFuture={disableFuture}\n shouldDisableDate={shouldDisableDate}\n onClose={closeCalendar}\n getRootRef={calendarRef}\n disablePickers={disablePickers}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n changeDayAriaLabel={changeDayAriaLabel}\n prevMonthIcon={prevMonthIcon}\n nextMonthIcon={nextMonthIcon}\n />\n </Popper>\n )}\n </FormField>\n );\n};\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ var _excluded = ["children", "style", "vertical", "getRootRef", "getRef", "fille
6
6
  import * as React from 'react';
7
7
  import { Platform } from '../../lib/platform';
8
8
  import { classNames } from '@vkontakte/vkjs';
9
- import { SplitColContext } from '../SplitCol/SplitCol';
9
+ import { SplitColContext } from '../SplitCol/SplitColContext';
10
10
  import { TooltipContainer } from '../Tooltip/TooltipContainer';
11
11
  import { useDOM } from '../../lib/dom';
12
12
  import { useGlobalEventListener } from '../../hooks/useGlobalEventListener';
@@ -1 +1 @@
1
- {"version":3,"file":"FixedLayout.js","names":["React","Platform","classNames","SplitColContext","TooltipContainer","useDOM","useGlobalEventListener","usePlatform","useExternRef","FixedLayout","children","style","vertical","getRootRef","getRef","filled","className","restProps","platform","ref","useState","undefined","width","setWidth","window","useContext","colRef","doResize","current","computedStyle","getComputedStyle","clientWidth","parseFloat","paddingLeft","paddingRight","useEffect","IOS","styles"],"sources":["../../../src/components/FixedLayout/FixedLayout.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Platform } from '../../lib/platform';\nimport { classNames } from '@vkontakte/vkjs';\nimport { HasRef, HasRootRef } from '../../types';\nimport { SplitColContext } from '../SplitCol/SplitCol';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { useDOM } from '../../lib/dom';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport styles from './FixedLayout.module.css';\n\nexport interface FixedLayoutProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n vertical?: 'top' | 'bottom';\n /**\n * Это свойство определяет, будет ли фон компонента окрашен в цвет фона контента.\n * Это часто необходимо для фиксированных кнопок в нижней части экрана.\n */\n filled?: boolean;\n}\n\nexport interface FixedLayoutState {\n position: 'absolute' | null;\n top: number;\n bottom: number;\n width: string;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FixedLayout\n */\nexport const FixedLayout = ({\n children,\n style,\n vertical,\n getRootRef,\n getRef,\n filled,\n className,\n ...restProps\n}: FixedLayoutProps) => {\n const platform = usePlatform();\n const ref = useExternRef(getRootRef, getRef); // TODO: v6 удалить getRef\n const [width, setWidth] = React.useState<string | undefined>(undefined);\n const { window } = useDOM();\n const { colRef } = React.useContext(SplitColContext);\n const doResize = () => {\n if (colRef?.current) {\n const computedStyle = getComputedStyle(colRef.current);\n\n setWidth(\n `${\n colRef.current.clientWidth -\n parseFloat(computedStyle.paddingLeft) -\n parseFloat(computedStyle.paddingRight)\n }px`,\n );\n } else {\n setWidth(undefined);\n }\n };\n React.useEffect(doResize, [colRef, platform]);\n useGlobalEventListener(window, 'resize', doResize);\n\n return (\n <TooltipContainer\n {...restProps}\n fixed\n ref={ref}\n className={classNames(\n styles['FixedLayout'],\n platform === Platform.IOS && styles['FixedLayout--ios'],\n filled && styles['FixedLayout--filled'],\n vertical && styles[`FixedLayout--vertical-${vertical}`],\n className,\n )}\n style={{ ...style, width }}\n >\n {children}\n </TooltipContainer>\n );\n};\n"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,UAAU,QAAQ,iBAAiB;AAE5C,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,SAASC,MAAM,QAAQ,eAAe;AACtC,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,YAAY,QAAQ,0BAA0B;AAsBvD;AACA;AACA;AACA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAW,OASA;EAAA,IARtBC,QAAQ,QAARA,QAAQ;IACRC,KAAK,QAALA,KAAK;IACLC,QAAQ,QAARA,QAAQ;IACRC,UAAU,QAAVA,UAAU;IACVC,MAAM,QAANA,MAAM;IACNC,MAAM,QAANA,MAAM;IACNC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,QAAQ,GAAGX,WAAW,EAAE;EAC9B,IAAMY,GAAG,GAAGX,YAAY,CAACK,UAAU,EAAEC,MAAM,CAAC,CAAC,CAAC;EAC9C,sBAA0Bd,KAAK,CAACoB,QAAQ,CAAqBC,SAAS,CAAC;IAAA;IAAhEC,KAAK;IAAEC,QAAQ;EACtB,cAAmBlB,MAAM,EAAE;IAAnBmB,MAAM,WAANA,MAAM;EACd,wBAAmBxB,KAAK,CAACyB,UAAU,CAACtB,eAAe,CAAC;IAA5CuB,MAAM,qBAANA,MAAM;EACd,IAAMC,QAAQ,GAAG,SAAXA,QAAQ,GAAS;IACrB,IAAID,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEE,OAAO,EAAE;MACnB,IAAMC,aAAa,GAAGC,gBAAgB,CAACJ,MAAM,CAACE,OAAO,CAAC;MAEtDL,QAAQ,WAEJG,MAAM,CAACE,OAAO,CAACG,WAAW,GAC1BC,UAAU,CAACH,aAAa,CAACI,WAAW,CAAC,GACrCD,UAAU,CAACH,aAAa,CAACK,YAAY,CAAC,QAEzC;IACH,CAAC,MAAM;MACLX,QAAQ,CAACF,SAAS,CAAC;IACrB;EACF,CAAC;EACDrB,KAAK,CAACmC,SAAS,CAACR,QAAQ,EAAE,CAACD,MAAM,EAAER,QAAQ,CAAC,CAAC;EAC7CZ,sBAAsB,CAACkB,MAAM,EAAE,QAAQ,EAAEG,QAAQ,CAAC;EAElD,oBACE,oBAAC,gBAAgB,eACXV,SAAS;IACb,KAAK;IACL,GAAG,EAAEE,GAAI;IACT,SAAS,EAAEjB,UAAU,oBAEnBgB,QAAQ,KAAKjB,QAAQ,CAACmC,GAAG,0BAA8B,EACvDrB,MAAM,6BAAiC,EACvCH,QAAQ,IAAIyB,MAAM,iCAA0BzB,QAAQ,EAAG,EACvDI,SAAS,CACT;IACF,KAAK,kCAAOL,KAAK;MAAEW,KAAK,EAALA;IAAK;EAAG,IAE1BZ,QAAQ,CACQ;AAEvB,CAAC;AAAC;EAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"FixedLayout.js","names":["React","Platform","classNames","SplitColContext","TooltipContainer","useDOM","useGlobalEventListener","usePlatform","useExternRef","FixedLayout","children","style","vertical","getRootRef","getRef","filled","className","restProps","platform","ref","useState","undefined","width","setWidth","window","useContext","colRef","doResize","current","computedStyle","getComputedStyle","clientWidth","parseFloat","paddingLeft","paddingRight","useEffect","IOS","styles"],"sources":["../../../src/components/FixedLayout/FixedLayout.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Platform } from '../../lib/platform';\nimport { classNames } from '@vkontakte/vkjs';\nimport { HasRef, HasRootRef } from '../../types';\nimport { SplitColContext } from '../SplitCol/SplitColContext';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { useDOM } from '../../lib/dom';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport styles from './FixedLayout.module.css';\n\nexport interface FixedLayoutProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n vertical?: 'top' | 'bottom';\n /**\n * Это свойство определяет, будет ли фон компонента окрашен в цвет фона контента.\n * Это часто необходимо для фиксированных кнопок в нижней части экрана.\n */\n filled?: boolean;\n}\n\nexport interface FixedLayoutState {\n position: 'absolute' | null;\n top: number;\n bottom: number;\n width: string;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FixedLayout\n */\nexport const FixedLayout = ({\n children,\n style,\n vertical,\n getRootRef,\n getRef,\n filled,\n className,\n ...restProps\n}: FixedLayoutProps) => {\n const platform = usePlatform();\n const ref = useExternRef(getRootRef, getRef); // TODO: v6 удалить getRef\n const [width, setWidth] = React.useState<string | undefined>(undefined);\n const { window } = useDOM();\n const { colRef } = React.useContext(SplitColContext);\n const doResize = () => {\n if (colRef?.current) {\n const computedStyle = getComputedStyle(colRef.current);\n\n setWidth(\n `${\n colRef.current.clientWidth -\n parseFloat(computedStyle.paddingLeft) -\n parseFloat(computedStyle.paddingRight)\n }px`,\n );\n } else {\n setWidth(undefined);\n }\n };\n React.useEffect(doResize, [colRef, platform]);\n useGlobalEventListener(window, 'resize', doResize);\n\n return (\n <TooltipContainer\n {...restProps}\n fixed\n ref={ref}\n className={classNames(\n styles['FixedLayout'],\n platform === Platform.IOS && styles['FixedLayout--ios'],\n filled && styles['FixedLayout--filled'],\n vertical && styles[`FixedLayout--vertical-${vertical}`],\n className,\n )}\n style={{ ...style, width }}\n >\n {children}\n </TooltipContainer>\n );\n};\n"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,SAASC,UAAU,QAAQ,iBAAiB;AAE5C,SAASC,eAAe,QAAQ,6BAA6B;AAC7D,SAASC,gBAAgB,QAAQ,6BAA6B;AAC9D,SAASC,MAAM,QAAQ,eAAe;AACtC,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,WAAW,QAAQ,yBAAyB;AACrD,SAASC,YAAY,QAAQ,0BAA0B;AAsBvD;AACA;AACA;AACA,OAAO,IAAMC,WAAW,GAAG,SAAdA,WAAW,OASA;EAAA,IARtBC,QAAQ,QAARA,QAAQ;IACRC,KAAK,QAALA,KAAK;IACLC,QAAQ,QAARA,QAAQ;IACRC,UAAU,QAAVA,UAAU;IACVC,MAAM,QAANA,MAAM;IACNC,MAAM,QAANA,MAAM;IACNC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,QAAQ,GAAGX,WAAW,EAAE;EAC9B,IAAMY,GAAG,GAAGX,YAAY,CAACK,UAAU,EAAEC,MAAM,CAAC,CAAC,CAAC;EAC9C,sBAA0Bd,KAAK,CAACoB,QAAQ,CAAqBC,SAAS,CAAC;IAAA;IAAhEC,KAAK;IAAEC,QAAQ;EACtB,cAAmBlB,MAAM,EAAE;IAAnBmB,MAAM,WAANA,MAAM;EACd,wBAAmBxB,KAAK,CAACyB,UAAU,CAACtB,eAAe,CAAC;IAA5CuB,MAAM,qBAANA,MAAM;EACd,IAAMC,QAAQ,GAAG,SAAXA,QAAQ,GAAS;IACrB,IAAID,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEE,OAAO,EAAE;MACnB,IAAMC,aAAa,GAAGC,gBAAgB,CAACJ,MAAM,CAACE,OAAO,CAAC;MAEtDL,QAAQ,WAEJG,MAAM,CAACE,OAAO,CAACG,WAAW,GAC1BC,UAAU,CAACH,aAAa,CAACI,WAAW,CAAC,GACrCD,UAAU,CAACH,aAAa,CAACK,YAAY,CAAC,QAEzC;IACH,CAAC,MAAM;MACLX,QAAQ,CAACF,SAAS,CAAC;IACrB;EACF,CAAC;EACDrB,KAAK,CAACmC,SAAS,CAACR,QAAQ,EAAE,CAACD,MAAM,EAAER,QAAQ,CAAC,CAAC;EAC7CZ,sBAAsB,CAACkB,MAAM,EAAE,QAAQ,EAAEG,QAAQ,CAAC;EAElD,oBACE,oBAAC,gBAAgB,eACXV,SAAS;IACb,KAAK;IACL,GAAG,EAAEE,GAAI;IACT,SAAS,EAAEjB,UAAU,oBAEnBgB,QAAQ,KAAKjB,QAAQ,CAACmC,GAAG,0BAA8B,EACvDrB,MAAM,6BAAiC,EACvCH,QAAQ,IAAIyB,MAAM,iCAA0BzB,QAAQ,EAAG,EACvDI,SAAS,CACT;IACF,KAAK,kCAAOL,KAAK;MAAEW,KAAK,EAALA;IAAK;EAAG,IAE1BZ,QAAQ,CACQ;AAEvB,CAAC;AAAC;EAAA;EAAA;AAAA"}
@@ -11,7 +11,7 @@ import { getSizeYClassName } from '../../helpers/getSizeYClassName';
11
11
  */
12
12
  export var FormField = function FormField(_ref) {
13
13
  var _ref$Component = _ref.Component,
14
- Component = _ref$Component === void 0 ? 'div' : _ref$Component,
14
+ Component = _ref$Component === void 0 ? 'span' : _ref$Component,
15
15
  _ref$status = _ref.status,
16
16
  status = _ref$status === void 0 ? 'default' : _ref$status,
17
17
  children = _ref.children,
@@ -37,21 +37,17 @@ export var FormField = function FormField(_ref) {
37
37
  e.stopPropagation();
38
38
  setHover(false);
39
39
  };
40
- return /*#__PURE__*/React.createElement(Component, _extends({
41
- role: "presentation"
42
- }, restProps, {
40
+ return /*#__PURE__*/React.createElement(Component, _extends({}, restProps, {
43
41
  ref: getRootRef,
44
42
  onMouseEnter: handleMouseEnter,
45
43
  onMouseLeave: handleMouseLeave,
46
44
  className: classNames("vkuiFormField", styles["FormField--mode-".concat(mode)], styles["FormField--status-".concat(status)], getSizeYClassName("vkuiFormField", sizeY), disabled && "vkuiFormField--disabled", !disabled && hover && "vkuiFormField--hover", className)
47
- }), before && /*#__PURE__*/React.createElement("div", {
48
- role: "presentation",
45
+ }), before && /*#__PURE__*/React.createElement("span", {
49
46
  className: "vkuiFormField__before"
50
- }, before), children, after && /*#__PURE__*/React.createElement("div", {
51
- role: "presentation",
47
+ }, before), children, after && /*#__PURE__*/React.createElement("span", {
52
48
  className: "vkuiFormField__after"
53
- }, after), /*#__PURE__*/React.createElement("div", {
54
- role: "presentation",
49
+ }, after), /*#__PURE__*/React.createElement("span", {
50
+ "aria-hidden": true,
55
51
  className: "vkuiFormField__border"
56
52
  }));
57
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FormField.js","names":["React","classNames","useAdaptivity","getSizeYClassName","FormField","Component","status","children","getRootRef","before","after","disabled","mode","className","restProps","sizeY","useState","hover","setHover","handleMouseEnter","e","stopPropagation","handleMouseLeave","styles"],"sources":["../../../src/components/FormField/FormField.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { getSizeYClassName } from '../../helpers/getSizeYClassName';\nimport styles from './FormField.module.css';\n\nexport interface FormFieldProps {\n status?: 'default' | 'error' | 'valid';\n /**\n * Добавляет иконку слева.\n *\n * Рекомендации:\n *\n * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.\n * - Используйте [IconButton](https://vkcom.github.io/VKUI/#/IconButton), если вам нужна кликабельная иконка.\n */\n before?: React.ReactNode;\n /**\n * Добавляет иконку справа.\n *\n * Рекомендации:\n *\n * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.\n * - Используйте [IconButton](https://vkcom.github.io/VKUI/#/IconButton), если вам нужна кликабельная иконка.\n */\n after?: React.ReactNode;\n mode?: 'default' | 'plain';\n}\n\ninterface FormFieldOwnProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent,\n FormFieldProps {\n disabled?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FormField\n */\nexport const FormField = ({\n Component = 'div',\n status = 'default',\n children,\n getRootRef,\n before,\n after,\n disabled,\n mode = 'default',\n className,\n ...restProps\n}: FormFieldOwnProps) => {\n const { sizeY } = useAdaptivity();\n const [hover, setHover] = React.useState(false);\n\n const handleMouseEnter = (e: MouseEvent) => {\n e.stopPropagation();\n setHover(true);\n };\n\n const handleMouseLeave = (e: MouseEvent) => {\n e.stopPropagation();\n setHover(false);\n };\n\n return (\n <Component\n role=\"presentation\"\n {...restProps}\n ref={getRootRef}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n className={classNames(\n styles['FormField'],\n styles[`FormField--mode-${mode}`],\n styles[`FormField--status-${status}`],\n getSizeYClassName(styles['FormField'], sizeY),\n disabled && styles['FormField--disabled'],\n !disabled && hover && styles['FormField--hover'],\n className,\n )}\n >\n {before && (\n <div role=\"presentation\" className={styles['FormField__before']}>\n {before}\n </div>\n )}\n {children}\n {after && (\n <div role=\"presentation\" className={styles['FormField__after']}>\n {after}\n </div>\n )}\n <div role=\"presentation\" className={styles['FormField__border']} />\n </Component>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,iBAAiB;AAE5C,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,iBAAiB,QAAQ,iCAAiC;AAkCnE;AACA;AACA;AACA,OAAO,IAAMC,SAAS,GAAG,SAAZA,SAAS,OAWG;EAAA,0BAVvBC,SAAS;IAATA,SAAS,+BAAG,KAAK;IAAA,mBACjBC,MAAM;IAANA,MAAM,4BAAG,SAAS;IAClBC,QAAQ,QAARA,QAAQ;IACRC,UAAU,QAAVA,UAAU;IACVC,MAAM,QAANA,MAAM;IACNC,KAAK,QAALA,KAAK;IACLC,QAAQ,QAARA,QAAQ;IAAA,iBACRC,IAAI;IAAJA,IAAI,0BAAG,SAAS;IAChBC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,qBAAkBZ,aAAa,EAAE;IAAzBa,KAAK,kBAALA,KAAK;EACb,sBAA0Bf,KAAK,CAACgB,QAAQ,CAAC,KAAK,CAAC;IAAA;IAAxCC,KAAK;IAAEC,QAAQ;EAEtB,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgB,CAAIC,CAAa,EAAK;IAC1CA,CAAC,CAACC,eAAe,EAAE;IACnBH,QAAQ,CAAC,IAAI,CAAC;EAChB,CAAC;EAED,IAAMI,gBAAgB,GAAG,SAAnBA,gBAAgB,CAAIF,CAAa,EAAK;IAC1CA,CAAC,CAACC,eAAe,EAAE;IACnBH,QAAQ,CAAC,KAAK,CAAC;EACjB,CAAC;EAED,oBACE,oBAAC,SAAS;IACR,IAAI,EAAC;EAAc,GACfJ,SAAS;IACb,GAAG,EAAEN,UAAW;IAChB,YAAY,EAAEW,gBAAiB;IAC/B,YAAY,EAAEG,gBAAiB;IAC/B,SAAS,EAAErB,UAAU,kBAEnBsB,MAAM,2BAAoBX,IAAI,EAAG,EACjCW,MAAM,6BAAsBjB,MAAM,EAAG,EACrCH,iBAAiB,kBAAsBY,KAAK,CAAC,EAC7CJ,QAAQ,6BAAiC,EACzC,CAACA,QAAQ,IAAIM,KAAK,0BAA8B,EAChDJ,SAAS;EACT,IAEDJ,MAAM,iBACL;IAAK,IAAI,EAAC,cAAc;IAAC,SAAS;EAA8B,GAC7DA,MAAM,CAEV,EACAF,QAAQ,EACRG,KAAK,iBACJ;IAAK,IAAI,EAAC,cAAc;IAAC,SAAS;EAA6B,GAC5DA,KAAK,CAET,eACD;IAAK,IAAI,EAAC,cAAc;IAAC,SAAS;EAA8B,EAAG,CACzD;AAEhB,CAAC;AAAC;EAAA;EAAA;EAAA;EAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"FormField.js","names":["React","classNames","useAdaptivity","getSizeYClassName","FormField","Component","status","children","getRootRef","before","after","disabled","mode","className","restProps","sizeY","useState","hover","setHover","handleMouseEnter","e","stopPropagation","handleMouseLeave","styles"],"sources":["../../../src/components/FormField/FormField.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { getSizeYClassName } from '../../helpers/getSizeYClassName';\nimport styles from './FormField.module.css';\n\nexport interface FormFieldProps {\n status?: 'default' | 'error' | 'valid';\n /**\n * Добавляет иконку слева.\n *\n * Рекомендации:\n *\n * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.\n * - Используйте [IconButton](https://vkcom.github.io/VKUI/#/IconButton), если вам нужна кликабельная иконка.\n */\n before?: React.ReactNode;\n /**\n * Добавляет иконку справа.\n *\n * Рекомендации:\n *\n * - Используйте следующие размеры иконок `12` | `16` | `20` | `24` | `28`.\n * - Используйте [IconButton](https://vkcom.github.io/VKUI/#/IconButton), если вам нужна кликабельная иконка.\n */\n after?: React.ReactNode;\n mode?: 'default' | 'plain';\n}\n\ninterface FormFieldOwnProps\n extends React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent,\n FormFieldProps {\n disabled?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/FormField\n */\nexport const FormField = ({\n Component = 'span',\n status = 'default',\n children,\n getRootRef,\n before,\n after,\n disabled,\n mode = 'default',\n className,\n ...restProps\n}: FormFieldOwnProps) => {\n const { sizeY } = useAdaptivity();\n const [hover, setHover] = React.useState(false);\n\n const handleMouseEnter = (e: MouseEvent) => {\n e.stopPropagation();\n setHover(true);\n };\n\n const handleMouseLeave = (e: MouseEvent) => {\n e.stopPropagation();\n setHover(false);\n };\n\n return (\n <Component\n {...restProps}\n ref={getRootRef}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n className={classNames(\n styles['FormField'],\n styles[`FormField--mode-${mode}`],\n styles[`FormField--status-${status}`],\n getSizeYClassName(styles['FormField'], sizeY),\n disabled && styles['FormField--disabled'],\n !disabled && hover && styles['FormField--hover'],\n className,\n )}\n >\n {before && <span className={styles['FormField__before']}>{before}</span>}\n {children}\n {after && <span className={styles['FormField__after']}>{after}</span>}\n <span aria-hidden className={styles['FormField__border']} />\n </Component>\n );\n};\n"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,QAAQ,iBAAiB;AAE5C,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,iBAAiB,QAAQ,iCAAiC;AAkCnE;AACA;AACA;AACA,OAAO,IAAMC,SAAS,GAAG,SAAZA,SAAS,OAWG;EAAA,0BAVvBC,SAAS;IAATA,SAAS,+BAAG,MAAM;IAAA,mBAClBC,MAAM;IAANA,MAAM,4BAAG,SAAS;IAClBC,QAAQ,QAARA,QAAQ;IACRC,UAAU,QAAVA,UAAU;IACVC,MAAM,QAANA,MAAM;IACNC,KAAK,QAALA,KAAK;IACLC,QAAQ,QAARA,QAAQ;IAAA,iBACRC,IAAI;IAAJA,IAAI,0BAAG,SAAS;IAChBC,SAAS,QAATA,SAAS;IACNC,SAAS;EAEZ,qBAAkBZ,aAAa,EAAE;IAAzBa,KAAK,kBAALA,KAAK;EACb,sBAA0Bf,KAAK,CAACgB,QAAQ,CAAC,KAAK,CAAC;IAAA;IAAxCC,KAAK;IAAEC,QAAQ;EAEtB,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgB,CAAIC,CAAa,EAAK;IAC1CA,CAAC,CAACC,eAAe,EAAE;IACnBH,QAAQ,CAAC,IAAI,CAAC;EAChB,CAAC;EAED,IAAMI,gBAAgB,GAAG,SAAnBA,gBAAgB,CAAIF,CAAa,EAAK;IAC1CA,CAAC,CAACC,eAAe,EAAE;IACnBH,QAAQ,CAAC,KAAK,CAAC;EACjB,CAAC;EAED,oBACE,oBAAC,SAAS,eACJJ,SAAS;IACb,GAAG,EAAEN,UAAW;IAChB,YAAY,EAAEW,gBAAiB;IAC/B,YAAY,EAAEG,gBAAiB;IAC/B,SAAS,EAAErB,UAAU,kBAEnBsB,MAAM,2BAAoBX,IAAI,EAAG,EACjCW,MAAM,6BAAsBjB,MAAM,EAAG,EACrCH,iBAAiB,kBAAsBY,KAAK,CAAC,EAC7CJ,QAAQ,6BAAiC,EACzC,CAACA,QAAQ,IAAIM,KAAK,0BAA8B,EAChDJ,SAAS;EACT,IAEDJ,MAAM,iBAAI;IAAM,SAAS;EAA8B,GAAEA,MAAM,CAAQ,EACvEF,QAAQ,EACRG,KAAK,iBAAI;IAAM,SAAS;EAA6B,GAAEA,KAAK,CAAQ,eACrE;IAAM,mBAAW;IAAC,SAAS;EAA8B,EAAG,CAClD;AAEhB,CAAC;AAAC;EAAA;EAAA;EAAA;EAAA;EAAA;AAAA"}
@@ -8,6 +8,9 @@ import { usePlatform } from '../../hooks/usePlatform';
8
8
  import { Platform } from '../../lib/platform';
9
9
  import { getSizeYClassName } from '../../helpers/getSizeYClassName';
10
10
  import { useAdaptivity } from '../../hooks/useAdaptivity';
11
+ import { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';
12
+ var warn = warnOnce('IconButton');
13
+
11
14
  /**
12
15
  * @see https://vkcom.github.io/VKUI/#/IconButton
13
16
  */
@@ -20,6 +23,12 @@ export var IconButton = function IconButton(_ref) {
20
23
  var platform = usePlatform();
21
24
  var _useAdaptivity = useAdaptivity(),
22
25
  sizeY = _useAdaptivity.sizeY;
26
+ if (process.env.NODE_ENV === 'development') {
27
+ var isAccessible = restProps['aria-label'] || restProps['aria-labelledby'];
28
+ if (!isAccessible) {
29
+ warn(COMMON_WARNINGS.a11y[restProps.href ? 'link-name' : 'button-name'], 'error');
30
+ }
31
+ }
23
32
  return /*#__PURE__*/React.createElement(Tappable, _extends({
24
33
  activeEffectDelay: 200,
25
34
  activeMode: "background"