@vkontakte/vkui 4.20.0 → 4.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +414 -116
  4. package/.cache/ts/src/components/Avatar/Avatar.d.ts +2 -0
  5. package/.cache/ts/src/components/Cell/Cell.d.ts +11 -0
  6. package/.cache/ts/src/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  7. package/.cache/ts/src/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  8. package/.cache/ts/src/components/Cell/useDraggable.d.ts +13 -0
  9. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +0 -1
  10. package/.cache/ts/src/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  11. package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +2 -3
  12. package/.cache/ts/src/components/FormField/FormField.d.ts +2 -3
  13. package/.cache/ts/src/components/FormItem/FormItem.d.ts +2 -3
  14. package/.cache/ts/src/components/FormLayout/FormLayout.d.ts +2 -4
  15. package/.cache/ts/src/components/GridAvatar/GridAvatar.d.ts +9 -0
  16. package/.cache/ts/src/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  17. package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  18. package/.cache/ts/src/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  19. package/.cache/ts/src/components/Link/Link.d.ts +1 -2
  20. package/.cache/ts/src/components/ModalRoot/types.d.ts +0 -1
  21. package/.cache/ts/src/components/ModalRoot/useModalManager.d.ts +37 -0
  22. package/.cache/ts/src/components/Removable/Removable.d.ts +2 -1
  23. package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +2 -2
  24. package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +3 -3
  25. package/.cache/ts/src/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  26. package/.cache/ts/src/components/Switch/Switch.d.ts +2 -3
  27. package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +3 -1
  28. package/.cache/ts/src/components/Tappable/Tappable.d.ts +2 -3
  29. package/.cache/ts/src/components/Touch/Touch.d.ts +16 -17
  30. package/.cache/ts/src/components/Typography/Caption/Caption.d.ts +2 -2
  31. package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +2 -2
  32. package/.cache/ts/src/components/Typography/Subhead/Subhead.d.ts +2 -2
  33. package/.cache/ts/src/components/Typography/Text/Text.d.ts +2 -3
  34. package/.cache/ts/src/components/Typography/Title/Title.d.ts +2 -2
  35. package/.cache/ts/src/components/View/utils.d.ts +2 -0
  36. package/.cache/ts/src/index.d.ts +4 -0
  37. package/.cache/ts/src/lib/accessibility.d.ts +1 -1
  38. package/.cache/ts/src/lib/supportEvents.d.ts +3 -1
  39. package/.cache/ts/src/types.d.ts +3 -0
  40. package/dist/cjs/components/ActionSheet/ActionSheet.js +7 -9
  41. package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
  42. package/dist/cjs/components/Avatar/Avatar.d.ts +2 -0
  43. package/dist/cjs/components/Avatar/Avatar.js +7 -3
  44. package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
  45. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  46. package/dist/cjs/components/Button/Button.js.map +1 -1
  47. package/dist/cjs/components/CardScroll/CardScroll.js +1 -1
  48. package/dist/cjs/components/CardScroll/CardScroll.js.map +1 -1
  49. package/dist/cjs/components/Cell/Cell.d.ts +11 -0
  50. package/dist/cjs/components/Cell/Cell.js +109 -182
  51. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  52. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  53. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +50 -0
  54. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  55. package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  56. package/dist/cjs/components/Cell/CellDragger/CellDragger.js +53 -0
  57. package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -0
  58. package/dist/cjs/components/Cell/useDraggable.d.ts +13 -0
  59. package/dist/cjs/components/Cell/useDraggable.js +142 -0
  60. package/dist/cjs/components/Cell/useDraggable.js.map +1 -0
  61. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
  62. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  63. package/dist/cjs/components/Counter/Counter.js.map +1 -1
  64. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +0 -1
  65. package/dist/cjs/components/CustomSelect/CustomSelect.js +2 -3
  66. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  67. package/dist/cjs/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  68. package/dist/cjs/components/DropdownIcon/DropdownIcon.js +37 -0
  69. package/dist/cjs/components/DropdownIcon/DropdownIcon.js.map +1 -0
  70. package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +2 -3
  71. package/dist/cjs/components/FocusTrap/FocusTrap.js +3 -5
  72. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  73. package/dist/cjs/components/FormField/FormField.d.ts +2 -3
  74. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  75. package/dist/cjs/components/FormItem/FormItem.d.ts +2 -3
  76. package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
  77. package/dist/cjs/components/FormLayout/FormLayout.d.ts +2 -4
  78. package/dist/cjs/components/FormLayout/FormLayout.js.map +1 -1
  79. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  80. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  81. package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +9 -0
  82. package/dist/cjs/components/GridAvatar/GridAvatar.js +61 -0
  83. package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -0
  84. package/dist/cjs/components/Header/Header.js.map +1 -1
  85. package/dist/cjs/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  86. package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
  87. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  88. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +10 -13
  89. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  90. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  91. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js +64 -0
  92. package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  93. package/dist/cjs/components/Link/Link.d.ts +1 -2
  94. package/dist/cjs/components/Link/Link.js.map +1 -1
  95. package/dist/cjs/components/ModalRoot/ModalRoot.js +170 -373
  96. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  97. package/dist/cjs/components/ModalRoot/ModalRootContext.js +0 -3
  98. package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
  99. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +59 -241
  100. package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  101. package/dist/cjs/components/ModalRoot/types.d.ts +0 -1
  102. package/dist/cjs/components/ModalRoot/types.js.map +1 -1
  103. package/dist/cjs/components/ModalRoot/useModalManager.d.ts +37 -0
  104. package/dist/cjs/components/ModalRoot/useModalManager.js +213 -0
  105. package/dist/cjs/components/ModalRoot/useModalManager.js.map +1 -0
  106. package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
  107. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  108. package/dist/cjs/components/Removable/Removable.d.ts +2 -1
  109. package/dist/cjs/components/Removable/Removable.js +75 -66
  110. package/dist/cjs/components/Removable/Removable.js.map +1 -1
  111. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
  112. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  113. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +2 -2
  114. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  115. package/dist/cjs/components/SplitCol/SplitCol.d.ts +3 -3
  116. package/dist/cjs/components/SplitCol/SplitCol.js +2 -4
  117. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  118. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  119. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js +38 -11
  120. package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  121. package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  122. package/dist/cjs/components/Switch/Switch.d.ts +2 -3
  123. package/dist/cjs/components/Switch/Switch.js +18 -8
  124. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  125. package/dist/cjs/components/Tabbar/Tabbar.js +3 -1
  126. package/dist/cjs/components/Tabbar/Tabbar.js.map +1 -1
  127. package/dist/cjs/components/TabbarItem/TabbarItem.d.ts +3 -1
  128. package/dist/cjs/components/TabbarItem/TabbarItem.js +29 -11
  129. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  130. package/dist/cjs/components/Tappable/Tappable.d.ts +2 -3
  131. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  132. package/dist/cjs/components/Textarea/Textarea.js +9 -7
  133. package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
  134. package/dist/cjs/components/Touch/Touch.d.ts +16 -17
  135. package/dist/cjs/components/Touch/Touch.js +21 -7
  136. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  137. package/dist/cjs/components/Typography/Caption/Caption.d.ts +2 -2
  138. package/dist/cjs/components/Typography/Caption/Caption.js +4 -2
  139. package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
  140. package/dist/cjs/components/Typography/Headline/Headline.d.ts +2 -2
  141. package/dist/cjs/components/Typography/Headline/Headline.js +2 -1
  142. package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
  143. package/dist/cjs/components/Typography/Subhead/Subhead.d.ts +2 -2
  144. package/dist/cjs/components/Typography/Subhead/Subhead.js +2 -1
  145. package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
  146. package/dist/cjs/components/Typography/Text/Text.d.ts +2 -3
  147. package/dist/cjs/components/Typography/Text/Text.js +2 -1
  148. package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
  149. package/dist/cjs/components/Typography/Title/Title.d.ts +2 -2
  150. package/dist/cjs/components/Typography/Title/Title.js +9 -4
  151. package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
  152. package/dist/cjs/components/View/View.js +68 -75
  153. package/dist/cjs/components/View/View.js.map +1 -1
  154. package/dist/cjs/components/View/ViewInfinite.js +78 -85
  155. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  156. package/dist/cjs/components/View/utils.d.ts +2 -0
  157. package/dist/cjs/components/View/utils.js +13 -0
  158. package/dist/cjs/components/View/utils.js.map +1 -0
  159. package/dist/cjs/index.d.ts +4 -0
  160. package/dist/cjs/index.js +16 -0
  161. package/dist/cjs/index.js.map +1 -1
  162. package/dist/cjs/lib/accessibility.d.ts +1 -1
  163. package/dist/cjs/lib/accessibility.js.map +1 -1
  164. package/dist/cjs/lib/prefixClass.js +7 -6
  165. package/dist/cjs/lib/prefixClass.js.map +1 -1
  166. package/dist/cjs/lib/supportEvents.d.ts +3 -1
  167. package/dist/cjs/lib/supportEvents.js +1 -4
  168. package/dist/cjs/lib/supportEvents.js.map +1 -1
  169. package/dist/cjs/types.d.ts +3 -0
  170. package/dist/components/ActionSheet/ActionSheet.js +6 -9
  171. package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
  172. package/dist/components/Avatar/Avatar.d.ts +2 -0
  173. package/dist/components/Avatar/Avatar.js +4 -2
  174. package/dist/components/Avatar/Avatar.js.map +1 -1
  175. package/dist/components/Banner/Banner.js.map +1 -1
  176. package/dist/components/Button/Button.js.map +1 -1
  177. package/dist/components/CardScroll/CardScroll.js +1 -1
  178. package/dist/components/CardScroll/CardScroll.js.map +1 -1
  179. package/dist/components/Cell/Cell.d.ts +11 -0
  180. package/dist/components/Cell/Cell.js +103 -177
  181. package/dist/components/Cell/Cell.js.map +1 -1
  182. package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
  183. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +31 -0
  184. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  185. package/dist/components/Cell/CellDragger/CellDragger.d.ts +6 -0
  186. package/dist/components/Cell/CellDragger/CellDragger.js +30 -0
  187. package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -0
  188. package/dist/components/Cell/useDraggable.d.ts +13 -0
  189. package/dist/components/Cell/useDraggable.js +126 -0
  190. package/dist/components/Cell/useDraggable.js.map +1 -0
  191. package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
  192. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  193. package/dist/components/Counter/Counter.js.map +1 -1
  194. package/dist/components/CustomSelect/CustomSelect.d.ts +0 -1
  195. package/dist/components/CustomSelect/CustomSelect.js +3 -5
  196. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  197. package/dist/components/DropdownIcon/DropdownIcon.d.ts +3 -0
  198. package/dist/components/DropdownIcon/DropdownIcon.js +19 -0
  199. package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -0
  200. package/dist/components/FocusTrap/FocusTrap.d.ts +2 -3
  201. package/dist/components/FocusTrap/FocusTrap.js +3 -5
  202. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  203. package/dist/components/FormField/FormField.d.ts +2 -3
  204. package/dist/components/FormField/FormField.js.map +1 -1
  205. package/dist/components/FormItem/FormItem.d.ts +2 -3
  206. package/dist/components/FormItem/FormItem.js.map +1 -1
  207. package/dist/components/FormLayout/FormLayout.d.ts +2 -4
  208. package/dist/components/FormLayout/FormLayout.js.map +1 -1
  209. package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  210. package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  211. package/dist/components/GridAvatar/GridAvatar.d.ts +9 -0
  212. package/dist/components/GridAvatar/GridAvatar.js +41 -0
  213. package/dist/components/GridAvatar/GridAvatar.js.map +1 -0
  214. package/dist/components/Header/Header.js.map +1 -1
  215. package/dist/components/HorizontalCell/HorizontalCell.d.ts +2 -3
  216. package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
  217. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
  218. package/dist/components/HorizontalScroll/HorizontalScroll.js +10 -12
  219. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  220. package/dist/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
  221. package/dist/components/InitialsAvatar/InitialsAvatar.js +46 -0
  222. package/dist/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  223. package/dist/components/Link/Link.d.ts +1 -2
  224. package/dist/components/Link/Link.js.map +1 -1
  225. package/dist/components/ModalRoot/ModalRoot.js +167 -376
  226. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  227. package/dist/components/ModalRoot/ModalRootContext.js +0 -3
  228. package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
  229. package/dist/components/ModalRoot/ModalRootDesktop.js +58 -244
  230. package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  231. package/dist/components/ModalRoot/types.d.ts +0 -1
  232. package/dist/components/ModalRoot/types.js.map +1 -1
  233. package/dist/components/ModalRoot/useModalManager.d.ts +37 -0
  234. package/dist/components/ModalRoot/useModalManager.js +189 -0
  235. package/dist/components/ModalRoot/useModalManager.js.map +1 -0
  236. package/dist/components/NativeSelect/NativeSelect.js +2 -2
  237. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  238. package/dist/components/Removable/Removable.d.ts +2 -1
  239. package/dist/components/Removable/Removable.js +73 -64
  240. package/dist/components/Removable/Removable.js.map +1 -1
  241. package/dist/components/SelectMimicry/SelectMimicry.js +2 -2
  242. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  243. package/dist/components/SimpleCell/SimpleCell.d.ts +2 -2
  244. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  245. package/dist/components/SplitCol/SplitCol.d.ts +3 -3
  246. package/dist/components/SplitCol/SplitCol.js +2 -4
  247. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  248. package/dist/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
  249. package/dist/components/SubnavigationBar/SubnavigationBar.js +38 -11
  250. package/dist/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  251. package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  252. package/dist/components/Switch/Switch.d.ts +2 -3
  253. package/dist/components/Switch/Switch.js +15 -8
  254. package/dist/components/Switch/Switch.js.map +1 -1
  255. package/dist/components/Tabbar/Tabbar.js +3 -1
  256. package/dist/components/Tabbar/Tabbar.js.map +1 -1
  257. package/dist/components/TabbarItem/TabbarItem.d.ts +3 -1
  258. package/dist/components/TabbarItem/TabbarItem.js +26 -10
  259. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  260. package/dist/components/Tappable/Tappable.d.ts +2 -3
  261. package/dist/components/Tappable/Tappable.js.map +1 -1
  262. package/dist/components/Textarea/Textarea.js +9 -6
  263. package/dist/components/Textarea/Textarea.js.map +1 -1
  264. package/dist/components/Touch/Touch.d.ts +16 -17
  265. package/dist/components/Touch/Touch.js +21 -7
  266. package/dist/components/Touch/Touch.js.map +1 -1
  267. package/dist/components/Typography/Caption/Caption.d.ts +2 -2
  268. package/dist/components/Typography/Caption/Caption.js +4 -2
  269. package/dist/components/Typography/Caption/Caption.js.map +1 -1
  270. package/dist/components/Typography/Headline/Headline.d.ts +2 -2
  271. package/dist/components/Typography/Headline/Headline.js +2 -1
  272. package/dist/components/Typography/Headline/Headline.js.map +1 -1
  273. package/dist/components/Typography/Subhead/Subhead.d.ts +2 -2
  274. package/dist/components/Typography/Subhead/Subhead.js +2 -1
  275. package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
  276. package/dist/components/Typography/Text/Text.d.ts +2 -3
  277. package/dist/components/Typography/Text/Text.js +2 -1
  278. package/dist/components/Typography/Text/Text.js.map +1 -1
  279. package/dist/components/Typography/Title/Title.d.ts +2 -2
  280. package/dist/components/Typography/Title/Title.js +9 -4
  281. package/dist/components/Typography/Title/Title.js.map +1 -1
  282. package/dist/components/View/View.js +67 -75
  283. package/dist/components/View/View.js.map +1 -1
  284. package/dist/components/View/ViewInfinite.js +79 -87
  285. package/dist/components/View/ViewInfinite.js.map +1 -1
  286. package/dist/components/View/utils.d.ts +2 -0
  287. package/dist/components/View/utils.js +6 -0
  288. package/dist/components/View/utils.js.map +1 -0
  289. package/dist/components.css +1 -1
  290. package/dist/components.css.map +1 -1
  291. package/dist/cssm/components/ActionSheet/ActionSheet.js +6 -9
  292. package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
  293. package/dist/cssm/components/Avatar/Avatar.js +4 -2
  294. package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
  295. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  296. package/dist/cssm/components/Button/Button.css +1 -1
  297. package/dist/cssm/components/Button/Button.js.map +1 -1
  298. package/dist/cssm/components/CardScroll/CardScroll.js +1 -1
  299. package/dist/cssm/components/CardScroll/CardScroll.js.map +1 -1
  300. package/dist/cssm/components/Cell/Cell.css +1 -1
  301. package/dist/cssm/components/Cell/Cell.js +103 -177
  302. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  303. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -0
  304. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +32 -0
  305. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
  306. package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -0
  307. package/dist/cssm/components/Cell/CellDragger/CellDragger.js +31 -0
  308. package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -0
  309. package/dist/cssm/components/Cell/useDraggable.js +126 -0
  310. package/dist/cssm/components/Cell/useDraggable.js.map +1 -0
  311. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
  312. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  313. package/dist/cssm/components/Counter/Counter.js.map +1 -1
  314. package/dist/cssm/components/CustomSelect/CustomSelect.js +3 -5
  315. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  316. package/dist/cssm/components/DropdownIcon/DropdownIcon.css +1 -0
  317. package/dist/cssm/components/DropdownIcon/DropdownIcon.js +20 -0
  318. package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -0
  319. package/dist/cssm/components/FocusTrap/FocusTrap.js +3 -5
  320. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  321. package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
  322. package/dist/cssm/components/FormField/FormField.css +1 -1
  323. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  324. package/dist/cssm/components/FormItem/FormItem.css +1 -1
  325. package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
  326. package/dist/cssm/components/FormLayout/FormLayout.js.map +1 -1
  327. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
  328. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
  329. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  330. package/dist/cssm/components/Gallery/Gallery.css +1 -1
  331. package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -0
  332. package/dist/cssm/components/GridAvatar/GridAvatar.js +42 -0
  333. package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -0
  334. package/dist/cssm/components/Header/Header.js.map +1 -1
  335. package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
  336. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +10 -12
  337. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  338. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
  339. package/dist/cssm/components/IconButton/IconButton.css +1 -1
  340. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -0
  341. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js +52 -0
  342. package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
  343. package/dist/cssm/components/Link/Link.js.map +1 -1
  344. package/dist/cssm/components/ModalRoot/ModalRoot.js +167 -376
  345. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  346. package/dist/cssm/components/ModalRoot/ModalRootContext.js +0 -3
  347. package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
  348. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +58 -244
  349. package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
  350. package/dist/cssm/components/ModalRoot/types.js.map +1 -1
  351. package/dist/cssm/components/ModalRoot/useModalManager.js +189 -0
  352. package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -0
  353. package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -2
  354. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  355. package/dist/cssm/components/Removable/Removable.css +1 -1
  356. package/dist/cssm/components/Removable/Removable.js +73 -64
  357. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  358. package/dist/cssm/components/Search/Search.css +1 -1
  359. package/dist/cssm/components/Select/Select.css +1 -1
  360. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +2 -2
  361. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  362. package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
  363. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  364. package/dist/cssm/components/SplitCol/SplitCol.js +2 -4
  365. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  366. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js +38 -11
  367. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
  368. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
  369. package/dist/cssm/components/Switch/Switch.css +1 -1
  370. package/dist/cssm/components/Switch/Switch.js +15 -8
  371. package/dist/cssm/components/Switch/Switch.js.map +1 -1
  372. package/dist/cssm/components/Tabbar/Tabbar.css +1 -1
  373. package/dist/cssm/components/Tabbar/Tabbar.js +3 -1
  374. package/dist/cssm/components/Tabbar/Tabbar.js.map +1 -1
  375. package/dist/cssm/components/TabbarItem/TabbarItem.css +1 -1
  376. package/dist/cssm/components/TabbarItem/TabbarItem.js +26 -10
  377. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  378. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  379. package/dist/cssm/components/Textarea/Textarea.js +9 -6
  380. package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
  381. package/dist/cssm/components/Touch/Touch.js +21 -7
  382. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  383. package/dist/cssm/components/Typography/Caption/Caption.js +4 -2
  384. package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
  385. package/dist/cssm/components/Typography/Headline/Headline.js +2 -1
  386. package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
  387. package/dist/cssm/components/Typography/Subhead/Subhead.js +2 -1
  388. package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
  389. package/dist/cssm/components/Typography/Text/Text.js +2 -1
  390. package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
  391. package/dist/cssm/components/Typography/Title/Title.js +9 -4
  392. package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
  393. package/dist/cssm/components/View/View.js +67 -75
  394. package/dist/cssm/components/View/View.js.map +1 -1
  395. package/dist/cssm/components/View/ViewInfinite.js +79 -87
  396. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  397. package/dist/cssm/components/View/utils.js +6 -0
  398. package/dist/cssm/components/View/utils.js.map +1 -0
  399. package/dist/cssm/index.js +2 -0
  400. package/dist/cssm/index.js.map +1 -1
  401. package/dist/cssm/lib/accessibility.js.map +1 -1
  402. package/dist/cssm/lib/prefixClass.js +7 -6
  403. package/dist/cssm/lib/prefixClass.js.map +1 -1
  404. package/dist/cssm/lib/supportEvents.js +1 -4
  405. package/dist/cssm/lib/supportEvents.js.map +1 -1
  406. package/dist/cssm/styles/components.css +1 -1
  407. package/dist/cssm/styles/themes.css +1 -1
  408. package/dist/cssm/styles/vkcom_light.css +1 -1
  409. package/dist/index.d.ts +4 -0
  410. package/dist/index.js +2 -0
  411. package/dist/index.js.map +1 -1
  412. package/dist/lib/accessibility.d.ts +1 -1
  413. package/dist/lib/accessibility.js.map +1 -1
  414. package/dist/lib/prefixClass.js +7 -6
  415. package/dist/lib/prefixClass.js.map +1 -1
  416. package/dist/lib/supportEvents.d.ts +3 -1
  417. package/dist/lib/supportEvents.js +1 -4
  418. package/dist/lib/supportEvents.js.map +1 -1
  419. package/dist/types.d.ts +3 -0
  420. package/dist/vkui.css +2 -2
  421. package/dist/vkui.css.map +1 -1
  422. package/package.json +8 -4
  423. package/src/components/ActionSheet/ActionSheet.tsx +4 -5
  424. package/src/components/ActionSheet/Readme.md +18 -14
  425. package/src/components/Alert/Readme.md +15 -11
  426. package/src/components/Avatar/Avatar.tsx +5 -2
  427. package/src/components/Banner/Banner.tsx +4 -5
  428. package/src/components/Button/Button.css +26 -53
  429. package/src/components/Button/Button.tsx +2 -3
  430. package/src/components/Card/Readme.md +6 -6
  431. package/src/components/CardScroll/CardScroll.tsx +4 -1
  432. package/src/components/Cell/Cell.css +21 -58
  433. package/src/components/Cell/Cell.tsx +101 -162
  434. package/src/components/Cell/CellCheckbox/CellCheckbox.css +17 -0
  435. package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +42 -0
  436. package/src/components/Cell/CellDragger/CellDragger.css +4 -0
  437. package/src/components/Cell/CellDragger/CellDragger.tsx +40 -0
  438. package/src/components/Cell/Readme.md +89 -51
  439. package/src/components/Cell/useDraggable.tsx +112 -0
  440. package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
  441. package/src/components/Counter/Counter.tsx +2 -2
  442. package/src/components/CustomSelect/CustomSelect.tsx +3 -4
  443. package/src/components/DropdownIcon/DropdownIcon.css +3 -0
  444. package/src/components/DropdownIcon/DropdownIcon.tsx +20 -0
  445. package/src/components/Epic/Readme.md +2 -1
  446. package/src/components/FocusTrap/FocusTrap.tsx +13 -11
  447. package/src/components/FocusVisible/FocusVisible.css +12 -4
  448. package/src/components/FormField/FormField.css +0 -1
  449. package/src/components/FormField/FormField.tsx +2 -2
  450. package/src/components/FormItem/FormItem.css +13 -14
  451. package/src/components/FormItem/FormItem.tsx +2 -3
  452. package/src/components/FormLayout/FormLayout.tsx +2 -4
  453. package/src/components/FormLayoutGroup/FormLayoutGroup.css +11 -7
  454. package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +10 -1
  455. package/src/components/Gallery/Gallery.css +2 -3
  456. package/src/components/Gallery/Readme.md +89 -109
  457. package/src/components/GridAvatar/GridAvatar.css +37 -0
  458. package/src/components/GridAvatar/GridAvatar.tsx +55 -0
  459. package/src/components/GridAvatar/Readme.md +12 -0
  460. package/src/components/Group/Readme.md +18 -14
  461. package/src/components/Header/Header.tsx +4 -4
  462. package/src/components/HorizontalCell/HorizontalCell.tsx +3 -3
  463. package/src/components/HorizontalScroll/HorizontalScroll.tsx +14 -18
  464. package/src/components/HorizontalScroll/HorizontalScrollArrow.css +2 -2
  465. package/src/components/IconButton/IconButton.css +7 -0
  466. package/src/components/InitialsAvatar/InitialsAvatar.css +53 -0
  467. package/src/components/InitialsAvatar/InitialsAvatar.tsx +90 -0
  468. package/src/components/InitialsAvatar/Readme.md +14 -0
  469. package/src/components/Link/Link.tsx +1 -1
  470. package/src/components/MiniInfoCell/Readme.md +66 -62
  471. package/src/components/ModalDismissButton/Readme.md +13 -10
  472. package/src/components/ModalRoot/ModalRoot.tsx +159 -349
  473. package/src/components/ModalRoot/ModalRootContext.tsx +0 -1
  474. package/src/components/ModalRoot/ModalRootDesktop.tsx +54 -240
  475. package/src/components/ModalRoot/Readme.md +35 -27
  476. package/src/components/ModalRoot/types.ts +0 -1
  477. package/src/components/ModalRoot/useModalManager.tsx +174 -0
  478. package/src/components/NativeSelect/NativeSelect.tsx +2 -2
  479. package/src/components/Removable/Removable.css +16 -63
  480. package/src/components/Removable/Removable.tsx +84 -64
  481. package/src/components/ScreenSpinner/Readme.md +13 -9
  482. package/src/components/Search/Search.css +1 -1
  483. package/src/components/Select/Select.css +1 -1
  484. package/src/components/SelectMimicry/SelectMimicry.tsx +2 -2
  485. package/src/components/SimpleCell/SimpleCell.css +10 -18
  486. package/src/components/SimpleCell/SimpleCell.tsx +3 -5
  487. package/src/components/SplitCol/SplitCol.tsx +4 -8
  488. package/src/components/SplitLayout/Readme.md +2 -2
  489. package/src/components/SubnavigationBar/Readme.md +90 -86
  490. package/src/components/SubnavigationBar/SubnavigationBar.tsx +32 -14
  491. package/src/components/SubnavigationButton/SubnavigationButton.tsx +2 -3
  492. package/src/components/Switch/Readme.md +6 -6
  493. package/src/components/Switch/Switch.css +46 -15
  494. package/src/components/Switch/Switch.tsx +16 -8
  495. package/src/components/Tabbar/Tabbar.css +15 -4
  496. package/src/components/Tabbar/Tabbar.tsx +3 -1
  497. package/src/components/TabbarItem/Readme.md +72 -0
  498. package/src/components/TabbarItem/TabbarItem.css +65 -14
  499. package/src/components/TabbarItem/TabbarItem.tsx +46 -22
  500. package/src/components/Tappable/Tappable.tsx +2 -3
  501. package/src/components/Textarea/Readme.md +3 -0
  502. package/src/components/Textarea/Textarea.tsx +10 -6
  503. package/src/components/Touch/Touch.tsx +38 -25
  504. package/src/components/Typography/Caption/Caption.tsx +4 -4
  505. package/src/components/Typography/Headline/Headline.tsx +3 -3
  506. package/src/components/Typography/Subhead/Subhead.tsx +3 -3
  507. package/src/components/Typography/Text/Text.tsx +3 -4
  508. package/src/components/Typography/Title/Title.tsx +9 -5
  509. package/src/components/View/Readme.md +42 -56
  510. package/src/components/View/View.tsx +46 -61
  511. package/src/components/View/ViewInfinite.tsx +52 -67
  512. package/src/components/View/utils.ts +8 -0
  513. package/src/index.ts +4 -0
  514. package/src/lib/accessibility.ts +2 -2
  515. package/src/lib/prefixClass.ts +9 -6
  516. package/src/lib/supportEvents.ts +1 -4
  517. package/src/styles/components.css +4 -0
  518. package/src/styles/vkcom_light.css +3 -3
  519. package/src/testing/utils.tsx +34 -1
  520. package/src/types.ts +4 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"names":["React","Icon20Dropdown","classNames","Spinner","CustomScrollView","ChipsInput","chipsInputDefaultProps","CustomSelectOption","useChipsSelect","withAdaptivity","noop","useDOM","Caption","prefixClass","useExternRef","useGlobalEventListener","defaultFilterFn","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","ChipsSelect","props","style","onFocus","onKeyDown","className","fetching","renderOption","emptyText","getRef","getRootRef","disabled","placeholder","tabIndex","getOptionValue","getOptionLabel","showSelected","getNewOptionData","renderChip","popupDirection","creatable","filterFn","inputValue","creatableText","sizeY","closeAfterSelect","onChangeStart","after","options","restProps","document","scrollBoxRef","useRef","rootRef","fieldValue","selectedOptions","opened","setOpened","addOptionFromInput","filteredOptions","addOption","handleInputChange","clearInput","focusedOption","setFocusedOption","focusedOptionIndex","setFocusedOptionIndex","showCreatable","Boolean","length","handleFocus","e","handleClickOutside","rootNode","current","target","contains","chipsSelectOptions","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","handleKeyDown","key","defaultPrevented","preventDefault","option","includes","useEffect","findIndex","value","renderChipWrapper","renderChipProps","onRemove","onRemoveWrapper","stopPropagation","map","label","hovered","selected","find","selectedOption","children","onMouseDown","onMouseEnter","chipsSelectDefaultProps","defaultProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { Icon20Dropdown } from '@vkontakte/icons';\nimport { classNames } from '../../lib/classNames';\nimport Spinner from '../Spinner/Spinner';\nimport CustomScrollView from '../CustomScrollView/CustomScrollView';\nimport ChipsInput, { ChipsInputOption, ChipsInputProps, ChipsInputValue, RenderChip, chipsInputDefaultProps } from '../ChipsInput/ChipsInput';\nimport CustomSelectOption, { CustomSelectOptionProps } from '../CustomSelectOption/CustomSelectOption';\nimport { useChipsSelect } from './useChipsSelect';\nimport { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { noop } from '../../lib/utils';\nimport { useDOM } from '../../lib/dom';\nimport Caption from '../Typography/Caption/Caption';\nimport { prefixClass } from '../../lib/prefixClass';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { defaultFilterFn } from '../../lib/select';\nimport './ChipsSelect.css';\n\nexport interface ChipsSelectProps<Option extends ChipsInputOption> extends ChipsInputProps<Option>, AdaptivityProps {\n popupDirection?: 'top' | 'bottom';\n options?: Option[];\n filterFn?: false | ((value?: string, option?: Option, getOptionLabel?: Pick<ChipsInputProps<ChipsInputOption>, 'getOptionLabel'>['getOptionLabel']) => boolean);\n /**\n * Возможность создавать чипы которых нет в списке (по enter или с помощью пункта в меню, см creatableText)\n */\n creatable?: boolean;\n /**\n * Отрисовка лоадера вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Показывать или скрывать уже выбранные опции\n */\n showSelected?: boolean;\n /**\n * Текст для пункта создающего чипы при клике, так же отвечает за то будет ли показан этот пункт (показывается после того как в списке не отсанется опций)\n */\n creatableText?: string;\n /**\n * Текст который показывается если список опций пуст\n */\n emptyText?: string;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (e: React.MouseEvent | React.KeyboardEvent, option: Option) => void;\n /**\n * Закрытие выпадающиего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n}\n\ntype focusActionType = 'next' | 'prev';\n\nconst FOCUS_ACTION_NEXT: focusActionType = 'next';\nconst FOCUS_ACTION_PREV: focusActionType = 'prev';\n\nconst ChipsSelect = <Option extends ChipsInputOption>(props: ChipsSelectProps<Option>) => {\n const {\n style, onFocus, onKeyDown, className, fetching, renderOption, emptyText,\n getRef, getRootRef, disabled, placeholder, tabIndex, getOptionValue, getOptionLabel, showSelected,\n getNewOptionData, renderChip, popupDirection, creatable, filterFn, inputValue, creatableText, sizeY,\n closeAfterSelect, onChangeStart, after, options, ...restProps\n } = props;\n\n const { document } = useDOM();\n\n const scrollBoxRef = React.useRef<HTMLDivElement>(null);\n const rootRef = useExternRef(getRef);\n const {\n fieldValue, selectedOptions, opened, setOpened, addOptionFromInput,\n filteredOptions, addOption, handleInputChange, clearInput,\n focusedOption, setFocusedOption, focusedOptionIndex, setFocusedOptionIndex,\n } = useChipsSelect(props);\n\n const showCreatable = Boolean(creatable && creatableText && !filteredOptions.length && fieldValue);\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setOpened(true);\n setFocusedOptionIndex(0);\n onFocus(e);\n };\n\n const handleClickOutside = (e: MouseEvent) => {\n const { current: rootNode } = rootRef;\n if (rootNode && e.target !== rootNode && !rootNode.contains(e.target as Node)) {\n setOpened(false);\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n if (!item) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n };\n\n const focusOptionByIndex = (index: number, oldIndex: number) => {\n const { length } = filteredOptions;\n\n if (index < 0) {\n index = length - 1;\n } else if (index >= length) {\n index = 0;\n }\n\n if (index === oldIndex) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number|null, type: focusActionType) => {\n let index = typeof nextIndex !== 'number' ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n index = index + 1;\n } else if (type === FOCUS_ACTION_PREV) {\n index = index - 1;\n }\n\n focusOptionByIndex(index, focusedOptionIndex);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown(e);\n\n if (e.key === 'ArrowUp' && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_PREV);\n }\n }\n\n if (e.key === 'ArrowDown' && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_NEXT);\n }\n }\n\n if (e.key === 'Enter' && !e.defaultPrevented && opened) {\n const option = filteredOptions[focusedOptionIndex];\n\n if (option) {\n onChangeStart(e, option);\n\n if (!e.defaultPrevented) {\n addOption(option);\n setFocusedOptionIndex(null);\n clearInput();\n closeAfterSelect && setOpened(false);\n e.preventDefault();\n }\n } else if (!creatable) {\n e.preventDefault();\n }\n }\n\n if (['Escape', 'Tab'].includes(e.key) && !e.defaultPrevented && opened) {\n setOpened(false);\n }\n };\n\n React.useEffect(() => {\n if (filteredOptions[focusedOptionIndex]) {\n setFocusedOption(filteredOptions[focusedOptionIndex]);\n } else if (focusedOptionIndex === null || focusedOptionIndex === 0) {\n setFocusedOption(null);\n }\n }, [focusedOptionIndex, filteredOptions]);\n\n React.useEffect(() => {\n const index = focusedOption ? filteredOptions.findIndex(({ value }) => value === focusedOption.value) : -1;\n\n if (index === -1 && !!filteredOptions.length && !showCreatable && closeAfterSelect) {\n setFocusedOption(filteredOptions[0]);\n }\n }, [filteredOptions, focusedOption, showCreatable, closeAfterSelect]);\n\n useGlobalEventListener(document, 'click', handleClickOutside);\n\n const renderChipWrapper = (renderChipProps: RenderChip<Option>) => {\n const { onRemove } = renderChipProps;\n\n const onRemoveWrapper = (e: React.MouseEvent, value: ChipsInputValue) => {\n e.preventDefault();\n e.stopPropagation();\n\n onRemove(e, value);\n };\n\n return renderChip({ ...renderChipProps, onRemove: onRemoveWrapper });\n };\n\n return (\n <div\n vkuiClass={classNames('ChipsSelect', `ChipsSelect--sizeY-${sizeY}`)}\n ref={rootRef}\n style={style}\n className={className}\n >\n <ChipsInput\n {...restProps}\n tabIndex={tabIndex}\n value={selectedOptions}\n inputValue={fieldValue}\n getNewOptionData={getNewOptionData}\n getOptionLabel={getOptionLabel}\n getOptionValue={getOptionValue}\n renderChip={renderChipWrapper}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n vkuiClass={classNames({\n ['ChipsSelect__open']: opened,\n ['ChipsSelect__open--popupDirectionTop']: popupDirection === 'top',\n })}\n getRef={getRef}\n disabled={disabled}\n onInputChange={handleInputChange}\n after={<Icon20Dropdown />}\n />\n {opened &&\n <div\n vkuiClass={classNames('ChipsSelect__options', {\n ['ChipsSelect__options--popupDirectionTop']: popupDirection === 'top',\n })}\n onMouseLeave={() => setFocusedOptionIndex(null)}\n >\n <CustomScrollView boxRef={scrollBoxRef}>\n {fetching ? (\n <div vkuiClass=\"ChipsSelect__fetching\">\n <Spinner size=\"small\" />\n </div>\n ) : (\n <React.Fragment>\n {showCreatable && (\n <CustomSelectOption\n hovered={focusedOptionIndex === 0}\n onMouseDown={addOptionFromInput}\n onMouseEnter={() => setFocusedOptionIndex(0)}\n >\n {creatableText}\n </CustomSelectOption>\n )}\n {!filteredOptions?.length && !showCreatable && emptyText ? (\n <Caption level=\"1\" weight=\"regular\" vkuiClass=\"ChipsSelect__empty\">{emptyText}</Caption>\n ) :\n filteredOptions.map((option: Option, index: number) => {\n const label = getOptionLabel(option);\n const hovered = focusedOption && getOptionValue(option) === getOptionValue(focusedOption);\n const selected = selectedOptions.find((selectedOption: Option) => {\n return getOptionValue(selectedOption) === getOptionValue(option);\n });\n const value = getOptionValue(option);\n\n return (\n <React.Fragment key={`${typeof value}-${value}`}>\n {renderOption({\n className: prefixClass('ChipsSelect__option'),\n option,\n hovered,\n children: label,\n selected: !!selected,\n getRootRef: (e) => chipsSelectOptions[index] = e,\n onMouseDown: (e: React.MouseEvent<HTMLDivElement>) => {\n onChangeStart(e, option);\n\n if (!e.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter: () => setFocusedOptionIndex(index),\n })}\n </React.Fragment>\n );\n })\n }\n </React.Fragment>\n )}\n </CustomScrollView>\n </div>\n }\n </div>\n );\n};\n\nconst chipsSelectDefaultProps: ChipsSelectProps<any> = {\n ...chipsInputDefaultProps,\n emptyText: 'Ничего не найдено',\n creatableText: 'Создать значение',\n onChangeStart: noop,\n creatable: false,\n fetching: false,\n showSelected: true,\n closeAfterSelect: true,\n options: [],\n filterFn: defaultFilterFn,\n renderOption({ option, ...restProps }: CustomSelectOptionProps): React.ReactNode {\n return (\n <CustomSelectOption {...restProps} />\n );\n },\n};\n\nChipsSelect.defaultProps = chipsSelectDefaultProps;\n\nexport default withAdaptivity(ChipsSelect, { sizeY: true });\n"],"file":"ChipsSelect.js"}
1
+ {"version":3,"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"names":["React","DropdownIcon","classNames","Spinner","CustomScrollView","ChipsInput","chipsInputDefaultProps","CustomSelectOption","useChipsSelect","withAdaptivity","noop","useDOM","Caption","prefixClass","useExternRef","useGlobalEventListener","defaultFilterFn","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","ChipsSelect","props","style","onFocus","onKeyDown","className","fetching","renderOption","emptyText","getRef","getRootRef","disabled","placeholder","tabIndex","getOptionValue","getOptionLabel","showSelected","getNewOptionData","renderChip","popupDirection","creatable","filterFn","inputValue","creatableText","sizeY","closeAfterSelect","onChangeStart","after","options","restProps","document","scrollBoxRef","useRef","rootRef","fieldValue","selectedOptions","opened","setOpened","addOptionFromInput","filteredOptions","addOption","handleInputChange","clearInput","focusedOption","setFocusedOption","focusedOptionIndex","setFocusedOptionIndex","showCreatable","Boolean","length","handleFocus","e","handleClickOutside","rootNode","current","target","contains","chipsSelectOptions","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","handleKeyDown","key","defaultPrevented","preventDefault","option","includes","useEffect","findIndex","value","renderChipWrapper","renderChipProps","onRemove","onRemoveWrapper","stopPropagation","map","label","hovered","selected","find","selectedOption","children","onMouseDown","onMouseEnter","chipsSelectDefaultProps","defaultProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { classNames } from '../../lib/classNames';\nimport Spinner from '../Spinner/Spinner';\nimport CustomScrollView from '../CustomScrollView/CustomScrollView';\nimport ChipsInput, { ChipsInputOption, ChipsInputProps, ChipsInputValue, RenderChip, chipsInputDefaultProps } from '../ChipsInput/ChipsInput';\nimport CustomSelectOption, { CustomSelectOptionProps } from '../CustomSelectOption/CustomSelectOption';\nimport { useChipsSelect } from './useChipsSelect';\nimport { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { noop } from '../../lib/utils';\nimport { useDOM } from '../../lib/dom';\nimport Caption from '../Typography/Caption/Caption';\nimport { prefixClass } from '../../lib/prefixClass';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { defaultFilterFn } from '../../lib/select';\nimport './ChipsSelect.css';\n\nexport interface ChipsSelectProps<Option extends ChipsInputOption> extends ChipsInputProps<Option>, AdaptivityProps {\n popupDirection?: 'top' | 'bottom';\n options?: Option[];\n filterFn?: false | ((value?: string, option?: Option, getOptionLabel?: Pick<ChipsInputProps<ChipsInputOption>, 'getOptionLabel'>['getOptionLabel']) => boolean);\n /**\n * Возможность создавать чипы которых нет в списке (по enter или с помощью пункта в меню, см creatableText)\n */\n creatable?: boolean;\n /**\n * Отрисовка лоадера вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Показывать или скрывать уже выбранные опции\n */\n showSelected?: boolean;\n /**\n * Текст для пункта создающего чипы при клике, так же отвечает за то будет ли показан этот пункт (показывается после того как в списке не отсанется опций)\n */\n creatableText?: string;\n /**\n * Текст который показывается если список опций пуст\n */\n emptyText?: string;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (e: React.MouseEvent | React.KeyboardEvent, option: Option) => void;\n /**\n * Закрытие выпадающиего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n}\n\ntype focusActionType = 'next' | 'prev';\n\nconst FOCUS_ACTION_NEXT: focusActionType = 'next';\nconst FOCUS_ACTION_PREV: focusActionType = 'prev';\n\nconst ChipsSelect = <Option extends ChipsInputOption>(props: ChipsSelectProps<Option>) => {\n const {\n style, onFocus, onKeyDown, className, fetching, renderOption, emptyText,\n getRef, getRootRef, disabled, placeholder, tabIndex, getOptionValue, getOptionLabel, showSelected,\n getNewOptionData, renderChip, popupDirection, creatable, filterFn, inputValue, creatableText, sizeY,\n closeAfterSelect, onChangeStart, after, options, ...restProps\n } = props;\n\n const { document } = useDOM();\n\n const scrollBoxRef = React.useRef<HTMLDivElement>(null);\n const rootRef = useExternRef(getRef);\n const {\n fieldValue, selectedOptions, opened, setOpened, addOptionFromInput,\n filteredOptions, addOption, handleInputChange, clearInput,\n focusedOption, setFocusedOption, focusedOptionIndex, setFocusedOptionIndex,\n } = useChipsSelect(props);\n\n const showCreatable = Boolean(creatable && creatableText && !filteredOptions.length && fieldValue);\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setOpened(true);\n setFocusedOptionIndex(0);\n onFocus(e);\n };\n\n const handleClickOutside = (e: MouseEvent) => {\n const { current: rootNode } = rootRef;\n if (rootNode && e.target !== rootNode && !rootNode.contains(e.target as Node)) {\n setOpened(false);\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n if (!item) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n };\n\n const focusOptionByIndex = (index: number, oldIndex: number) => {\n const { length } = filteredOptions;\n\n if (index < 0) {\n index = length - 1;\n } else if (index >= length) {\n index = 0;\n }\n\n if (index === oldIndex) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number|null, type: focusActionType) => {\n let index = typeof nextIndex !== 'number' ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n index = index + 1;\n } else if (type === FOCUS_ACTION_PREV) {\n index = index - 1;\n }\n\n focusOptionByIndex(index, focusedOptionIndex);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown(e);\n\n if (e.key === 'ArrowUp' && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_PREV);\n }\n }\n\n if (e.key === 'ArrowDown' && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_NEXT);\n }\n }\n\n if (e.key === 'Enter' && !e.defaultPrevented && opened) {\n const option = filteredOptions[focusedOptionIndex];\n\n if (option) {\n onChangeStart(e, option);\n\n if (!e.defaultPrevented) {\n addOption(option);\n setFocusedOptionIndex(null);\n clearInput();\n closeAfterSelect && setOpened(false);\n e.preventDefault();\n }\n } else if (!creatable) {\n e.preventDefault();\n }\n }\n\n if (['Escape', 'Tab'].includes(e.key) && !e.defaultPrevented && opened) {\n setOpened(false);\n }\n };\n\n React.useEffect(() => {\n if (filteredOptions[focusedOptionIndex]) {\n setFocusedOption(filteredOptions[focusedOptionIndex]);\n } else if (focusedOptionIndex === null || focusedOptionIndex === 0) {\n setFocusedOption(null);\n }\n }, [focusedOptionIndex, filteredOptions]);\n\n React.useEffect(() => {\n const index = focusedOption ? filteredOptions.findIndex(({ value }) => value === focusedOption.value) : -1;\n\n if (index === -1 && !!filteredOptions.length && !showCreatable && closeAfterSelect) {\n setFocusedOption(filteredOptions[0]);\n }\n }, [filteredOptions, focusedOption, showCreatable, closeAfterSelect]);\n\n useGlobalEventListener(document, 'click', handleClickOutside);\n\n const renderChipWrapper = (renderChipProps: RenderChip<Option>) => {\n const { onRemove } = renderChipProps;\n\n const onRemoveWrapper = (e: React.MouseEvent, value: ChipsInputValue) => {\n e.preventDefault();\n e.stopPropagation();\n\n onRemove(e, value);\n };\n\n return renderChip({ ...renderChipProps, onRemove: onRemoveWrapper });\n };\n\n return (\n <div\n vkuiClass={classNames('ChipsSelect', `ChipsSelect--sizeY-${sizeY}`)}\n ref={rootRef}\n style={style}\n className={className}\n >\n <ChipsInput\n {...restProps}\n tabIndex={tabIndex}\n value={selectedOptions}\n inputValue={fieldValue}\n getNewOptionData={getNewOptionData}\n getOptionLabel={getOptionLabel}\n getOptionValue={getOptionValue}\n renderChip={renderChipWrapper}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n vkuiClass={classNames({\n ['ChipsSelect__open']: opened,\n ['ChipsSelect__open--popupDirectionTop']: popupDirection === 'top',\n })}\n getRef={getRef}\n disabled={disabled}\n onInputChange={handleInputChange}\n after={<DropdownIcon />}\n />\n {opened &&\n <div\n vkuiClass={classNames('ChipsSelect__options', {\n ['ChipsSelect__options--popupDirectionTop']: popupDirection === 'top',\n })}\n onMouseLeave={() => setFocusedOptionIndex(null)}\n >\n <CustomScrollView boxRef={scrollBoxRef}>\n {fetching ? (\n <div vkuiClass=\"ChipsSelect__fetching\">\n <Spinner size=\"small\" />\n </div>\n ) : (\n <React.Fragment>\n {showCreatable && (\n <CustomSelectOption\n hovered={focusedOptionIndex === 0}\n onMouseDown={addOptionFromInput}\n onMouseEnter={() => setFocusedOptionIndex(0)}\n >\n {creatableText}\n </CustomSelectOption>\n )}\n {!filteredOptions?.length && !showCreatable && emptyText ? (\n <Caption level=\"1\" weight=\"regular\" vkuiClass=\"ChipsSelect__empty\">{emptyText}</Caption>\n ) :\n filteredOptions.map((option: Option, index: number) => {\n const label = getOptionLabel(option);\n const hovered = focusedOption && getOptionValue(option) === getOptionValue(focusedOption);\n const selected = selectedOptions.find((selectedOption: Option) => {\n return getOptionValue(selectedOption) === getOptionValue(option);\n });\n const value = getOptionValue(option);\n\n return (\n <React.Fragment key={`${typeof value}-${value}`}>\n {renderOption({\n className: prefixClass('ChipsSelect__option'),\n option,\n hovered,\n children: label,\n selected: !!selected,\n getRootRef: (e) => chipsSelectOptions[index] = e,\n onMouseDown: (e: React.MouseEvent<HTMLDivElement>) => {\n onChangeStart(e, option);\n\n if (!e.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter: () => setFocusedOptionIndex(index),\n })}\n </React.Fragment>\n );\n })\n }\n </React.Fragment>\n )}\n </CustomScrollView>\n </div>\n }\n </div>\n );\n};\n\nconst chipsSelectDefaultProps: ChipsSelectProps<any> = {\n ...chipsInputDefaultProps,\n emptyText: 'Ничего не найдено',\n creatableText: 'Создать значение',\n onChangeStart: noop,\n creatable: false,\n fetching: false,\n showSelected: true,\n closeAfterSelect: true,\n options: [],\n filterFn: defaultFilterFn,\n renderOption({ option, ...restProps }: CustomSelectOptionProps): React.ReactNode {\n return (\n <CustomSelectOption {...restProps} />\n );\n },\n};\n\nChipsSelect.defaultProps = chipsSelectDefaultProps;\n\nexport default withAdaptivity(ChipsSelect, { sizeY: true });\n"],"file":"ChipsSelect.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Counter/Counter.tsx"],"names":["React","classNames","getClassName","usePlatform","Caption","Text","VKCOM","hasReactNode","CounterTypography","size","platform","restProps","Counter","props","mode","children","Children","count","defaultProps","memo"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,OAAOC,OAAP;AACA,OAAOC,IAAP;AACA,SAASC,KAAT;AACA,SAASC,YAAT;AAEA;;AAYA,IAAMC,iBAAmD,GAAG,SAAtDA,iBAAsD,OAAsC;AAAA,MAAnCC,IAAmC,QAAnCA,IAAmC;AAAA,MAA7BC,QAA6B,QAA7BA,QAA6B;AAAA,MAAhBC,SAAgB;;AAChG,SAAOF,IAAI,KAAK,GAAT,GACH,oBAAC,OAAD;AAAS,IAAA,KAAK,EAAC,GAAf;AAAmB,IAAA,MAAM,EAAEC,QAAQ,KAAKJ,KAAb,GAAqB,QAArB,GAAgC;AAA3D,KAA0EK,SAA1E,EADG,GAEH,oBAAC,IAAD;AAAM,IAAA,MAAM,EAAC;AAAb,KAA0BA,SAA1B,EAFJ;AAGD,CAJD;;AAMA,IAAMC,OAA+B,GAAG,SAAlCA,OAAkC,CAACC,KAAD,EAAyB;AAC/D,MAAQC,IAAR,GAA+CD,KAA/C,CAAQC,IAAR;AAAA,MAAcL,IAAd,GAA+CI,KAA/C,CAAcJ,IAAd;AAAA,MAAoBM,QAApB,GAA+CF,KAA/C,CAAoBE,QAApB;AAAA,MAAiCJ,SAAjC,4BAA+CE,KAA/C;;AACA,MAAMH,QAAQ,GAAGP,WAAW,EAA5B;;AAEA,MAAIH,KAAK,CAACgB,QAAN,CAAeC,KAAf,CAAqBF,QAArB,MAAmC,CAAvC,EAA0C;AACxC,WAAO,IAAP;AACD;;AAED,SACE,yCACMJ,SADN;AAEE,IAAA,SAAS,EAAEV,UAAU,CACnBC,YAAY,CAAC,SAAD,EAAYQ,QAAZ,CADO,qBAEPI,IAFO,wBAGLL,IAHK;AAFvB,MAQGF,YAAY,CAACQ,QAAD,CAAZ,IAA0B,oBAAC,iBAAD;AAAmB,IAAA,QAAQ,EAAEL,QAA7B;AAAuC,IAAA,IAAI,EAAED,IAA7C;AAAmD,IAAA,SAAS,EAAC;AAA7D,KAA4EM,QAA5E,CAR7B,CADF;AAYD,CApBD;;AAsBAH,OAAO,CAACM,YAAR,GAAuB;AACrBJ,EAAAA,IAAI,EAAE,WADe;AAErBL,EAAAA,IAAI,EAAE;AAFe,CAAvB;AAKA,4BAAeT,KAAK,CAACmB,IAAN,CAAWP,OAAX,CAAf","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport Caption from '../Typography/Caption/Caption';\nimport Text from '../Typography/Text/Text';\nimport { VKCOM } from '../../lib/platform';\nimport { hasReactNode } from '../../lib/utils';\nimport { HasPlatform } from '../../types';\nimport './Counter.css';\n\nexport interface CounterProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * Тип счетчика. При использовании компонента в качестве значения свойства `after` у `Button` эти значения игнорируются\n */\n mode?: 'secondary' | 'primary' | 'prominent';\n size?: 's' | 'm';\n}\n\ntype CounterTypographyProps = Pick<CounterProps, 'size'> & HasPlatform & { Component?: React.ElementType };\n\nconst CounterTypography: React.FC<CounterTypographyProps> = ({ size, platform, ...restProps }) => {\n return size === 's'\n ? <Caption level=\"2\" weight={platform === VKCOM ? 'medium' : 'regular'} {...restProps} />\n : <Text weight=\"medium\" {...restProps} />;\n};\n\nconst Counter: React.FC<CounterProps> = (props: CounterProps) => {\n const { mode, size, children, ...restProps } = props;\n const platform = usePlatform();\n\n if (React.Children.count(children) === 0) {\n return null;\n }\n\n return (\n <span\n {...restProps}\n vkuiClass={classNames(\n getClassName('Counter', platform),\n `Counter--${mode}`,\n `Counter--s-${size}`,\n )}\n >\n {hasReactNode(children) && <CounterTypography platform={platform} size={size} vkuiClass=\"Counter__in\">{children}</CounterTypography>}\n </span>\n );\n};\n\nCounter.defaultProps = {\n mode: 'secondary',\n size: 'm',\n};\n\nexport default React.memo(Counter);\n"],"file":"Counter.js"}
1
+ {"version":3,"sources":["../../../../src/components/Counter/Counter.tsx"],"names":["React","classNames","getClassName","usePlatform","Caption","Text","VKCOM","hasReactNode","CounterTypography","size","platform","restProps","Counter","props","mode","children","Children","count","defaultProps","memo"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,OAAOC,OAAP;AACA,OAAOC,IAAP;AACA,SAASC,KAAT;AACA,SAASC,YAAT;AAEA;;AAYA,IAAMC,iBAAmD,GAAG,SAAtDA,iBAAsD,OAAsC;AAAA,MAAnCC,IAAmC,QAAnCA,IAAmC;AAAA,MAA7BC,QAA6B,QAA7BA,QAA6B;AAAA,MAAhBC,SAAgB;;AAChG,SAAOF,IAAI,KAAK,GAAT,GACH,oBAAC,OAAD;AAAS,IAAA,KAAK,EAAC,GAAf;AAAmB,IAAA,MAAM,EAAEC,QAAQ,KAAKJ,KAAb,GAAqB,QAArB,GAAgC;AAA3D,KAA0EK,SAA1E,EADG,GAEH,oBAAC,IAAD;AAAM,IAAA,MAAM,EAAC;AAAb,KAA0BA,SAA1B,EAFJ;AAGD,CAJD;;AAMA,IAAMC,OAA+B,GAAG,SAAlCA,OAAkC,CAACC,KAAD,EAAyB;AAC/D,MAAQC,IAAR,GAA+CD,KAA/C,CAAQC,IAAR;AAAA,MAAcL,IAAd,GAA+CI,KAA/C,CAAcJ,IAAd;AAAA,MAAoBM,QAApB,GAA+CF,KAA/C,CAAoBE,QAApB;AAAA,MAAiCJ,SAAjC,4BAA+CE,KAA/C;;AACA,MAAMH,QAAQ,GAAGP,WAAW,EAA5B;;AAEA,MAAIH,KAAK,CAACgB,QAAN,CAAeC,KAAf,CAAqBF,QAArB,MAAmC,CAAvC,EAA0C;AACxC,WAAO,IAAP;AACD;;AAED,SACE,yCACMJ,SADN;AAEE,IAAA,SAAS,EAAEV,UAAU,CACnBC,YAAY,CAAC,SAAD,EAAYQ,QAAZ,CADO,qBAEPI,IAFO,wBAGLL,IAHK;AAFvB,MAQGF,YAAY,CAACQ,QAAD,CAAZ,IAA0B,oBAAC,iBAAD;AAAmB,IAAA,QAAQ,EAAEL,QAA7B;AAAuC,IAAA,IAAI,EAAED,IAA7C;AAAmD,IAAA,SAAS,EAAC;AAA7D,KAA4EM,QAA5E,CAR7B,CADF;AAYD,CApBD;;AAsBAH,OAAO,CAACM,YAAR,GAAuB;AACrBJ,EAAAA,IAAI,EAAE,WADe;AAErBL,EAAAA,IAAI,EAAE;AAFe,CAAvB;AAKA,4BAAeT,KAAK,CAACmB,IAAN,CAAWP,OAAX,CAAf","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport Caption from '../Typography/Caption/Caption';\nimport Text from '../Typography/Text/Text';\nimport { VKCOM } from '../../lib/platform';\nimport { hasReactNode } from '../../lib/utils';\nimport { HasComponent, HasPlatform } from '../../types';\nimport './Counter.css';\n\nexport interface CounterProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * Тип счетчика. При использовании компонента в качестве значения свойства `after` у `Button` эти значения игнорируются\n */\n mode?: 'secondary' | 'primary' | 'prominent';\n size?: 's' | 'm';\n}\n\ntype CounterTypographyProps = Pick<CounterProps, 'size'> & HasPlatform & HasComponent;\n\nconst CounterTypography: React.FC<CounterTypographyProps> = ({ size, platform, ...restProps }) => {\n return size === 's'\n ? <Caption level=\"2\" weight={platform === VKCOM ? 'medium' : 'regular'} {...restProps} />\n : <Text weight=\"medium\" {...restProps} />;\n};\n\nconst Counter: React.FC<CounterProps> = (props: CounterProps) => {\n const { mode, size, children, ...restProps } = props;\n const platform = usePlatform();\n\n if (React.Children.count(children) === 0) {\n return null;\n }\n\n return (\n <span\n {...restProps}\n vkuiClass={classNames(\n getClassName('Counter', platform),\n `Counter--${mode}`,\n `Counter--s-${size}`,\n )}\n >\n {hasReactNode(children) && <CounterTypography platform={platform} size={size} vkuiClass=\"Counter__in\">{children}</CounterTypography>}\n </span>\n );\n};\n\nCounter.defaultProps = {\n mode: 'secondary',\n size: 'm',\n};\n\nexport default React.memo(Counter);\n"],"file":"Counter.js"}
@@ -15,12 +15,12 @@ import SelectMimicry from "../SelectMimicry/SelectMimicry";
15
15
  import { debounce, setRef } from "../../lib/utils";
16
16
  import { classNames } from "../../lib/classNames";
17
17
  import CustomScrollView from "../CustomScrollView/CustomScrollView";
18
- import { SizeType, withAdaptivity } from "../../hoc/withAdaptivity";
18
+ import { withAdaptivity } from "../../hoc/withAdaptivity";
19
19
  import { withPlatform } from "../../hoc/withPlatform";
20
20
  import CustomSelectOption from "../CustomSelectOption/CustomSelectOption";
21
21
  import { getClassName } from "../../helpers/getClassName";
22
22
  import Input from "../Input/Input";
23
- import { Icon20Dropdown, Icon24Dropdown } from '@vkontakte/icons';
23
+ import { DropdownIcon } from "../DropdownIcon/DropdownIcon";
24
24
  import Caption from "../Typography/Caption/Caption";
25
25
  import { warnOnce } from "../../lib/warnOnce";
26
26
  import Spinner from "../Spinner/Spinner";
@@ -82,8 +82,6 @@ var CustomSelect = /*#__PURE__*/function (_React$Component) {
82
82
 
83
83
  _this = _super.call(this, props);
84
84
 
85
- _defineProperty(_assertThisInitialized(_this), "state", void 0);
86
-
87
85
  _defineProperty(_assertThisInitialized(_this), "keyboardInput", void 0);
88
86
 
89
87
  _defineProperty(_assertThisInitialized(_this), "isControlledOutside", void 0);
@@ -583,7 +581,7 @@ var CustomSelect = /*#__PURE__*/function (_React$Component) {
583
581
  // @ts-ignore
584
582
  ,
585
583
  onClick: onClick,
586
- after: sizeY === SizeType.COMPACT ? createScopedElement(Icon20Dropdown, null) : createScopedElement(Icon24Dropdown, null),
584
+ after: createScopedElement(DropdownIcon, null),
587
585
  placeholder: restProps.placeholder
588
586
  })) : createScopedElement(SelectMimicry, _extends({}, restProps, {
589
587
  "aria-hidden": true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"names":["React","SelectMimicry","debounce","setRef","classNames","CustomScrollView","SizeType","withAdaptivity","withPlatform","CustomSelectOption","getClassName","Input","Icon20Dropdown","Icon24Dropdown","Caption","warnOnce","Spinner","defaultFilterFn","is","findIndexAfter","options","startIndex","length","findIndex","option","i","disabled","findIndexBefore","endIndex","result","warn","checkOptionsValueType","Set","map","item","value","size","CustomSelect","props","createRef","keyboardInput","state","selectedOptionIndex","inputValue","filterFn","filter","setState","opened","focusedOptionIndex","isValidIndex","scrollToElement","onOpen","resetKeyboardInput","onClose","select","index","nativeSelectValue","event","Event","bubbles","selectEl","dispatchEvent","close","open","scrollTo","type","nextIndex","beforeIndex","focusOptionByIndex","e","Array","prototype","indexOf","call","currentTarget","parentNode","children","preventDefault","selectFocused","key","fullInput","optionIndex","label","toLowerCase","includes","scrollBoxRef","current","contains","target","isControlledOutside","findSelectedIndex","onChange","onInputChange","process","env","NODE_ENV","areOptionsShown","focusOption","onKeyboardInput","renderOption","hovered","selected","onClick","handleOptionClick","onMouseDown","handleOptionDown","onMouseEnter","handleOptionHover","element","getRef","defaultValue","initialValue","undefined","Number","center","dropdown","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","prevProps","searchable","name","className","getRootRef","popupDirection","sizeY","platform","style","onBlur","onFocus","emptyText","renderDropdown","fetching","restProps","getSelectedItem","defaultDropdownContent","resolvedContent","onLabelClick","onInputKeyDown","COMPACT","placeholder","handleKeyDownSelect","handleKeyUp","selectRef","onNativeSelectChange","resetFocusedOption","Component"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport SelectMimicry from '../SelectMimicry/SelectMimicry';\nimport { debounce, setRef } from '../../lib/utils';\nimport { classNames } from '../../lib/classNames';\nimport { NativeSelectProps } from '../NativeSelect/NativeSelect';\nimport CustomScrollView from '../CustomScrollView/CustomScrollView';\nimport { SizeType, withAdaptivity } from '../../hoc/withAdaptivity';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport CustomSelectOption, { CustomSelectOptionProps } from '../CustomSelectOption/CustomSelectOption';\nimport { getClassName } from '../../helpers/getClassName';\nimport { FormFieldProps } from '../FormField/FormField';\nimport { HasPlatform } from '../../types';\nimport Input from '../Input/Input';\nimport { Icon20Dropdown, Icon24Dropdown } from '@vkontakte/icons';\nimport Caption from '../Typography/Caption/Caption';\nimport { warnOnce } from '../../lib/warnOnce';\nimport Spinner from '../Spinner/Spinner';\nimport { defaultFilterFn } from '../../lib/select';\nimport { is } from '../../lib/is';\nimport './CustomSelect.css';\n\nconst findIndexAfter = (options: CustomSelectOptionInterface[], startIndex = -1) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex((option, i) => i > startIndex && !option.disabled);\n};\n\nconst findIndexBefore = (options: CustomSelectOptionInterface[], endIndex: number = options.length) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nconst warn = warnOnce('CustomSelect');\n\nconst checkOptionsValueType = (options: CustomSelectOptionInterface[]) => {\n if (new Set(options.map((item) => typeof item.value)).size > 1) {\n warn('Some values of your options have different types. CustomSelect onChange always returns a string type.');\n }\n};\n\ntype SelectValue = React.SelectHTMLAttributes<HTMLSelectElement>['value'];\n\nexport interface CustomSelectOptionInterface {\n value: SelectValue;\n label: string;\n disabled?: boolean;\n [index: string]: any;\n}\n\ninterface CustomSelectState {\n inputValue?: string;\n opened?: boolean;\n focusedOptionIndex?: number;\n selectedOptionIndex?: number;\n nativeSelectValue?: SelectValue;\n options?: CustomSelectOptionInterface[];\n}\n\nexport interface CustomSelectProps extends NativeSelectProps, HasPlatform, FormFieldProps {\n /**\n * Если `true`, то при клике на селект в нём появится текстовое поле для поиска по `options`. По умолчанию поиск\n * производится по `option.label`.\n */\n searchable?: boolean;\n /**\n * Текст, который будет отображен, если приходит пустой `options`\n */\n emptyText?: string;\n onInputChange?: (e: React.ChangeEvent, options: CustomSelectOptionInterface[]) => void | CustomSelectOptionInterface[];\n options: Array<{\n value: SelectValue;\n label: string;\n [index: string]: any;\n }>;\n /**\n * Функция для кастомной фильтрации. По-умолчанию поиск производится по option.label.\n */\n filterFn?: false | ((value: string, option: CustomSelectOptionInterface, getOptionLabel?: (option: Partial<CustomSelectOptionInterface>) => string) => boolean);\n popupDirection?: 'top' | 'bottom';\n /**\n * Рендер-проп для кастомного рендера опции.\n * В объекте аргумента приходят [свойства опции](#/CustomSelectOption?id=props)\n */\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Рендер-проп для кастомного рендера содержимого дропдауна.\n * В defaultDropdownContent содержится список опций в виде скроллящегося блока.\n */\n renderDropdown?: ({ defaultDropdownContent }: { defaultDropdownContent: React.ReactNode }) => React.ReactNode;\n /**\n * Если true, то в дропдауне вместо списка опций рисуется спиннер. При переданных renderDropdown и fetching: true,\n * \"победит\" renderDropdown\n */\n fetching?: boolean;\n onClose?: VoidFunction;\n onOpen?: VoidFunction;\n}\n\ntype MouseEventHandler = (event: React.MouseEvent<HTMLElement>) => void;\n\nclass CustomSelect extends React.Component<CustomSelectProps, CustomSelectState> {\n static defaultProps: CustomSelectProps = {\n searchable: false,\n renderOption({ option, ...props }): React.ReactNode {\n return (\n <CustomSelectOption {...props} />\n );\n },\n options: [],\n emptyText: 'Ничего не найдено',\n filterFn: defaultFilterFn,\n };\n\n public constructor(props: CustomSelectProps) {\n super(props);\n\n const { value, defaultValue } = props;\n\n const initialValue = value !== undefined ? value : defaultValue;\n\n this.keyboardInput = '';\n\n if (process.env.NODE_ENV === 'development') {\n checkOptionsValueType(props.options);\n }\n\n this.state = {\n opened: false,\n focusedOptionIndex: -1,\n selectedOptionIndex: this.findSelectedIndex(props.options, initialValue),\n nativeSelectValue: initialValue,\n options: props.options,\n inputValue: '',\n };\n\n if (props.value !== undefined) {\n this.isControlledOutside = true;\n }\n }\n\n public state: CustomSelectState;\n private keyboardInput: string;\n private isControlledOutside: boolean;\n private selectEl: HTMLSelectElement;\n private readonly scrollBoxRef = React.createRef<HTMLDivElement>();\n\n private readonly resetKeyboardInput = () => {\n this.keyboardInput = '';\n };\n\n private readonly getSelectedItem = () => {\n const { selectedOptionIndex, options } = this.state;\n\n if (!options.length) {\n return null;\n }\n\n return options[selectedOptionIndex];\n };\n\n get areOptionsShown() {\n return this.scrollBoxRef.current !== null;\n }\n\n filter = (options: CustomSelectProps['options'], inputValue: string, filterFn: CustomSelectProps['filterFn']) => {\n return typeof filterFn === 'function' ? options.filter((option) => filterFn(inputValue, option)) : options;\n };\n\n findSelectedIndex(options: CustomSelectOptionInterface[], value: SelectValue) {\n return options.findIndex((item) => {\n value = typeof item.value === 'number' ? Number(value) : value;\n return item.value === value;\n });\n }\n\n open = () => {\n this.setState(({ selectedOptionIndex }) => ({\n opened: true,\n focusedOptionIndex: selectedOptionIndex,\n }), () => {\n const { selectedOptionIndex } = this.state;\n\n if (this.isValidIndex(selectedOptionIndex)) {\n this.scrollToElement(selectedOptionIndex, true);\n }\n });\n typeof this.props.onOpen === 'function' && this.props.onOpen();\n };\n\n close = () => {\n this.resetKeyboardInput();\n\n this.setState(() => ({\n inputValue: '',\n opened: false,\n focusedOptionIndex: -1,\n options: this.props.options,\n }));\n typeof this.props.onClose === 'function' && this.props.onClose();\n };\n\n private isValidIndex(index: number) {\n return index >= 0 && index < this.state.options.length;\n }\n\n selectFocused = () => {\n const { focusedOptionIndex } = this.state;\n\n this.select(focusedOptionIndex);\n };\n\n select = (index: number) => {\n if (!this.isValidIndex(index)) {\n return;\n }\n\n const item = this.state.options[index];\n\n this.setState({\n nativeSelectValue: item.value,\n }, () => {\n const event = new Event('change', { bubbles: true });\n this.selectEl.dispatchEvent(event);\n });\n this.close();\n };\n\n onClick = () => {\n this.state.opened ? this.close() : this.open();\n };\n\n onFocus = () => {\n const event = new Event('focus');\n this.selectEl.dispatchEvent(event);\n };\n\n onBlur = () => {\n this.close();\n const event = new Event('blur');\n this.selectEl.dispatchEvent(event);\n };\n\n private scrollToElement(index: number, center = false) {\n const dropdown = this.scrollBoxRef.current;\n const item = dropdown ? (dropdown.children[index] as HTMLElement) : null;\n\n if (!item) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n }\n\n focusOptionByIndex = (index: number, scrollTo = true) => {\n if (index < 0 || index > this.state.options.length - 1) {\n return;\n }\n\n const option = this.state.options[index];\n\n if (option.disabled) {\n return;\n }\n\n scrollTo && this.scrollToElement(index);\n\n this.setState(() => ({\n focusedOptionIndex: index,\n }));\n };\n\n focusOption = (type: 'next' | 'prev') => {\n const { focusedOptionIndex } = this.state;\n let index = focusedOptionIndex;\n\n if (type === 'next') {\n const nextIndex = findIndexAfter(this.state.options, index);\n index = nextIndex === -1 ? findIndexAfter(this.state.options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === 'prev') {\n const beforeIndex = findIndexBefore(this.state.options, index);\n index = beforeIndex === -1 ? findIndexBefore(this.state.options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n this.focusOptionByIndex(index);\n };\n\n handleOptionHover: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n this.focusOptionByIndex(Array.prototype.indexOf.call(e.currentTarget.parentNode.children, e.currentTarget), false);\n };\n\n handleOptionDown: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault();\n };\n\n handleOptionClick: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n const index = Array.prototype.indexOf.call(e.currentTarget.parentNode.children, e.currentTarget);\n const option = this.state.options[index];\n\n if (option && !option.disabled) {\n this.selectFocused();\n }\n };\n\n resetFocusedOption = () => {\n this.setState({ focusedOptionIndex: -1 });\n };\n\n onKeyboardInput = (key: string) => {\n const fullInput = this.keyboardInput + key;\n\n const optionIndex = this.state.options.findIndex((option) => {\n return option.label.toLowerCase().includes(fullInput);\n });\n\n if (optionIndex > -1) {\n this.focusOptionByIndex(optionIndex);\n }\n\n this.keyboardInput = fullInput;\n };\n\n /**\n * Нужен для правильного поведения обработчика onClick на select. Фильтрует клики, которые были сделаны по\n * выпадающему списку.\n */\n onLabelClick = (e: React.MouseEvent<HTMLLabelElement>) => {\n if (this.scrollBoxRef.current?.contains(e.target as Node)) {\n e.preventDefault();\n }\n };\n\n onNativeSelectChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {\n const value = e.currentTarget.value;\n if (!this.isControlledOutside) {\n this.setState({\n selectedOptionIndex: this.findSelectedIndex(this.state.options, value),\n });\n }\n if (this.props.onChange) {\n this.props.onChange(e);\n }\n };\n\n onInputChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n if (this.props.onInputChange) {\n const options = this.props.onInputChange(e, this.props.options);\n if (options) {\n if (process.env.NODE_ENV === 'development') {\n warn('This filtration method is deprecated. Return value of onInputChange will' +\n ' be ignored in v5.0.0. For custom filtration please update props.options by yourself or use filterFn property');\n }\n this.setState({\n options,\n selectedOptionIndex: this.findSelectedIndex(options, this.state.nativeSelectValue),\n inputValue: e.target.value,\n });\n } else {\n this.setState({ inputValue: e.target.value });\n }\n } else {\n const options = this.filter(this.props.options, e.target.value, this.props.filterFn);\n this.setState({\n options,\n selectedOptionIndex: this.findSelectedIndex(options, this.state.nativeSelectValue),\n inputValue: e.target.value,\n });\n }\n };\n\n onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n ['ArrowUp', 'ArrowDown', 'Escape', 'Enter'].includes(event.key) && this.areOptionsShown && event.preventDefault();\n\n switch (event.key) {\n case 'ArrowUp':\n this.areOptionsShown && this.focusOption('prev');\n break;\n case 'ArrowDown':\n this.areOptionsShown && this.focusOption('next');\n break;\n case 'Escape':\n this.close();\n break;\n case 'Enter':\n this.areOptionsShown && this.selectFocused();\n break;\n }\n };\n\n handleKeyDownSelect = (event: React.KeyboardEvent) => {\n const { opened } = this.state;\n\n if (event.key.length === 1 && event.key !== ' ') {\n this.onKeyboardInput(event.key);\n return;\n }\n\n ['ArrowUp', 'ArrowDown', 'Escape', 'Enter'].includes(event.key) && this.areOptionsShown && event.preventDefault();\n\n switch (event.key) {\n case 'ArrowUp':\n if (opened) {\n this.areOptionsShown && this.focusOption('prev');\n } else {\n this.open();\n }\n break;\n case 'ArrowDown':\n if (opened) {\n this.areOptionsShown && this.focusOption('next');\n } else {\n this.open();\n }\n break;\n case 'Escape':\n this.close();\n break;\n case 'Enter':\n case 'Spacebar':\n case ' ':\n if (opened) {\n this.areOptionsShown && this.selectFocused();\n } else {\n this.open();\n }\n break;\n }\n };\n\n handleKeyUp = debounce(this.resetKeyboardInput, 1000);\n\n componentDidUpdate(prevProps: CustomSelectProps) {\n // Внутри useEffect и так is, можно убрать\n if (!is(prevProps.value, this.props.value) || prevProps.options !== this.props.options) {\n if (process.env.NODE_ENV === 'development') {\n checkOptionsValueType(this.props.options);\n }\n\n this.isControlledOutside = this.props.value !== undefined;\n const value = this.props.value === undefined ? this.state.nativeSelectValue : this.props.value;\n const options = this.props.searchable ? this.filter(this.props.options, this.state.inputValue, this.props.filterFn) : this.props.options;\n this.setState({\n nativeSelectValue: value,\n selectedOptionIndex: this.findSelectedIndex(options, value),\n options,\n });\n }\n }\n\n renderOption = (option: CustomSelectOptionInterface, index: number) => {\n const { focusedOptionIndex, selectedOptionIndex } = this.state;\n const { renderOption } = this.props;\n const hovered = index === focusedOptionIndex;\n const selected = index === selectedOptionIndex;\n\n return (\n <React.Fragment key={`${option.value}`}>\n {renderOption({\n option,\n hovered,\n children: option.label,\n selected,\n disabled: option.disabled,\n onClick: this.handleOptionClick,\n onMouseDown: this.handleOptionDown,\n onMouseEnter: this.handleOptionHover,\n })}\n </React.Fragment>\n );\n };\n\n selectRef = (element: HTMLSelectElement) => {\n this.selectEl = element;\n setRef(element, this.props.getRef);\n };\n\n render() {\n const { opened, nativeSelectValue } = this.state;\n const {\n searchable,\n name,\n className,\n getRef,\n getRootRef,\n popupDirection,\n options,\n sizeY,\n platform,\n style,\n onChange,\n onBlur,\n onFocus,\n onClick,\n renderOption,\n children,\n emptyText,\n onInputChange,\n filterFn,\n renderDropdown,\n onOpen,\n onClose,\n fetching,\n ...restProps\n } = this.props;\n const selected = this.getSelectedItem();\n const label = selected ? selected.label : undefined;\n\n const defaultDropdownContent = (\n <CustomScrollView boxRef={this.scrollBoxRef}>\n {this.state.options.map(this.renderOption)}\n {this.state.options.length === 0 &&\n <Caption level=\"1\" weight=\"regular\" vkuiClass=\"CustomSelect__empty\">\n {this.props.emptyText}\n </Caption>\n }\n </CustomScrollView>\n );\n\n let resolvedContent;\n\n if (typeof renderDropdown === 'function') {\n resolvedContent = renderDropdown({ defaultDropdownContent });\n } else if (fetching) {\n resolvedContent = (\n <div vkuiClass=\"CustomSelect__fetching\">\n <Spinner size=\"small\" />\n </div>\n );\n } else {\n resolvedContent = defaultDropdownContent;\n }\n\n return (\n <label\n vkuiClass={getClassName('CustomSelect', platform)}\n className={className}\n style={style}\n ref={getRootRef}\n onClick={this.onLabelClick}\n >\n {opened && searchable ?\n <Input\n {...restProps}\n autoFocus\n onBlur={this.onBlur}\n vkuiClass={classNames({\n 'CustomSelect__open': opened,\n 'CustomSelect__open--popupDirectionTop': popupDirection === 'top',\n })}\n value={this.state.inputValue}\n onKeyDown={this.onInputKeyDown}\n onChange={this.onInputChange}\n // TODO Ожидается, что клик поймает нативный select, но его перехвает Input. К сожалению, это приводит конфликтам типизации.\n // TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.\n // @ts-ignore\n onClick={onClick}\n after={sizeY === SizeType.COMPACT ? <Icon20Dropdown /> : <Icon24Dropdown />}\n placeholder={restProps.placeholder}\n /> :\n <SelectMimicry\n {...restProps}\n aria-hidden={true}\n onClick={this.onClick}\n onKeyDown={this.handleKeyDownSelect}\n onKeyUp={this.handleKeyUp}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n vkuiClass={classNames({\n 'CustomSelect__open': opened,\n 'CustomSelect__open--popupDirectionTop': popupDirection === 'top',\n })}\n >\n {label}\n </SelectMimicry>\n }\n <select\n ref={this.selectRef}\n name={name}\n onChange={this.onNativeSelectChange}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n value={nativeSelectValue}\n aria-hidden={true}\n vkuiClass=\"CustomSelect__control\"\n >\n {options.map((item) => <option key={`${item.value}`} value={item.value} />)}\n </select>\n {opened &&\n <div\n vkuiClass={classNames('CustomSelect__options', `CustomSelect__options--sizeY-${sizeY}`, {\n 'CustomSelect__options--popupDirectionTop': popupDirection === 'top',\n })}\n onMouseLeave={this.resetFocusedOption}\n >\n {resolvedContent}\n </div>\n }\n </label>\n );\n }\n}\n\nexport default withPlatform(withAdaptivity(CustomSelect, {\n sizeY: true,\n}));\n"],"file":"CustomSelect.js"}
1
+ {"version":3,"sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"names":["React","SelectMimicry","debounce","setRef","classNames","CustomScrollView","withAdaptivity","withPlatform","CustomSelectOption","getClassName","Input","DropdownIcon","Caption","warnOnce","Spinner","defaultFilterFn","is","findIndexAfter","options","startIndex","length","findIndex","option","i","disabled","findIndexBefore","endIndex","result","warn","checkOptionsValueType","Set","map","item","value","size","CustomSelect","props","createRef","keyboardInput","state","selectedOptionIndex","inputValue","filterFn","filter","setState","opened","focusedOptionIndex","isValidIndex","scrollToElement","onOpen","resetKeyboardInput","onClose","select","index","nativeSelectValue","event","Event","bubbles","selectEl","dispatchEvent","close","open","scrollTo","type","nextIndex","beforeIndex","focusOptionByIndex","e","Array","prototype","indexOf","call","currentTarget","parentNode","children","preventDefault","selectFocused","key","fullInput","optionIndex","label","toLowerCase","includes","scrollBoxRef","current","contains","target","isControlledOutside","findSelectedIndex","onChange","onInputChange","process","env","NODE_ENV","areOptionsShown","focusOption","onKeyboardInput","renderOption","hovered","selected","onClick","handleOptionClick","onMouseDown","handleOptionDown","onMouseEnter","handleOptionHover","element","getRef","defaultValue","initialValue","undefined","Number","center","dropdown","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","prevProps","searchable","name","className","getRootRef","popupDirection","sizeY","platform","style","onBlur","onFocus","emptyText","renderDropdown","fetching","restProps","getSelectedItem","defaultDropdownContent","resolvedContent","onLabelClick","onInputKeyDown","placeholder","handleKeyDownSelect","handleKeyUp","selectRef","onNativeSelectChange","resetFocusedOption","Component"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport SelectMimicry from '../SelectMimicry/SelectMimicry';\nimport { debounce, setRef } from '../../lib/utils';\nimport { classNames } from '../../lib/classNames';\nimport { NativeSelectProps } from '../NativeSelect/NativeSelect';\nimport CustomScrollView from '../CustomScrollView/CustomScrollView';\nimport { withAdaptivity } from '../../hoc/withAdaptivity';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport CustomSelectOption, { CustomSelectOptionProps } from '../CustomSelectOption/CustomSelectOption';\nimport { getClassName } from '../../helpers/getClassName';\nimport { FormFieldProps } from '../FormField/FormField';\nimport { HasPlatform } from '../../types';\nimport Input from '../Input/Input';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport Caption from '../Typography/Caption/Caption';\nimport { warnOnce } from '../../lib/warnOnce';\nimport Spinner from '../Spinner/Spinner';\nimport { defaultFilterFn } from '../../lib/select';\nimport { is } from '../../lib/is';\nimport './CustomSelect.css';\n\nconst findIndexAfter = (options: CustomSelectOptionInterface[], startIndex = -1) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex((option, i) => i > startIndex && !option.disabled);\n};\n\nconst findIndexBefore = (options: CustomSelectOptionInterface[], endIndex: number = options.length) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nconst warn = warnOnce('CustomSelect');\n\nconst checkOptionsValueType = (options: CustomSelectOptionInterface[]) => {\n if (new Set(options.map((item) => typeof item.value)).size > 1) {\n warn('Some values of your options have different types. CustomSelect onChange always returns a string type.');\n }\n};\n\ntype SelectValue = React.SelectHTMLAttributes<HTMLSelectElement>['value'];\n\nexport interface CustomSelectOptionInterface {\n value: SelectValue;\n label: string;\n disabled?: boolean;\n [index: string]: any;\n}\n\ninterface CustomSelectState {\n inputValue?: string;\n opened?: boolean;\n focusedOptionIndex?: number;\n selectedOptionIndex?: number;\n nativeSelectValue?: SelectValue;\n options?: CustomSelectOptionInterface[];\n}\n\nexport interface CustomSelectProps extends NativeSelectProps, HasPlatform, FormFieldProps {\n /**\n * Если `true`, то при клике на селект в нём появится текстовое поле для поиска по `options`. По умолчанию поиск\n * производится по `option.label`.\n */\n searchable?: boolean;\n /**\n * Текст, который будет отображен, если приходит пустой `options`\n */\n emptyText?: string;\n onInputChange?: (e: React.ChangeEvent, options: CustomSelectOptionInterface[]) => void | CustomSelectOptionInterface[];\n options: Array<{\n value: SelectValue;\n label: string;\n [index: string]: any;\n }>;\n /**\n * Функция для кастомной фильтрации. По-умолчанию поиск производится по option.label.\n */\n filterFn?: false | ((value: string, option: CustomSelectOptionInterface, getOptionLabel?: (option: Partial<CustomSelectOptionInterface>) => string) => boolean);\n popupDirection?: 'top' | 'bottom';\n /**\n * Рендер-проп для кастомного рендера опции.\n * В объекте аргумента приходят [свойства опции](#/CustomSelectOption?id=props)\n */\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Рендер-проп для кастомного рендера содержимого дропдауна.\n * В defaultDropdownContent содержится список опций в виде скроллящегося блока.\n */\n renderDropdown?: ({ defaultDropdownContent }: { defaultDropdownContent: React.ReactNode }) => React.ReactNode;\n /**\n * Если true, то в дропдауне вместо списка опций рисуется спиннер. При переданных renderDropdown и fetching: true,\n * \"победит\" renderDropdown\n */\n fetching?: boolean;\n onClose?: VoidFunction;\n onOpen?: VoidFunction;\n}\n\ntype MouseEventHandler = (event: React.MouseEvent<HTMLElement>) => void;\n\nclass CustomSelect extends React.Component<CustomSelectProps, CustomSelectState> {\n static defaultProps: CustomSelectProps = {\n searchable: false,\n renderOption({ option, ...props }): React.ReactNode {\n return (\n <CustomSelectOption {...props} />\n );\n },\n options: [],\n emptyText: 'Ничего не найдено',\n filterFn: defaultFilterFn,\n };\n\n public constructor(props: CustomSelectProps) {\n super(props);\n\n const { value, defaultValue } = props;\n\n const initialValue = value !== undefined ? value : defaultValue;\n\n this.keyboardInput = '';\n\n if (process.env.NODE_ENV === 'development') {\n checkOptionsValueType(props.options);\n }\n\n this.state = {\n opened: false,\n focusedOptionIndex: -1,\n selectedOptionIndex: this.findSelectedIndex(props.options, initialValue),\n nativeSelectValue: initialValue,\n options: props.options,\n inputValue: '',\n };\n\n if (props.value !== undefined) {\n this.isControlledOutside = true;\n }\n }\n\n private keyboardInput: string;\n private isControlledOutside: boolean;\n private selectEl: HTMLSelectElement;\n private readonly scrollBoxRef = React.createRef<HTMLDivElement>();\n\n private readonly resetKeyboardInput = () => {\n this.keyboardInput = '';\n };\n\n private readonly getSelectedItem = () => {\n const { selectedOptionIndex, options } = this.state;\n\n if (!options.length) {\n return null;\n }\n\n return options[selectedOptionIndex];\n };\n\n get areOptionsShown() {\n return this.scrollBoxRef.current !== null;\n }\n\n filter = (options: CustomSelectProps['options'], inputValue: string, filterFn: CustomSelectProps['filterFn']) => {\n return typeof filterFn === 'function' ? options.filter((option) => filterFn(inputValue, option)) : options;\n };\n\n findSelectedIndex(options: CustomSelectOptionInterface[], value: SelectValue) {\n return options.findIndex((item) => {\n value = typeof item.value === 'number' ? Number(value) : value;\n return item.value === value;\n });\n }\n\n open = () => {\n this.setState(({ selectedOptionIndex }) => ({\n opened: true,\n focusedOptionIndex: selectedOptionIndex,\n }), () => {\n const { selectedOptionIndex } = this.state;\n\n if (this.isValidIndex(selectedOptionIndex)) {\n this.scrollToElement(selectedOptionIndex, true);\n }\n });\n typeof this.props.onOpen === 'function' && this.props.onOpen();\n };\n\n close = () => {\n this.resetKeyboardInput();\n\n this.setState(() => ({\n inputValue: '',\n opened: false,\n focusedOptionIndex: -1,\n options: this.props.options,\n }));\n typeof this.props.onClose === 'function' && this.props.onClose();\n };\n\n private isValidIndex(index: number) {\n return index >= 0 && index < this.state.options.length;\n }\n\n selectFocused = () => {\n const { focusedOptionIndex } = this.state;\n\n this.select(focusedOptionIndex);\n };\n\n select = (index: number) => {\n if (!this.isValidIndex(index)) {\n return;\n }\n\n const item = this.state.options[index];\n\n this.setState({\n nativeSelectValue: item.value,\n }, () => {\n const event = new Event('change', { bubbles: true });\n this.selectEl.dispatchEvent(event);\n });\n this.close();\n };\n\n onClick = () => {\n this.state.opened ? this.close() : this.open();\n };\n\n onFocus = () => {\n const event = new Event('focus');\n this.selectEl.dispatchEvent(event);\n };\n\n onBlur = () => {\n this.close();\n const event = new Event('blur');\n this.selectEl.dispatchEvent(event);\n };\n\n private scrollToElement(index: number, center = false) {\n const dropdown = this.scrollBoxRef.current;\n const item = dropdown ? (dropdown.children[index] as HTMLElement) : null;\n\n if (!item) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n }\n\n focusOptionByIndex = (index: number, scrollTo = true) => {\n if (index < 0 || index > this.state.options.length - 1) {\n return;\n }\n\n const option = this.state.options[index];\n\n if (option.disabled) {\n return;\n }\n\n scrollTo && this.scrollToElement(index);\n\n this.setState(() => ({\n focusedOptionIndex: index,\n }));\n };\n\n focusOption = (type: 'next' | 'prev') => {\n const { focusedOptionIndex } = this.state;\n let index = focusedOptionIndex;\n\n if (type === 'next') {\n const nextIndex = findIndexAfter(this.state.options, index);\n index = nextIndex === -1 ? findIndexAfter(this.state.options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === 'prev') {\n const beforeIndex = findIndexBefore(this.state.options, index);\n index = beforeIndex === -1 ? findIndexBefore(this.state.options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n this.focusOptionByIndex(index);\n };\n\n handleOptionHover: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n this.focusOptionByIndex(Array.prototype.indexOf.call(e.currentTarget.parentNode.children, e.currentTarget), false);\n };\n\n handleOptionDown: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault();\n };\n\n handleOptionClick: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n const index = Array.prototype.indexOf.call(e.currentTarget.parentNode.children, e.currentTarget);\n const option = this.state.options[index];\n\n if (option && !option.disabled) {\n this.selectFocused();\n }\n };\n\n resetFocusedOption = () => {\n this.setState({ focusedOptionIndex: -1 });\n };\n\n onKeyboardInput = (key: string) => {\n const fullInput = this.keyboardInput + key;\n\n const optionIndex = this.state.options.findIndex((option) => {\n return option.label.toLowerCase().includes(fullInput);\n });\n\n if (optionIndex > -1) {\n this.focusOptionByIndex(optionIndex);\n }\n\n this.keyboardInput = fullInput;\n };\n\n /**\n * Нужен для правильного поведения обработчика onClick на select. Фильтрует клики, которые были сделаны по\n * выпадающему списку.\n */\n onLabelClick = (e: React.MouseEvent<HTMLLabelElement>) => {\n if (this.scrollBoxRef.current?.contains(e.target as Node)) {\n e.preventDefault();\n }\n };\n\n onNativeSelectChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {\n const value = e.currentTarget.value;\n if (!this.isControlledOutside) {\n this.setState({\n selectedOptionIndex: this.findSelectedIndex(this.state.options, value),\n });\n }\n if (this.props.onChange) {\n this.props.onChange(e);\n }\n };\n\n onInputChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n if (this.props.onInputChange) {\n const options = this.props.onInputChange(e, this.props.options);\n if (options) {\n if (process.env.NODE_ENV === 'development') {\n warn('This filtration method is deprecated. Return value of onInputChange will' +\n ' be ignored in v5.0.0. For custom filtration please update props.options by yourself or use filterFn property');\n }\n this.setState({\n options,\n selectedOptionIndex: this.findSelectedIndex(options, this.state.nativeSelectValue),\n inputValue: e.target.value,\n });\n } else {\n this.setState({ inputValue: e.target.value });\n }\n } else {\n const options = this.filter(this.props.options, e.target.value, this.props.filterFn);\n this.setState({\n options,\n selectedOptionIndex: this.findSelectedIndex(options, this.state.nativeSelectValue),\n inputValue: e.target.value,\n });\n }\n };\n\n onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n ['ArrowUp', 'ArrowDown', 'Escape', 'Enter'].includes(event.key) && this.areOptionsShown && event.preventDefault();\n\n switch (event.key) {\n case 'ArrowUp':\n this.areOptionsShown && this.focusOption('prev');\n break;\n case 'ArrowDown':\n this.areOptionsShown && this.focusOption('next');\n break;\n case 'Escape':\n this.close();\n break;\n case 'Enter':\n this.areOptionsShown && this.selectFocused();\n break;\n }\n };\n\n handleKeyDownSelect = (event: React.KeyboardEvent) => {\n const { opened } = this.state;\n\n if (event.key.length === 1 && event.key !== ' ') {\n this.onKeyboardInput(event.key);\n return;\n }\n\n ['ArrowUp', 'ArrowDown', 'Escape', 'Enter'].includes(event.key) && this.areOptionsShown && event.preventDefault();\n\n switch (event.key) {\n case 'ArrowUp':\n if (opened) {\n this.areOptionsShown && this.focusOption('prev');\n } else {\n this.open();\n }\n break;\n case 'ArrowDown':\n if (opened) {\n this.areOptionsShown && this.focusOption('next');\n } else {\n this.open();\n }\n break;\n case 'Escape':\n this.close();\n break;\n case 'Enter':\n case 'Spacebar':\n case ' ':\n if (opened) {\n this.areOptionsShown && this.selectFocused();\n } else {\n this.open();\n }\n break;\n }\n };\n\n handleKeyUp = debounce(this.resetKeyboardInput, 1000);\n\n componentDidUpdate(prevProps: CustomSelectProps) {\n // Внутри useEffect и так is, можно убрать\n if (!is(prevProps.value, this.props.value) || prevProps.options !== this.props.options) {\n if (process.env.NODE_ENV === 'development') {\n checkOptionsValueType(this.props.options);\n }\n\n this.isControlledOutside = this.props.value !== undefined;\n const value = this.props.value === undefined ? this.state.nativeSelectValue : this.props.value;\n const options = this.props.searchable ? this.filter(this.props.options, this.state.inputValue, this.props.filterFn) : this.props.options;\n this.setState({\n nativeSelectValue: value,\n selectedOptionIndex: this.findSelectedIndex(options, value),\n options,\n });\n }\n }\n\n renderOption = (option: CustomSelectOptionInterface, index: number) => {\n const { focusedOptionIndex, selectedOptionIndex } = this.state;\n const { renderOption } = this.props;\n const hovered = index === focusedOptionIndex;\n const selected = index === selectedOptionIndex;\n\n return (\n <React.Fragment key={`${option.value}`}>\n {renderOption({\n option,\n hovered,\n children: option.label,\n selected,\n disabled: option.disabled,\n onClick: this.handleOptionClick,\n onMouseDown: this.handleOptionDown,\n onMouseEnter: this.handleOptionHover,\n })}\n </React.Fragment>\n );\n };\n\n selectRef = (element: HTMLSelectElement) => {\n this.selectEl = element;\n setRef(element, this.props.getRef);\n };\n\n render() {\n const { opened, nativeSelectValue } = this.state;\n const {\n searchable,\n name,\n className,\n getRef,\n getRootRef,\n popupDirection,\n options,\n sizeY,\n platform,\n style,\n onChange,\n onBlur,\n onFocus,\n onClick,\n renderOption,\n children,\n emptyText,\n onInputChange,\n filterFn,\n renderDropdown,\n onOpen,\n onClose,\n fetching,\n ...restProps\n } = this.props;\n const selected = this.getSelectedItem();\n const label = selected ? selected.label : undefined;\n\n const defaultDropdownContent = (\n <CustomScrollView boxRef={this.scrollBoxRef}>\n {this.state.options.map(this.renderOption)}\n {this.state.options.length === 0 &&\n <Caption level=\"1\" weight=\"regular\" vkuiClass=\"CustomSelect__empty\">\n {this.props.emptyText}\n </Caption>\n }\n </CustomScrollView>\n );\n\n let resolvedContent;\n\n if (typeof renderDropdown === 'function') {\n resolvedContent = renderDropdown({ defaultDropdownContent });\n } else if (fetching) {\n resolvedContent = (\n <div vkuiClass=\"CustomSelect__fetching\">\n <Spinner size=\"small\" />\n </div>\n );\n } else {\n resolvedContent = defaultDropdownContent;\n }\n\n return (\n <label\n vkuiClass={getClassName('CustomSelect', platform)}\n className={className}\n style={style}\n ref={getRootRef}\n onClick={this.onLabelClick}\n >\n {opened && searchable ?\n <Input\n {...restProps}\n autoFocus\n onBlur={this.onBlur}\n vkuiClass={classNames({\n 'CustomSelect__open': opened,\n 'CustomSelect__open--popupDirectionTop': popupDirection === 'top',\n })}\n value={this.state.inputValue}\n onKeyDown={this.onInputKeyDown}\n onChange={this.onInputChange}\n // TODO Ожидается, что клик поймает нативный select, но его перехвает Input. К сожалению, это приводит конфликтам типизации.\n // TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.\n // @ts-ignore\n onClick={onClick}\n after={<DropdownIcon />}\n placeholder={restProps.placeholder}\n /> :\n <SelectMimicry\n {...restProps}\n aria-hidden={true}\n onClick={this.onClick}\n onKeyDown={this.handleKeyDownSelect}\n onKeyUp={this.handleKeyUp}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n vkuiClass={classNames({\n 'CustomSelect__open': opened,\n 'CustomSelect__open--popupDirectionTop': popupDirection === 'top',\n })}\n >\n {label}\n </SelectMimicry>\n }\n <select\n ref={this.selectRef}\n name={name}\n onChange={this.onNativeSelectChange}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n value={nativeSelectValue}\n aria-hidden={true}\n vkuiClass=\"CustomSelect__control\"\n >\n {options.map((item) => <option key={`${item.value}`} value={item.value} />)}\n </select>\n {opened &&\n <div\n vkuiClass={classNames('CustomSelect__options', `CustomSelect__options--sizeY-${sizeY}`, {\n 'CustomSelect__options--popupDirectionTop': popupDirection === 'top',\n })}\n onMouseLeave={this.resetFocusedOption}\n >\n {resolvedContent}\n </div>\n }\n </label>\n );\n }\n}\n\nexport default withPlatform(withAdaptivity(CustomSelect, {\n sizeY: true,\n}));\n"],"file":"CustomSelect.js"}
@@ -0,0 +1 @@
1
+ .vkuiDropdownIcon{cursor:pointer}
@@ -0,0 +1,20 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import { createScopedElement } from "../../lib/jsxRuntime";
3
+ import { Icon20Dropdown, Icon24ChevronDown } from '@vkontakte/icons';
4
+ import { SizeType } from "../AdaptivityProvider/AdaptivityContext";
5
+ import { getClassName } from "../../helpers/getClassName";
6
+ import { useAdaptivity } from "../../hooks/useAdaptivity";
7
+ import { usePlatform } from "../../hooks/usePlatform";
8
+ import "./DropdownIcon.css";
9
+ export var DropdownIcon = function DropdownIcon(props) {
10
+ var platform = usePlatform();
11
+
12
+ var _useAdaptivity = useAdaptivity(),
13
+ sizeY = _useAdaptivity.sizeY;
14
+
15
+ var Icon = sizeY === SizeType.COMPACT ? Icon20Dropdown : Icon24ChevronDown;
16
+ return createScopedElement(Icon, _extends({
17
+ vkuiClass: getClassName('DropdownIcon', platform)
18
+ }, props));
19
+ };
20
+ //# sourceMappingURL=DropdownIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/DropdownIcon/DropdownIcon.tsx"],"names":["Icon20Dropdown","Icon24ChevronDown","SizeType","getClassName","useAdaptivity","usePlatform","DropdownIcon","props","platform","sizeY","Icon","COMPACT"],"mappings":";;AACA,SAASA,cAAT,EAAyBC,iBAAzB,QAAkD,kBAAlD;AACA,SAASC,QAAT;AACA,SAASC,YAAT;AACA,SAASC,aAAT;AACA,SAASC,WAAT;AACA;AAEA,OAAO,IAAMC,YAAyD,GAAG,SAA5DA,YAA4D,CAACC,KAAD,EAAW;AAClF,MAAMC,QAAQ,GAAGH,WAAW,EAA5B;;AACA,uBAAkBD,aAAa,EAA/B;AAAA,MAAQK,KAAR,kBAAQA,KAAR;;AAEA,MAAMC,IAAI,GAAGD,KAAK,KAAKP,QAAQ,CAACS,OAAnB,GACTX,cADS,GAETC,iBAFJ;AAIA,SACE,oBAAC,IAAD;AAAM,IAAA,SAAS,EAAEE,YAAY,CAAC,cAAD,EAAiBK,QAAjB;AAA7B,KAA6DD,KAA7D,EADF;AAGD,CAXM","sourcesContent":["import * as React from 'react';\nimport { Icon20Dropdown, Icon24ChevronDown } from '@vkontakte/icons';\nimport { SizeType } from '../AdaptivityProvider/AdaptivityContext';\nimport { getClassName } from '../../helpers/getClassName';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './DropdownIcon.css';\n\nexport const DropdownIcon: React.FC<React.HTMLAttributes<HTMLElement>> = (props) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n\n const Icon = sizeY === SizeType.COMPACT\n ? Icon20Dropdown\n : Icon24ChevronDown;\n\n return (\n <Icon vkuiClass={getClassName('DropdownIcon', platform)} {...props} />\n );\n};\n"],"file":"DropdownIcon.js"}
@@ -60,15 +60,13 @@ export var FocusTrap = function FocusTrap(_ref) {
60
60
  }, []); // HANDLE FOCUSABLE NODES
61
61
 
62
62
  useIsomorphicLayoutEffect(function () {
63
- var _ref$current2;
64
-
65
63
  if (!ref.current) {
66
64
  return noop();
67
65
  }
68
66
 
69
- var nodes = []; // eslint-disable-next-line no-restricted-properties
70
-
71
- (_ref$current2 = ref.current) === null || _ref$current2 === void 0 ? void 0 : _ref$current2.querySelectorAll(FOCUSABLE_ELEMENTS).forEach(function (focusableEl) {
67
+ var nodes = [];
68
+ Array.prototype.forEach.call( // eslint-disable-next-line no-restricted-properties
69
+ ref.current.querySelectorAll(FOCUSABLE_ELEMENTS), function (focusableEl) {
72
70
  var _window$getComputedSt = window.getComputedStyle(focusableEl),
73
71
  display = _window$getComputedSt.display,
74
72
  visibility = _window$getComputedSt.visibility;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/FocusTrap/FocusTrap.tsx"],"names":["React","useExternRef","useGlobalEventListener","useTimeout","FOCUSABLE_ELEMENTS_LIST","Keys","pressedKey","useDOM","useIsomorphicLayoutEffect","noop","AppRootContext","FOCUSABLE_ELEMENTS","join","FocusTrap","Component","onClose","restoreFocus","timeout","getRootRef","children","restProps","ref","document","window","activeElement","useState","focusableNodes","setFocusableNodes","restoreFocusTo","setRestoreFocusTo","useContext","keyboardInput","focusOnTrapMount","current","contains","length","focus","set","nodes","querySelectorAll","forEach","focusableEl","getComputedStyle","display","visibility","push","focusOnTrapUnmount","onDocumentKeydown","e","TAB","lastIdx","targetIdx","findIndex","node","target","shouldFocusFirstNode","shiftKey","preventDefault","ESCAPE","capture"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { FOCUSABLE_ELEMENTS_LIST, Keys, pressedKey } from '../../lib/accessibility';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { noop } from '../../lib/utils';\nimport { HasRootRef } from '../../types';\nimport { AppRootContext } from '../AppRoot/AppRootContext';\n\nconst FOCUSABLE_ELEMENTS: string = FOCUSABLE_ELEMENTS_LIST.join();\n\nexport interface FocusTrapProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement> {\n Component?: React.ElementType;\n onClose?: (props?: any) => void;\n restoreFocus?: boolean;\n timeout?: number;\n}\n\nexport const FocusTrap: React.FC<FocusTrapProps> = ({\n Component = 'div',\n onClose = noop,\n restoreFocus = true,\n timeout = 0,\n getRootRef,\n children,\n ...restProps\n}) => {\n const ref = useExternRef<HTMLElement>(getRootRef);\n\n const { document, window } = useDOM();\n const activeElement = document.activeElement as HTMLElement;\n\n const [focusableNodes, setFocusableNodes] = React.useState<HTMLElement[]>(null);\n const [restoreFocusTo, setRestoreFocusTo] = React.useState<HTMLElement>(null);\n\n // HANDLE TRAP MOUNT\n\n const { keyboardInput } = React.useContext(AppRootContext);\n const focusOnTrapMount = useTimeout(() => {\n if (keyboardInput && !ref.current?.contains(activeElement) && focusableNodes?.length) {\n focusableNodes[0].focus();\n }\n }, timeout);\n useIsomorphicLayoutEffect(() => {\n focusOnTrapMount.set();\n }, []);\n\n // HANDLE FOCUSABLE NODES\n\n useIsomorphicLayoutEffect(() => {\n if (!ref.current) {\n return noop();\n }\n\n const nodes: HTMLElement[] = [];\n // eslint-disable-next-line no-restricted-properties\n ref.current?.querySelectorAll(FOCUSABLE_ELEMENTS).forEach((focusableEl) => {\n const { display, visibility } = window.getComputedStyle(focusableEl);\n\n if (display !== 'none' && visibility !== 'hidden') {\n nodes.push(focusableEl as HTMLElement);\n }\n });\n\n if (nodes?.length) {\n setFocusableNodes(nodes);\n }\n\n return noop();\n }, [children]);\n\n // HANDLE TRAP UNMOUNT\n\n const focusOnTrapUnmount = useTimeout(() => {\n if (restoreFocusTo) {\n restoreFocusTo.focus();\n }\n }, timeout);\n useIsomorphicLayoutEffect(() => {\n if (restoreFocus) {\n setRestoreFocusTo(activeElement);\n\n return () => {\n focusOnTrapUnmount.set();\n };\n }\n\n return noop();\n }, [restoreFocus]);\n\n const onDocumentKeydown = (e: KeyboardEvent) => {\n if (pressedKey(e) === Keys.TAB && focusableNodes?.length) {\n const lastIdx = focusableNodes.length - 1;\n const targetIdx = focusableNodes.findIndex((node) => node === e.target);\n\n const shouldFocusFirstNode = targetIdx === -1 || targetIdx === lastIdx && !e.shiftKey;\n\n if (shouldFocusFirstNode || targetIdx === 0 && e.shiftKey) {\n e.preventDefault();\n\n const node = focusableNodes[shouldFocusFirstNode ? 0 : lastIdx];\n\n if (node !== activeElement) {\n node.focus();\n }\n\n return false;\n }\n }\n\n if (pressedKey(e) === Keys.ESCAPE) {\n onClose();\n }\n\n return true;\n };\n useGlobalEventListener(document, 'keydown', onDocumentKeydown, { capture: true });\n\n return (\n <Component ref={ref} {...restProps}>\n {children}\n </Component>\n );\n};\n"],"file":"FocusTrap.js"}
1
+ {"version":3,"sources":["../../../../src/components/FocusTrap/FocusTrap.tsx"],"names":["React","useExternRef","useGlobalEventListener","useTimeout","FOCUSABLE_ELEMENTS_LIST","Keys","pressedKey","useDOM","useIsomorphicLayoutEffect","noop","AppRootContext","FOCUSABLE_ELEMENTS","join","FocusTrap","Component","onClose","restoreFocus","timeout","getRootRef","children","restProps","ref","document","window","activeElement","useState","focusableNodes","setFocusableNodes","restoreFocusTo","setRestoreFocusTo","useContext","keyboardInput","focusOnTrapMount","current","contains","length","focus","set","nodes","Array","prototype","forEach","call","querySelectorAll","focusableEl","getComputedStyle","display","visibility","push","focusOnTrapUnmount","onDocumentKeydown","e","TAB","lastIdx","targetIdx","findIndex","node","target","shouldFocusFirstNode","shiftKey","preventDefault","ESCAPE","capture"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,sBAAT;AACA,SAASC,UAAT;AACA,SAASC,uBAAT,EAAkCC,IAAlC,EAAwCC,UAAxC;AACA,SAASC,MAAT;AACA,SAASC,yBAAT;AACA,SAASC,IAAT;AAEA,SAASC,cAAT;AAEA,IAAMC,kBAA0B,GAAGP,uBAAuB,CAACQ,IAAxB,EAAnC;AAQA,OAAO,IAAMC,SAAmC,GAAG,SAAtCA,SAAsC,OAQ7C;AAAA,4BAPJC,SAOI;AAAA,MAPJA,SAOI,+BAPQ,KAOR;AAAA,0BANJC,OAMI;AAAA,MANJA,OAMI,6BANMN,IAMN;AAAA,+BALJO,YAKI;AAAA,MALJA,YAKI,kCALW,IAKX;AAAA,0BAJJC,OAII;AAAA,MAJJA,OAII,6BAJM,CAIN;AAAA,MAHJC,UAGI,QAHJA,UAGI;AAAA,MAFJC,QAEI,QAFJA,QAEI;AAAA,MADDC,SACC;;AACJ,MAAMC,GAAG,GAAGpB,YAAY,CAAciB,UAAd,CAAxB;;AAEA,gBAA6BX,MAAM,EAAnC;AAAA,MAAQe,QAAR,WAAQA,QAAR;AAAA,MAAkBC,MAAlB,WAAkBA,MAAlB;;AACA,MAAMC,aAAa,GAAGF,QAAQ,CAACE,aAA/B;;AAEA,wBAA4CxB,KAAK,CAACyB,QAAN,CAA8B,IAA9B,CAA5C;AAAA;AAAA,MAAOC,cAAP;AAAA,MAAuBC,iBAAvB;;AACA,yBAA4C3B,KAAK,CAACyB,QAAN,CAA4B,IAA5B,CAA5C;AAAA;AAAA,MAAOG,cAAP;AAAA,MAAuBC,iBAAvB,uBAPI,CASJ;;;AAEA,0BAA0B7B,KAAK,CAAC8B,UAAN,CAAiBpB,cAAjB,CAA1B;AAAA,MAAQqB,aAAR,qBAAQA,aAAR;;AACA,MAAMC,gBAAgB,GAAG7B,UAAU,CAAC,YAAM;AAAA;;AACxC,QAAI4B,aAAa,IAAI,kBAACV,GAAG,CAACY,OAAL,yCAAC,aAAaC,QAAb,CAAsBV,aAAtB,CAAD,CAAjB,IAA0DE,cAA1D,aAA0DA,cAA1D,eAA0DA,cAAc,CAAES,MAA9E,EAAsF;AACpFT,MAAAA,cAAc,CAAC,CAAD,CAAd,CAAkBU,KAAlB;AACD;AACF,GAJkC,EAIhCnB,OAJgC,CAAnC;AAKAT,EAAAA,yBAAyB,CAAC,YAAM;AAC9BwB,IAAAA,gBAAgB,CAACK,GAAjB;AACD,GAFwB,EAEtB,EAFsB,CAAzB,CAjBI,CAqBJ;;AAEA7B,EAAAA,yBAAyB,CAAC,YAAM;AAC9B,QAAI,CAACa,GAAG,CAACY,OAAT,EAAkB;AAChB,aAAOxB,IAAI,EAAX;AACD;;AAED,QAAM6B,KAAoB,GAAG,EAA7B;AACAC,IAAAA,KAAK,CAACC,SAAN,CAAgBC,OAAhB,CAAwBC,IAAxB,EACE;AACArB,IAAAA,GAAG,CAACY,OAAJ,CAAYU,gBAAZ,CAA6BhC,kBAA7B,CAFF,EAGE,UAACiC,WAAD,EAA0B;AACxB,kCAAgCrB,MAAM,CAACsB,gBAAP,CAAwBD,WAAxB,CAAhC;AAAA,UAAQE,OAAR,yBAAQA,OAAR;AAAA,UAAiBC,UAAjB,yBAAiBA,UAAjB;;AAEA,UAAID,OAAO,KAAK,MAAZ,IAAsBC,UAAU,KAAK,QAAzC,EAAmD;AACjDT,QAAAA,KAAK,CAACU,IAAN,CAAWJ,WAAX;AACD;AACF,KATH;;AAYA,QAAIN,KAAJ,aAAIA,KAAJ,eAAIA,KAAK,CAAEH,MAAX,EAAmB;AACjBR,MAAAA,iBAAiB,CAACW,KAAD,CAAjB;AACD;;AAED,WAAO7B,IAAI,EAAX;AACD,GAvBwB,EAuBtB,CAACU,QAAD,CAvBsB,CAAzB,CAvBI,CAgDJ;;AAEA,MAAM8B,kBAAkB,GAAG9C,UAAU,CAAC,YAAM;AAC1C,QAAIyB,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAACQ,KAAf;AACD;AACF,GAJoC,EAIlCnB,OAJkC,CAArC;AAKAT,EAAAA,yBAAyB,CAAC,YAAM;AAC9B,QAAIQ,YAAJ,EAAkB;AAChBa,MAAAA,iBAAiB,CAACL,aAAD,CAAjB;AAEA,aAAO,YAAM;AACXyB,QAAAA,kBAAkB,CAACZ,GAAnB;AACD,OAFD;AAGD;;AAED,WAAO5B,IAAI,EAAX;AACD,GAVwB,EAUtB,CAACO,YAAD,CAVsB,CAAzB;;AAYA,MAAMkC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,CAAD,EAAsB;AAC9C,QAAI7C,UAAU,CAAC6C,CAAD,CAAV,KAAkB9C,IAAI,CAAC+C,GAAvB,IAA8B1B,cAA9B,aAA8BA,cAA9B,eAA8BA,cAAc,CAAES,MAAlD,EAA0D;AACxD,UAAMkB,OAAO,GAAG3B,cAAc,CAACS,MAAf,GAAwB,CAAxC;AACA,UAAMmB,SAAS,GAAG5B,cAAc,CAAC6B,SAAf,CAAyB,UAACC,IAAD;AAAA,eAAUA,IAAI,KAAKL,CAAC,CAACM,MAArB;AAAA,OAAzB,CAAlB;AAEA,UAAMC,oBAAoB,GAAGJ,SAAS,KAAK,CAAC,CAAf,IAAoBA,SAAS,KAAKD,OAAd,IAAyB,CAACF,CAAC,CAACQ,QAA7E;;AAEA,UAAID,oBAAoB,IAAIJ,SAAS,KAAK,CAAd,IAAmBH,CAAC,CAACQ,QAAjD,EAA2D;AACzDR,QAAAA,CAAC,CAACS,cAAF;AAEA,YAAMJ,IAAI,GAAG9B,cAAc,CAACgC,oBAAoB,GAAG,CAAH,GAAOL,OAA5B,CAA3B;;AAEA,YAAIG,IAAI,KAAKhC,aAAb,EAA4B;AAC1BgC,UAAAA,IAAI,CAACpB,KAAL;AACD;;AAED,eAAO,KAAP;AACD;AACF;;AAED,QAAI9B,UAAU,CAAC6C,CAAD,CAAV,KAAkB9C,IAAI,CAACwD,MAA3B,EAAmC;AACjC9C,MAAAA,OAAO;AACR;;AAED,WAAO,IAAP;AACD,GAzBD;;AA0BAb,EAAAA,sBAAsB,CAACoB,QAAD,EAAW,SAAX,EAAsB4B,iBAAtB,EAAyC;AAAEY,IAAAA,OAAO,EAAE;AAAX,GAAzC,CAAtB;AAEA,SACE,oBAAC,SAAD;AAAW,IAAA,GAAG,EAAEzC;AAAhB,KAAyBD,SAAzB,GACGD,QADH,CADF;AAKD,CA5GM","sourcesContent":["import * as React from 'react';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { FOCUSABLE_ELEMENTS_LIST, Keys, pressedKey } from '../../lib/accessibility';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { noop } from '../../lib/utils';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { AppRootContext } from '../AppRoot/AppRootContext';\n\nconst FOCUSABLE_ELEMENTS: string = FOCUSABLE_ELEMENTS_LIST.join();\n\nexport interface FocusTrapProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, HasComponent {\n onClose?: (props?: any) => void;\n restoreFocus?: boolean;\n timeout?: number;\n}\n\nexport const FocusTrap: React.FC<FocusTrapProps> = ({\n Component = 'div',\n onClose = noop,\n restoreFocus = true,\n timeout = 0,\n getRootRef,\n children,\n ...restProps\n}) => {\n const ref = useExternRef<HTMLElement>(getRootRef);\n\n const { document, window } = useDOM();\n const activeElement = document.activeElement as HTMLElement;\n\n const [focusableNodes, setFocusableNodes] = React.useState<HTMLElement[]>(null);\n const [restoreFocusTo, setRestoreFocusTo] = React.useState<HTMLElement>(null);\n\n // HANDLE TRAP MOUNT\n\n const { keyboardInput } = React.useContext(AppRootContext);\n const focusOnTrapMount = useTimeout(() => {\n if (keyboardInput && !ref.current?.contains(activeElement) && focusableNodes?.length) {\n focusableNodes[0].focus();\n }\n }, timeout);\n useIsomorphicLayoutEffect(() => {\n focusOnTrapMount.set();\n }, []);\n\n // HANDLE FOCUSABLE NODES\n\n useIsomorphicLayoutEffect(() => {\n if (!ref.current) {\n return noop();\n }\n\n const nodes: HTMLElement[] = [];\n Array.prototype.forEach.call(\n // eslint-disable-next-line no-restricted-properties\n ref.current.querySelectorAll(FOCUSABLE_ELEMENTS),\n (focusableEl: Element) => {\n const { display, visibility } = window.getComputedStyle(focusableEl);\n\n if (display !== 'none' && visibility !== 'hidden') {\n nodes.push(focusableEl as HTMLElement);\n }\n },\n );\n\n if (nodes?.length) {\n setFocusableNodes(nodes);\n }\n\n return noop();\n }, [children]);\n\n // HANDLE TRAP UNMOUNT\n\n const focusOnTrapUnmount = useTimeout(() => {\n if (restoreFocusTo) {\n restoreFocusTo.focus();\n }\n }, timeout);\n useIsomorphicLayoutEffect(() => {\n if (restoreFocus) {\n setRestoreFocusTo(activeElement);\n\n return () => {\n focusOnTrapUnmount.set();\n };\n }\n\n return noop();\n }, [restoreFocus]);\n\n const onDocumentKeydown = (e: KeyboardEvent) => {\n if (pressedKey(e) === Keys.TAB && focusableNodes?.length) {\n const lastIdx = focusableNodes.length - 1;\n const targetIdx = focusableNodes.findIndex((node) => node === e.target);\n\n const shouldFocusFirstNode = targetIdx === -1 || targetIdx === lastIdx && !e.shiftKey;\n\n if (shouldFocusFirstNode || targetIdx === 0 && e.shiftKey) {\n e.preventDefault();\n\n const node = focusableNodes[shouldFocusFirstNode ? 0 : lastIdx];\n\n if (node !== activeElement) {\n node.focus();\n }\n\n return false;\n }\n }\n\n if (pressedKey(e) === Keys.ESCAPE) {\n onClose();\n }\n\n return true;\n };\n useGlobalEventListener(document, 'keydown', onDocumentKeydown, { capture: true });\n\n return (\n <Component ref={ref} {...restProps}>\n {children}\n </Component>\n );\n};\n"],"file":"FocusTrap.js"}
@@ -1 +1 @@
1
- .vkuiAppRoot--keyboard-input .vkuiTappable:focus>.vkuiFocusVisible,.vkuiTappable:focus-visible>.vkuiFocusVisible{position:absolute;top:2px;left:2px;right:2px;bottom:2px;border-radius:inherit;box-shadow:0 0 0 2px #2688eb;box-shadow:0 0 0 2px var(--accent);-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;z-index:0}.vkuiAppRoot--keyboard-input .vkuiTappable:focus>.vkuiFocusVisible--outside,.vkuiTappable:focus-visible>.vkuiFocusVisible--outside{top:-2px;left:-2px;right:-2px;bottom:-2px}@media (prefers-reduced-motion:no-preference){.vkuiAppRoot--keyboard-input .vkuiTappable:focus>.vkuiFocusVisible,.vkuiTappable:focus-visible>.vkuiFocusVisible{top:4px;left:4px;right:4px;bottom:4px;-webkit-animation:vkui-animation-focus-visible .15s ease-in-out forwards;animation:vkui-animation-focus-visible .15s ease-in-out forwards;-webkit-animation-delay:.01ms;animation-delay:.01ms;will-change:top,left,bottom,right}.vkuiAppRoot--keyboard-input .vkuiTappable:focus>.vkuiFocusVisible--outside,.vkuiTappable:focus-visible>.vkuiFocusVisible--outside{top:0;left:0;bottom:0;right:0;-webkit-animation-name:vkui-animation-focus-visible-outside;animation-name:vkui-animation-focus-visible-outside}@-webkit-keyframes vkui-animation-focus-visible{to{top:2px;left:2px;bottom:2px;right:2px;will-change:auto}}@keyframes vkui-animation-focus-visible{to{top:2px;left:2px;bottom:2px;right:2px;will-change:auto}}@-webkit-keyframes vkui-animation-focus-visible-outside{to{top:-2px;left:-2px;bottom:-2px;right:-2px;will-change:auto}}@keyframes vkui-animation-focus-visible-outside{to{top:-2px;left:-2px;bottom:-2px;right:-2px;will-change:auto}}}
1
+ .vkuiAppRoot--keyboard-input .vkuiTappable:focus>.vkuiFocusVisible,.vkuiTappable:focus-visible>.vkuiFocusVisible,.vkuiAppRoot--keyboard-input input:focus~.vkuiFocusVisible,input:focus-visible~.vkuiFocusVisible{position:absolute;top:2px;left:2px;right:2px;bottom:2px;border-radius:inherit;box-shadow:0 0 0 2px #2688eb;box-shadow:0 0 0 2px var(--accent);-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;z-index:0}.vkuiAppRoot--keyboard-input .vkuiTappable:focus>.vkuiFocusVisible--outside,.vkuiTappable:focus-visible>.vkuiFocusVisible--outside,.vkuiAppRoot--keyboard-input input:focus~.vkuiFocusVisible--outside,input:focus-visible~.vkuiFocusVisible--outside{top:-2px;left:-2px;right:-2px;bottom:-2px}@media (prefers-reduced-motion:no-preference){.vkuiAppRoot--keyboard-input .vkuiTappable:focus>.vkuiFocusVisible,.vkuiTappable:focus-visible>.vkuiFocusVisible,.vkuiAppRoot--keyboard-input input:focus~.vkuiFocusVisible,input:focus-visible~.vkuiFocusVisible{top:4px;left:4px;right:4px;bottom:4px;-webkit-animation:vkui-animation-focus-visible .15s ease-in-out forwards;animation:vkui-animation-focus-visible .15s ease-in-out forwards;-webkit-animation-delay:.01ms;animation-delay:.01ms;will-change:top,left,bottom,right}.vkuiAppRoot--keyboard-input .vkuiTappable:focus>.vkuiFocusVisible--outside,.vkuiTappable:focus-visible>.vkuiFocusVisible--outside,.vkuiAppRoot--keyboard-input input:focus~.vkuiFocusVisible--outside,input:focus-visible~.vkuiFocusVisible--outside{top:0;left:0;bottom:0;right:0;-webkit-animation-name:vkui-animation-focus-visible-outside;animation-name:vkui-animation-focus-visible-outside}@-webkit-keyframes vkui-animation-focus-visible{to{top:2px;left:2px;bottom:2px;right:2px;will-change:auto}}@keyframes vkui-animation-focus-visible{to{top:2px;left:2px;bottom:2px;right:2px;will-change:auto}}@-webkit-keyframes vkui-animation-focus-visible-outside{to{top:-2px;left:-2px;bottom:-2px;right:-2px;will-change:auto}}@keyframes vkui-animation-focus-visible-outside{to{top:-2px;left:-2px;bottom:-2px;right:-2px;will-change:auto}}}
@@ -1 +1 @@
1
- .vkuiFormField{position:relative;display:flex;flex-flow:row nowrap;align-items:center;padding:1px;box-sizing:border-box;border-radius:8px}.vkuiFormField>*{border-radius:inherit}.vkuiFormField__after{flex-shrink:0;position:relative;display:flex;align-items:center;align-content:center;justify-content:center;min-width:44px;height:44px;margin:-1px;color:#99a2ad;color:var(--icon_secondary);z-index:2}.vkuiChipsInput .vkuiFormField__after{z-index:3}.vkuiFormField__border{position:absolute;left:0;top:0;width:100%;height:100%;border:1px solid rgba(0,0,0,.12);border:1px solid var(--field_border);background:#f2f3f5;background:var(--field_background);content:'';box-sizing:border-box;z-index:1;-webkit-transform-origin:left top;transform-origin:left top}.vkuiFormItem--error .vkuiFormField__border{background:#faebeb;background:var(--field_error_background);border-color:#e64646;border-color:var(--field_error_border)}.vkuiFormItem--valid .vkuiFormField__border{border-color:#4bb34b;border-color:var(--field_valid_border)}.vkuiFormField--disabled{opacity:.64;cursor:default;pointer-events:none}.vkuiFormField:not(.vkuiFormField--disabled) .vkuiFormField__border--hover{border-color:rgba(0,0,0,.24);border-color:var(--icon_tertiary_alpha)}.vkuiFormField:focus-within .vkuiFormField__border,.vkuiFormField :focus~.vkuiFormField__border,.vkuiChipsInput--focused .vkuiFormField__border{border-color:#2688eb;border-color:var(--accent);background:#f2f3f5;background:var(--field_background)}.vkuiFormField--sizeY-compact .vkuiFormField__after{min-width:36px;height:36px}.vkuiFormField--ios{border-radius:10px}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.vkuiFormField--ios .vkuiFormField__border{border-radius:20px;-webkit-transform:scale(.5);transform:scale(.5);width:200%;height:200%}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){.vkuiFormField--ios .vkuiFormField__border{border-radius:31.25px;-webkit-transform:scale(.32);transform:scale(.32);width:312.5%;height:312.5%}}.vkuiFormField--vkcom{border-radius:6px}.vkuiModalCardBase__header+.vkuiFormField,.vkuiModalCardBase__subheader+.vkuiFormField{margin-top:16px}
1
+ .vkuiFormField{position:relative;display:flex;align-items:center;padding:1px;box-sizing:border-box;border-radius:8px}.vkuiFormField>*{border-radius:inherit}.vkuiFormField__after{flex-shrink:0;position:relative;display:flex;align-items:center;align-content:center;justify-content:center;min-width:44px;height:44px;margin:-1px;color:#99a2ad;color:var(--icon_secondary);z-index:2}.vkuiChipsInput .vkuiFormField__after{z-index:3}.vkuiFormField__border{position:absolute;left:0;top:0;width:100%;height:100%;border:1px solid rgba(0,0,0,.12);border:1px solid var(--field_border);background:#f2f3f5;background:var(--field_background);content:'';box-sizing:border-box;z-index:1;-webkit-transform-origin:left top;transform-origin:left top}.vkuiFormItem--error .vkuiFormField__border{background:#faebeb;background:var(--field_error_background);border-color:#e64646;border-color:var(--field_error_border)}.vkuiFormItem--valid .vkuiFormField__border{border-color:#4bb34b;border-color:var(--field_valid_border)}.vkuiFormField--disabled{opacity:.64;cursor:default;pointer-events:none}.vkuiFormField:not(.vkuiFormField--disabled) .vkuiFormField__border--hover{border-color:rgba(0,0,0,.24);border-color:var(--icon_tertiary_alpha)}.vkuiFormField:focus-within .vkuiFormField__border,.vkuiFormField :focus~.vkuiFormField__border,.vkuiChipsInput--focused .vkuiFormField__border{border-color:#2688eb;border-color:var(--accent);background:#f2f3f5;background:var(--field_background)}.vkuiFormField--sizeY-compact .vkuiFormField__after{min-width:36px;height:36px}.vkuiFormField--ios{border-radius:10px}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.vkuiFormField--ios .vkuiFormField__border{border-radius:20px;-webkit-transform:scale(.5);transform:scale(.5);width:200%;height:200%}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){.vkuiFormField--ios .vkuiFormField__border{border-radius:31.25px;-webkit-transform:scale(.32);transform:scale(.32);width:312.5%;height:312.5%}}.vkuiFormField--vkcom{border-radius:6px}.vkuiModalCardBase__header+.vkuiFormField,.vkuiModalCardBase__subheader+.vkuiFormField{margin-top:16px}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/FormField/FormField.tsx"],"names":["React","getClassName","classNames","usePlatform","hasReactNode","useAdaptivity","FormField","Component","children","getRootRef","after","disabled","restProps","platform","sizeY","useState","hover","setHover","handleMouseEnter","e","stopPropagation","handleMouseLeave"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AAEA,SAASC,YAAT;AACA,SAASC,aAAT;AACA;AAiBA,OAAO,IAAMC,SAAsC,GAAG,SAAzCA,SAAyC,OAO7B;AAAA,4BANvBC,SAMuB;AAAA,MANvBA,SAMuB,+BANX,KAMW;AAAA,MALvBC,QAKuB,QALvBA,QAKuB;AAAA,MAJvBC,UAIuB,QAJvBA,UAIuB;AAAA,MAHvBC,KAGuB,QAHvBA,KAGuB;AAAA,MAFvBC,QAEuB,QAFvBA,QAEuB;AAAA,MADpBC,SACoB;;AACvB,MAAMC,QAAQ,GAAGV,WAAW,EAA5B;;AACA,uBAAkBE,aAAa,EAA/B;AAAA,MAAQS,KAAR,kBAAQA,KAAR;;AACA,wBAA0Bd,KAAK,CAACe,QAAN,CAAe,KAAf,CAA1B;AAAA;AAAA,MAAOC,KAAP;AAAA,MAAcC,QAAd;;AAEA,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,CAAD,EAAmB;AAC1CA,IAAAA,CAAC,CAACC,eAAF;AACAH,IAAAA,QAAQ,CAAC,IAAD,CAAR;AACD,GAHD;;AAKA,MAAMI,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACF,CAAD,EAAmB;AAC1CA,IAAAA,CAAC,CAACC,eAAF;AACAH,IAAAA,QAAQ,CAAC,KAAD,CAAR;AACD,GAHD;;AAKA,SACE,oBAAC,SAAD;AACE,IAAA,IAAI,EAAC;AADP,KAEML,SAFN;AAGE,IAAA,GAAG,EAAEH,UAHP;AAIE,IAAA,YAAY,EAAES,gBAJhB;AAKE,IAAA,YAAY,EAAEG,gBALhB;AAME,IAAA,SAAS,EAAEnB,UAAU,CACnBD,YAAY,CAAC,WAAD,EAAcY,QAAd,CADO,6BAECC,KAFD,GAGnB;AACE,6BAAuBH;AADzB,KAHmB;AANvB,MAcGH,QAdH,EAeGJ,YAAY,CAACM,KAAD,CAAZ,IACC;AAAK,IAAA,IAAI,EAAC,cAAV;AAAyB,IAAA,SAAS,EAAC;AAAnC,KACGA,KADH,CAhBJ,EAoBE;AAAK,IAAA,IAAI,EAAC,cAAV;AAAyB,IAAA,SAAS,EAAER,UAAU,CAAC,mBAAD,EAAsB;AAClE,kCAA4B,CAACS,QAAD,IAAaK;AADyB,KAAtB;AAA9C,IApBF,CADF;AA0BD,CAhDM","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRootRef } from '../../types';\nimport { hasReactNode } from '../../lib/utils';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport './FormField.css';\n\nexport interface FormFieldProps {\n /**\n * Иконка 12|16|20|24|28 или `IconButton`.\n */\n after?: React.ReactNode;\n}\n\ninterface FormFieldOwnProps extends\n React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n FormFieldProps {\n Component?: React.ElementType;\n disabled?: boolean;\n}\n\nexport const FormField: React.FC<FormFieldOwnProps> = ({\n Component = 'div',\n children,\n getRootRef,\n after,\n disabled,\n ...restProps\n}: FormFieldOwnProps) => {\n const platform = usePlatform();\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 vkuiClass={classNames(\n getClassName('FormField', platform),\n `FormField--sizeY-${sizeY}`,\n {\n 'FormField--disabled': disabled,\n },\n )}\n >\n {children}\n {hasReactNode(after) && (\n <div role=\"presentation\" vkuiClass=\"FormField__after\">\n {after}\n </div>\n )}\n <div role=\"presentation\" vkuiClass={classNames('FormField__border', {\n 'FormField__border--hover': !disabled && hover,\n })} />\n </Component>\n );\n};\n"],"file":"FormField.js"}
1
+ {"version":3,"sources":["../../../../src/components/FormField/FormField.tsx"],"names":["React","getClassName","classNames","usePlatform","hasReactNode","useAdaptivity","FormField","Component","children","getRootRef","after","disabled","restProps","platform","sizeY","useState","hover","setHover","handleMouseEnter","e","stopPropagation","handleMouseLeave"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,YAAT;AACA,SAASC,UAAT;AACA,SAASC,WAAT;AAEA,SAASC,YAAT;AACA,SAASC,aAAT;AACA;AAiBA,OAAO,IAAMC,SAAsC,GAAG,SAAzCA,SAAyC,OAO7B;AAAA,4BANvBC,SAMuB;AAAA,MANvBA,SAMuB,+BANX,KAMW;AAAA,MALvBC,QAKuB,QALvBA,QAKuB;AAAA,MAJvBC,UAIuB,QAJvBA,UAIuB;AAAA,MAHvBC,KAGuB,QAHvBA,KAGuB;AAAA,MAFvBC,QAEuB,QAFvBA,QAEuB;AAAA,MADpBC,SACoB;;AACvB,MAAMC,QAAQ,GAAGV,WAAW,EAA5B;;AACA,uBAAkBE,aAAa,EAA/B;AAAA,MAAQS,KAAR,kBAAQA,KAAR;;AACA,wBAA0Bd,KAAK,CAACe,QAAN,CAAe,KAAf,CAA1B;AAAA;AAAA,MAAOC,KAAP;AAAA,MAAcC,QAAd;;AAEA,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,CAAD,EAAmB;AAC1CA,IAAAA,CAAC,CAACC,eAAF;AACAH,IAAAA,QAAQ,CAAC,IAAD,CAAR;AACD,GAHD;;AAKA,MAAMI,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACF,CAAD,EAAmB;AAC1CA,IAAAA,CAAC,CAACC,eAAF;AACAH,IAAAA,QAAQ,CAAC,KAAD,CAAR;AACD,GAHD;;AAKA,SACE,oBAAC,SAAD;AACE,IAAA,IAAI,EAAC;AADP,KAEML,SAFN;AAGE,IAAA,GAAG,EAAEH,UAHP;AAIE,IAAA,YAAY,EAAES,gBAJhB;AAKE,IAAA,YAAY,EAAEG,gBALhB;AAME,IAAA,SAAS,EAAEnB,UAAU,CACnBD,YAAY,CAAC,WAAD,EAAcY,QAAd,CADO,6BAECC,KAFD,GAGnB;AACE,6BAAuBH;AADzB,KAHmB;AANvB,MAcGH,QAdH,EAeGJ,YAAY,CAACM,KAAD,CAAZ,IACC;AAAK,IAAA,IAAI,EAAC,cAAV;AAAyB,IAAA,SAAS,EAAC;AAAnC,KACGA,KADH,CAhBJ,EAoBE;AAAK,IAAA,IAAI,EAAC,cAAV;AAAyB,IAAA,SAAS,EAAER,UAAU,CAAC,mBAAD,EAAsB;AAClE,kCAA4B,CAACS,QAAD,IAAaK;AADyB,KAAtB;AAA9C,IApBF,CADF;AA0BD,CAhDM","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { hasReactNode } from '../../lib/utils';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport './FormField.css';\n\nexport interface FormFieldProps {\n /**\n * Иконка 12|16|20|24|28 или `IconButton`.\n */\n after?: React.ReactNode;\n}\n\ninterface FormFieldOwnProps extends\n React.AllHTMLAttributes<HTMLElement>,\n HasRootRef<HTMLElement>,\n HasComponent,\n FormFieldProps {\n disabled?: boolean;\n}\n\nexport const FormField: React.FC<FormFieldOwnProps> = ({\n Component = 'div',\n children,\n getRootRef,\n after,\n disabled,\n ...restProps\n}: FormFieldOwnProps) => {\n const platform = usePlatform();\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 vkuiClass={classNames(\n getClassName('FormField', platform),\n `FormField--sizeY-${sizeY}`,\n {\n 'FormField--disabled': disabled,\n },\n )}\n >\n {children}\n {hasReactNode(after) && (\n <div role=\"presentation\" vkuiClass=\"FormField__after\">\n {after}\n </div>\n )}\n <div role=\"presentation\" vkuiClass={classNames('FormField__border', {\n 'FormField__border--hover': !disabled && hover,\n })} />\n </Component>\n );\n};\n"],"file":"FormField.js"}
@@ -1 +1 @@
1
- .vkuiFormItem{display:block;padding:12px 16px;padding:12px var(--formitem_padding)}.vkuiFormItem__removable{flex-grow:1;flex-shrink:initial;min-width:0;max-width:100%;overflow:hidden}.vkuiFormItem__top{padding-top:2px;padding-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#6d7885;color:var(--text_subhead)}.vkuiFormItem__bottom{color:#818c99;color:var(--text_secondary);padding-top:8px}.vkuiFormItem--error .vkuiFormItem__bottom{color:#e64646;color:var(--field_error_border)}.vkuiFormItem--valid .vkuiFormItem__bottom,.vkuiFormItem--verified .vkuiFormItem__bottom{color:#4bb34b;color:var(--field_valid_border)}.vkuiFormItem--sizeY-compact .vkuiFormItem__top{padding-bottom:6px}.vkuiFormItem--sizeY-compact .vkuiFormItem__bottom{padding-top:6px}.vkuiFormItem--ios{--formitem_padding: 12px}.vkuiFormItem--ios.vkuiFormItem--removable{padding-left:0;margin-left:0}.vkuiFormLayoutGroup .vkuiRemovable .vkuiFormItem--ios.vkuiFormItem--withTop{margin-top:-28px}.vkuiFormLayoutGroup .vkuiRemovable .vkuiFormItem--ios.vkuiFormItem--sizeY-compact.vkuiFormItem--withTop{margin-top:-26px}.vkuiFormLayoutGroup--horizontal .vkuiFormItem{max-width:100%;flex-grow:1;flex-shrink:0;flex-basis:0;padding:0;min-width:0}.vkuiFormLayoutGroup--horizontal .vkuiFormItem+.vkuiFormItem{margin-left:24px}
1
+ .vkuiFormItem{display:block;padding:12px 16px;padding:12px var(--formitem_padding)}.vkuiFormItem--removable{padding-left:0;padding-right:0}.vkuiFormItem__removable{flex-grow:1;min-width:0;max-width:100%;overflow:hidden}.vkuiFormItem__top{padding-top:2px;padding-bottom:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#6d7885;color:var(--text_subhead)}.vkuiFormItem__bottom{color:#818c99;color:var(--text_secondary);padding-top:8px}.vkuiFormItem--error .vkuiFormItem__bottom{color:#e64646;color:var(--field_error_border)}.vkuiFormItem--valid .vkuiFormItem__bottom,.vkuiFormItem--verified .vkuiFormItem__bottom{color:#4bb34b;color:var(--field_valid_border)}.vkuiFormItem--sizeY-compact .vkuiFormItem__top{padding-bottom:6px}.vkuiFormItem--sizeY-compact .vkuiFormItem__bottom{padding-top:6px}.vkuiFormItem--ios{--formitem_padding: 12px}.vkuiFormLayoutGroup--horizontal .vkuiFormItem{max-width:100%;flex-grow:1;flex-shrink:0;flex-basis:0;padding:0;min-width:0}.vkuiFormLayoutGroup--horizontal .vkuiFormItem+.vkuiFormItem{margin-left:24px}.vkuiFormLayoutGroup--removable .vkuiFormItem--ios.vkuiFormItem--withTop{margin-top:-28px}.vkuiFormLayoutGroup--removable .vkuiFormItem--ios.vkuiFormItem--withTop.vkuiFormItem--sizeY-compact{margin-top:-26px}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/FormItem/FormItem.tsx"],"names":["React","classNames","useExternRef","usePlatform","getClassName","hasReactNode","Subhead","Caption","useAdaptivity","Removable","FormItem","children","top","bottom","status","Component","removable","onRemove","removePlaceholder","getRootRef","restProps","platform","rootEl","sizeY","wrappedChildren","e","current"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,SAASC,YAAT;AACA,OAAOC,OAAP;AACA,OAAOC,OAAP;AACA,SAASC,aAAT;AACA,SAASC,SAAT;AACA;AAaA,OAAO,IAAMC,QAAiC,GAAG,SAApCA,QAAoC,OAW5B;AAAA,MAVnBC,QAUmB,QAVnBA,QAUmB;AAAA,MATnBC,GASmB,QATnBA,GASmB;AAAA,MARnBC,MAQmB,QARnBA,MAQmB;AAAA,yBAPnBC,MAOmB;AAAA,MAPnBA,MAOmB,4BAPV,SAOU;AAAA,4BANnBC,SAMmB;AAAA,MANnBA,SAMmB,+BANP,KAMO;AAAA,MALnBC,SAKmB,QALnBA,SAKmB;AAAA,MAJnBC,SAImB,QAJnBA,QAImB;AAAA,mCAHnBC,iBAGmB;AAAA,MAHnBA,iBAGmB,sCAHC,SAGD;AAAA,MAFnBC,UAEmB,QAFnBA,UAEmB;AAAA,MADhBC,SACgB;;AACnB,MAAMC,QAAQ,GAAGlB,WAAW,EAA5B;AACA,MAAMmB,MAAM,GAAGpB,YAAY,CAACiB,UAAD,CAA3B;;AACA,uBAAkBX,aAAa,EAA/B;AAAA,MAAQe,KAAR,kBAAQA,KAAR;;AAEA,MAAMC,eAAe,GACnB,oBAAC,KAAD,CAAO,QAAP,QACGnB,YAAY,CAACO,GAAD,CAAZ,IAAqB,oBAAC,OAAD;AAAS,IAAA,MAAM,EAAC,SAAhB;AAA0B,IAAA,SAAS,EAAC;AAApC,KAAqDA,GAArD,CADxB,EAEGD,QAFH,EAGGN,YAAY,CAACQ,MAAD,CAAZ,IAAwB,oBAAC,OAAD;AAAS,IAAA,KAAK,EAAC,GAAf;AAAmB,IAAA,MAAM,EAAC,SAA1B;AAAoC,IAAA,SAAS,EAAC;AAA9C,KAAkEA,MAAlE,CAH3B,CADF;AAQA,SACE,oBAAC,SAAD,eACMO,SADN;AAEE,IAAA,GAAG,EAAEE,MAFP;AAGE,IAAA,SAAS,EAAErB,UAAU,CACnBG,YAAY,CAAC,UAAD,EAAaiB,QAAb,CADO,sBAENP,MAFM,6BAGAS,KAHA,GAInB;AACE,2BAAqBlB,YAAY,CAACO,GAAD,CADnC;AAEE,6BAAuBI;AAFzB,KAJmB;AAHvB,MAaGA,SAAS,GACR,oBAAC,SAAD;AAAW,IAAA,KAAK,EAAC,OAAjB;AAAyB,IAAA,QAAQ,EAAE,kBAACS,CAAD;AAAA,aAAOR,SAAQ,CAACQ,CAAD,EAAIH,MAAJ,aAAIA,MAAJ,uBAAIA,MAAM,CAAEI,OAAZ,CAAf;AAAA,KAAnC;AAAwE,IAAA,iBAAiB,EAAER;AAA3F,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGM,eADH,CADF,CADQ,GAMNA,eAnBN,CADF;AAuBD,CA/CM","sourcesContent":["import * as React from 'react';\nimport { HasRootRef } from '../../types';\nimport { classNames } from '../../lib/classNames';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { hasReactNode } from '../../lib/utils';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport Caption from '../Typography/Caption/Caption';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { Removable, RemovableProps } from '../Removable/Removable';\nimport './FormItem.css';\n\nexport interface FormItemProps extends React.AllHTMLAttributes<HTMLElement>, RemovableProps, HasRootRef<HTMLElement> {\n top?: React.ReactNode;\n bottom?: React.ReactNode;\n status?: 'default' | 'error' | 'valid';\n Component?: React.ElementType;\n /**\n * Дает возможность удалить `FormItem`. Рекомендуется использовать только для `Input` или `Select`.\n */\n removable?: boolean;\n}\n\nexport const FormItem: React.FC<FormItemProps> = ({\n children,\n top,\n bottom,\n status = 'default',\n Component = 'div',\n removable,\n onRemove,\n removePlaceholder = 'Удалить',\n getRootRef,\n ...restProps\n}: FormItemProps) => {\n const platform = usePlatform();\n const rootEl = useExternRef(getRootRef);\n const { sizeY } = useAdaptivity();\n\n const wrappedChildren = (\n <React.Fragment>\n {hasReactNode(top) && <Subhead weight=\"regular\" vkuiClass=\"FormItem__top\">{top}</Subhead>}\n {children}\n {hasReactNode(bottom) && <Caption level=\"1\" weight=\"regular\" vkuiClass=\"FormItem__bottom\">{bottom}</Caption>}\n </React.Fragment>\n );\n\n return (\n <Component\n {...restProps}\n ref={rootEl}\n vkuiClass={classNames(\n getClassName('FormItem', platform),\n `FormItem--${status}`,\n `FormItem--sizeY-${sizeY}`,\n {\n 'FormItem--withTop': hasReactNode(top),\n 'FormItem--removable': removable,\n },\n )}\n >\n {removable ? (\n <Removable align=\"start\" onRemove={(e) => onRemove(e, rootEl?.current)} removePlaceholder={removePlaceholder}>\n <div vkuiClass=\"FormItem__removable\">\n {wrappedChildren}\n </div>\n </Removable>\n ) : wrappedChildren}\n </Component>\n );\n};\n"],"file":"FormItem.js"}
1
+ {"version":3,"sources":["../../../../src/components/FormItem/FormItem.tsx"],"names":["React","classNames","useExternRef","usePlatform","getClassName","hasReactNode","Subhead","Caption","useAdaptivity","Removable","FormItem","children","top","bottom","status","Component","removable","onRemove","removePlaceholder","getRootRef","restProps","platform","rootEl","sizeY","wrappedChildren","e","current"],"mappings":";;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAASC,YAAT;AACA,SAASC,YAAT;AACA,OAAOC,OAAP;AACA,OAAOC,OAAP;AACA,SAASC,aAAT;AACA,SAASC,SAAT;AACA;AAYA,OAAO,IAAMC,QAAiC,GAAG,SAApCA,QAAoC,OAW5B;AAAA,MAVnBC,QAUmB,QAVnBA,QAUmB;AAAA,MATnBC,GASmB,QATnBA,GASmB;AAAA,MARnBC,MAQmB,QARnBA,MAQmB;AAAA,yBAPnBC,MAOmB;AAAA,MAPnBA,MAOmB,4BAPV,SAOU;AAAA,4BANnBC,SAMmB;AAAA,MANnBA,SAMmB,+BANP,KAMO;AAAA,MALnBC,SAKmB,QALnBA,SAKmB;AAAA,MAJnBC,SAImB,QAJnBA,QAImB;AAAA,mCAHnBC,iBAGmB;AAAA,MAHnBA,iBAGmB,sCAHC,SAGD;AAAA,MAFnBC,UAEmB,QAFnBA,UAEmB;AAAA,MADhBC,SACgB;;AACnB,MAAMC,QAAQ,GAAGlB,WAAW,EAA5B;AACA,MAAMmB,MAAM,GAAGpB,YAAY,CAACiB,UAAD,CAA3B;;AACA,uBAAkBX,aAAa,EAA/B;AAAA,MAAQe,KAAR,kBAAQA,KAAR;;AAEA,MAAMC,eAAe,GACnB,oBAAC,KAAD,CAAO,QAAP,QACGnB,YAAY,CAACO,GAAD,CAAZ,IAAqB,oBAAC,OAAD;AAAS,IAAA,MAAM,EAAC,SAAhB;AAA0B,IAAA,SAAS,EAAC;AAApC,KAAqDA,GAArD,CADxB,EAEGD,QAFH,EAGGN,YAAY,CAACQ,MAAD,CAAZ,IAAwB,oBAAC,OAAD;AAAS,IAAA,KAAK,EAAC,GAAf;AAAmB,IAAA,MAAM,EAAC,SAA1B;AAAoC,IAAA,SAAS,EAAC;AAA9C,KAAkEA,MAAlE,CAH3B,CADF;AAQA,SACE,oBAAC,SAAD,eACMO,SADN;AAEE,IAAA,GAAG,EAAEE,MAFP;AAGE,IAAA,SAAS,EAAErB,UAAU,CACnBG,YAAY,CAAC,UAAD,EAAaiB,QAAb,CADO,sBAENP,MAFM,6BAGAS,KAHA,GAInB;AACE,2BAAqBlB,YAAY,CAACO,GAAD,CADnC;AAEE,6BAAuBI;AAFzB,KAJmB;AAHvB,MAaGA,SAAS,GACR,oBAAC,SAAD;AAAW,IAAA,KAAK,EAAC,OAAjB;AAAyB,IAAA,QAAQ,EAAE,kBAACS,CAAD;AAAA,aAAOR,SAAQ,CAACQ,CAAD,EAAIH,MAAJ,aAAIA,MAAJ,uBAAIA,MAAM,CAAEI,OAAZ,CAAf;AAAA,KAAnC;AAAwE,IAAA,iBAAiB,EAAER;AAA3F,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGM,eADH,CADF,CADQ,GAMNA,eAnBN,CADF;AAuBD,CA/CM","sourcesContent":["import * as React from 'react';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { classNames } from '../../lib/classNames';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { hasReactNode } from '../../lib/utils';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport Caption from '../Typography/Caption/Caption';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { Removable, RemovableProps } from '../Removable/Removable';\nimport './FormItem.css';\n\nexport interface FormItemProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, HasComponent, RemovableProps {\n top?: React.ReactNode;\n bottom?: React.ReactNode;\n status?: 'default' | 'error' | 'valid';\n /**\n * Дает возможность удалить `FormItem`. Рекомендуется использовать только для `Input` или `Select`.\n */\n removable?: boolean;\n}\n\nexport const FormItem: React.FC<FormItemProps> = ({\n children,\n top,\n bottom,\n status = 'default',\n Component = 'div',\n removable,\n onRemove,\n removePlaceholder = 'Удалить',\n getRootRef,\n ...restProps\n}: FormItemProps) => {\n const platform = usePlatform();\n const rootEl = useExternRef(getRootRef);\n const { sizeY } = useAdaptivity();\n\n const wrappedChildren = (\n <React.Fragment>\n {hasReactNode(top) && <Subhead weight=\"regular\" vkuiClass=\"FormItem__top\">{top}</Subhead>}\n {children}\n {hasReactNode(bottom) && <Caption level=\"1\" weight=\"regular\" vkuiClass=\"FormItem__bottom\">{bottom}</Caption>}\n </React.Fragment>\n );\n\n return (\n <Component\n {...restProps}\n ref={rootEl}\n vkuiClass={classNames(\n getClassName('FormItem', platform),\n `FormItem--${status}`,\n `FormItem--sizeY-${sizeY}`,\n {\n 'FormItem--withTop': hasReactNode(top),\n 'FormItem--removable': removable,\n },\n )}\n >\n {removable ? (\n <Removable align=\"start\" onRemove={(e) => onRemove(e, rootEl?.current)} removePlaceholder={removePlaceholder}>\n <div vkuiClass=\"FormItem__removable\">\n {wrappedChildren}\n </div>\n </Removable>\n ) : wrappedChildren}\n </Component>\n );\n};\n"],"file":"FormItem.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/FormLayout/FormLayout.tsx"],"names":["getClassName","usePlatform","preventDefault","e","FormLayout","props","children","Component","getRef","onSubmit","restProps","platform","defaultProps"],"mappings":";;;;AACA,SAASA,YAAT;AACA,SAASC,WAAT;AAEA;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,CAAD;AAAA,SAAwBA,CAAC,CAACD,cAAF,EAAxB;AAAA,CAAvB;;AAMA,IAAME,UAAoD,GAAG,SAAvDA,UAAuD,CAACC,KAAD,EAA4B;AACvF,MACEC,QADF,GAMID,KANJ,CACEC,QADF;AAAA,MAEEC,SAFF,GAMIF,KANJ,CAEEE,SAFF;AAAA,MAGEC,MAHF,GAMIH,KANJ,CAGEG,MAHF;AAAA,MAIEC,QAJF,GAMIJ,KANJ,CAIEI,QAJF;AAAA,MAKKC,SALL,4BAMIL,KANJ;;AAQA,MAAMM,QAAQ,GAAGV,WAAW,EAA5B;AACA,SACE,oBAAC,SAAD,eACMS,SADN;AAEE,IAAA,SAAS,EAAEV,YAAY,CAAC,YAAD,EAAeW,QAAf,CAFzB;AAGE,IAAA,QAAQ,EAAEF,QAHZ;AAIE,IAAA,GAAG,EAAED;AAJP,MAME;AAAK,IAAA,SAAS,EAAC;AAAf,KACGF,QADH,CANF,EASGC,SAAS,KAAK,MAAd,IACC;AAAO,IAAA,IAAI,EAAC,QAAZ;AAAqB,IAAA,SAAS,EAAC,oBAA/B;AAAoD,IAAA,KAAK,EAAC;AAA1D,IAVJ,CADF;AAeD,CAzBD;;AA2BAH,UAAU,CAACQ,YAAX,GAA0B;AACxBL,EAAAA,SAAS,EAAE,MADa;AAExBE,EAAAA,QAAQ,EAAEP;AAFc,CAA1B;AAKA,eAAeE,UAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRef } from '../../types';\nimport './FormLayout.css';\n\nconst preventDefault = (e: React.FormEvent) => e.preventDefault();\n\nexport interface FormLayoutProps extends React.AllHTMLAttributes<HTMLElement>, HasRef<HTMLElement> {\n Component?: React.ElementType;\n}\n\nconst FormLayout: React.FunctionComponent<FormLayoutProps> = (props: FormLayoutProps) => {\n const {\n children,\n Component,\n getRef,\n onSubmit,\n ...restProps\n } = props;\n\n const platform = usePlatform();\n return (\n <Component\n {...restProps}\n vkuiClass={getClassName('FormLayout', platform)}\n onSubmit={onSubmit}\n ref={getRef}\n >\n <div vkuiClass=\"FormLayout__container\">\n {children}\n </div>\n {Component === 'form' &&\n <input type=\"submit\" vkuiClass=\"FormLayout__submit\" value=\"\" />\n }\n </Component>\n );\n};\n\nFormLayout.defaultProps = {\n Component: 'form',\n onSubmit: preventDefault,\n};\n\nexport default FormLayout;\n"],"file":"FormLayout.js"}
1
+ {"version":3,"sources":["../../../../src/components/FormLayout/FormLayout.tsx"],"names":["getClassName","usePlatform","preventDefault","e","FormLayout","props","children","Component","getRef","onSubmit","restProps","platform","defaultProps"],"mappings":";;;;AACA,SAASA,YAAT;AACA,SAASC,WAAT;AAEA;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,CAAD;AAAA,SAAwBA,CAAC,CAACD,cAAF,EAAxB;AAAA,CAAvB;;AAIA,IAAME,UAAoD,GAAG,SAAvDA,UAAuD,CAACC,KAAD,EAA4B;AACvF,MACEC,QADF,GAMID,KANJ,CACEC,QADF;AAAA,MAEEC,SAFF,GAMIF,KANJ,CAEEE,SAFF;AAAA,MAGEC,MAHF,GAMIH,KANJ,CAGEG,MAHF;AAAA,MAIEC,QAJF,GAMIJ,KANJ,CAIEI,QAJF;AAAA,MAKKC,SALL,4BAMIL,KANJ;;AAQA,MAAMM,QAAQ,GAAGV,WAAW,EAA5B;AACA,SACE,oBAAC,SAAD,eACMS,SADN;AAEE,IAAA,SAAS,EAAEV,YAAY,CAAC,YAAD,EAAeW,QAAf,CAFzB;AAGE,IAAA,QAAQ,EAAEF,QAHZ;AAIE,IAAA,GAAG,EAAED;AAJP,MAME;AAAK,IAAA,SAAS,EAAC;AAAf,KACGF,QADH,CANF,EASGC,SAAS,KAAK,MAAd,IACC;AAAO,IAAA,IAAI,EAAC,QAAZ;AAAqB,IAAA,SAAS,EAAC,oBAA/B;AAAoD,IAAA,KAAK,EAAC;AAA1D,IAVJ,CADF;AAeD,CAzBD;;AA2BAH,UAAU,CAACQ,YAAX,GAA0B;AACxBL,EAAAA,SAAS,EAAE,MADa;AAExBE,EAAAA,QAAQ,EAAEP;AAFc,CAA1B;AAKA,eAAeE,UAAf","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasComponent, HasRef } from '../../types';\nimport './FormLayout.css';\n\nconst preventDefault = (e: React.FormEvent) => e.preventDefault();\n\nexport type FormLayoutProps = React.AllHTMLAttributes<HTMLElement> & HasRef<HTMLElement> & HasComponent;\n\nconst FormLayout: React.FunctionComponent<FormLayoutProps> = (props: FormLayoutProps) => {\n const {\n children,\n Component,\n getRef,\n onSubmit,\n ...restProps\n } = props;\n\n const platform = usePlatform();\n return (\n <Component\n {...restProps}\n vkuiClass={getClassName('FormLayout', platform)}\n onSubmit={onSubmit}\n ref={getRef}\n >\n <div vkuiClass=\"FormLayout__container\">\n {children}\n </div>\n {Component === 'form' &&\n <input type=\"submit\" vkuiClass=\"FormLayout__submit\" value=\"\" />\n }\n </Component>\n );\n};\n\nFormLayout.defaultProps = {\n Component: 'form',\n onSubmit: preventDefault,\n};\n\nexport default FormLayout;\n"],"file":"FormLayout.js"}
@@ -1 +1 @@
1
- .vkuiFormLayoutGroup--horizontal{padding:12px 16px;display:flex;flex-flow:row nowrap}.vkuiFormLayoutGroup--ios.vkuiFormLayoutGroup--horizontal{padding-left:12px;padding-right:12px}.vkuiFormLayoutGroup--ios.vkuiFormLayoutGroup--removable{padding-left:0}
1
+ .vkuiFormLayoutGroup--horizontal{display:flex;padding:12px 16px;padding:12px var(--formitem_padding)}.vkuiFormLayoutGroup__removable{flex-grow:1;min-width:0;max-width:100%}.vkuiFormLayoutGroup--ios{--formitem_padding: 12px}.vkuiFormLayoutGroup--removable{padding-left:0;padding-right:0}