@vkontakte/vkui 4.15.0 → 4.16.2

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 (349) hide show
  1. package/.cache/.eslintcache +1 -1
  2. package/.cache/.stylelintcache +1 -1
  3. package/.cache/.tsbuildinfo +391 -282
  4. package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +1 -0
  5. package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  6. package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +2 -2
  7. package/.cache/ts/src/components/FixedLayout/FixedLayout.d.ts +4 -9
  8. package/.cache/ts/src/components/ModalPage/ModalPage.d.ts +1 -2
  9. package/.cache/ts/src/components/Root/Root.d.ts +5 -27
  10. package/.cache/ts/src/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  11. package/.cache/ts/src/components/Tappable/Tappable.d.ts +12 -9
  12. package/.cache/ts/src/components/Touch/Touch.d.ts +1 -2
  13. package/.cache/ts/src/components/UsersStack/masks.d.ts +1 -1
  14. package/.cache/ts/src/hooks/useEventListener.d.ts +2 -2
  15. package/.cache/ts/src/hooks/useKeyboard.d.ts +11 -0
  16. package/.cache/ts/src/index.d.ts +1 -1
  17. package/.cache/ts/src/lib/select.d.ts +7 -0
  18. package/.cache/ts/src/lib/touch.d.ts +1 -1
  19. package/.cache/ts/src/lib/utils.d.ts +2 -3
  20. package/.cache/ts/src/types.d.ts +2 -6
  21. package/.cache/ts/src/unstable/index.d.ts +2 -0
  22. package/babel.cjs.config.js +7 -1
  23. package/babel.config.js +7 -1
  24. package/dist/cjs/components/AppRoot/AppRoot.d.ts +1 -0
  25. package/dist/cjs/components/AppRoot/AppRoot.js +29 -1
  26. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  27. package/dist/cjs/components/Banner/Banner.js +1 -1
  28. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  29. package/dist/cjs/components/Cell/Cell.js +3 -3
  30. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  31. package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  32. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +5 -6
  33. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  34. package/dist/cjs/components/ChipsSelect/useChipsSelect.js +2 -2
  35. package/dist/cjs/components/ChipsSelect/useChipsSelect.js.map +1 -1
  36. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +2 -2
  37. package/dist/cjs/components/CustomSelect/CustomSelect.js +3 -3
  38. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  39. package/dist/cjs/components/FixedLayout/FixedLayout.d.ts +4 -9
  40. package/dist/cjs/components/FixedLayout/FixedLayout.js +91 -179
  41. package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
  42. package/dist/cjs/components/Gallery/Gallery.js +2 -2
  43. package/dist/cjs/components/Gallery/Gallery.js.map +1 -1
  44. package/dist/cjs/components/Header/Header.js +1 -1
  45. package/dist/cjs/components/Header/Header.js.map +1 -1
  46. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +6 -1
  47. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  48. package/dist/cjs/components/ModalPage/ModalPage.d.ts +1 -2
  49. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  50. package/dist/cjs/components/ModalRoot/ModalRoot.js +2 -2
  51. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  52. package/dist/cjs/components/Panel/Panel.js +2 -2
  53. package/dist/cjs/components/Panel/Panel.js.map +1 -1
  54. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  55. package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  56. package/dist/cjs/components/PullToRefresh/PullToRefresh.js +2 -2
  57. package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
  58. package/dist/cjs/components/RangeSlider/UniversalSlider.js +2 -2
  59. package/dist/cjs/components/RangeSlider/UniversalSlider.js.map +1 -1
  60. package/dist/cjs/components/Root/Root.d.ts +5 -27
  61. package/dist/cjs/components/Root/Root.js +158 -214
  62. package/dist/cjs/components/Root/Root.js.map +1 -1
  63. package/dist/cjs/components/Search/Search.js +3 -3
  64. package/dist/cjs/components/Search/Search.js.map +1 -1
  65. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  66. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  67. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js +126 -0
  68. package/dist/cjs/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  69. package/dist/cjs/components/Snackbar/Snackbar.js +2 -2
  70. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  71. package/dist/cjs/components/Tappable/Tappable.d.ts +12 -9
  72. package/dist/cjs/components/Tappable/Tappable.js +47 -36
  73. package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
  74. package/dist/cjs/components/Touch/Touch.d.ts +1 -2
  75. package/dist/cjs/components/Touch/Touch.js +172 -283
  76. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  77. package/dist/cjs/components/UsersStack/UsersStack.js +9 -18
  78. package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
  79. package/dist/cjs/components/UsersStack/masks.d.ts +1 -1
  80. package/dist/cjs/components/UsersStack/masks.js +5 -8
  81. package/dist/cjs/components/UsersStack/masks.js.map +1 -1
  82. package/dist/cjs/components/View/View.js +2 -2
  83. package/dist/cjs/components/View/View.js.map +1 -1
  84. package/dist/cjs/components/View/ViewInfinite.js +2 -2
  85. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  86. package/dist/cjs/hooks/useEventListener.d.ts +2 -2
  87. package/dist/cjs/hooks/useEventListener.js +9 -4
  88. package/dist/cjs/hooks/useEventListener.js.map +1 -1
  89. package/dist/cjs/hooks/useGlobalEventListener.js +2 -4
  90. package/dist/cjs/hooks/useGlobalEventListener.js.map +1 -1
  91. package/dist/cjs/hooks/useInsets.js +3 -10
  92. package/dist/cjs/hooks/useInsets.js.map +1 -1
  93. package/dist/cjs/hooks/useKeyboard.d.ts +11 -0
  94. package/dist/cjs/hooks/useKeyboard.js +78 -0
  95. package/dist/cjs/hooks/useKeyboard.js.map +1 -0
  96. package/dist/cjs/hooks/useKeyboardInputTracker.js +4 -2
  97. package/dist/cjs/hooks/useKeyboardInputTracker.js.map +1 -1
  98. package/dist/cjs/index.d.ts +1 -1
  99. package/dist/cjs/index.js +2 -2
  100. package/dist/cjs/index.js.map +1 -1
  101. package/dist/cjs/lib/select.d.ts +7 -0
  102. package/dist/cjs/lib/select.js +73 -0
  103. package/dist/cjs/lib/select.js.map +1 -0
  104. package/dist/cjs/lib/touch.d.ts +1 -1
  105. package/dist/cjs/lib/touch.js +6 -2
  106. package/dist/cjs/lib/touch.js.map +1 -1
  107. package/dist/cjs/lib/utils.d.ts +2 -3
  108. package/dist/cjs/lib/utils.js.map +1 -1
  109. package/dist/cjs/types.d.ts +2 -6
  110. package/dist/cjs/unstable/index.d.ts +2 -0
  111. package/dist/cjs/unstable/index.js +8 -0
  112. package/dist/cjs/unstable/index.js.map +1 -1
  113. package/dist/components/AppRoot/AppRoot.d.ts +1 -0
  114. package/dist/components/AppRoot/AppRoot.js +29 -5
  115. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  116. package/dist/components/Banner/Banner.js +1 -1
  117. package/dist/components/Banner/Banner.js.map +1 -1
  118. package/dist/components/Cell/Cell.js +1 -1
  119. package/dist/components/Cell/Cell.js.map +1 -1
  120. package/dist/components/ChipsSelect/ChipsSelect.d.ts +1 -1
  121. package/dist/components/ChipsSelect/ChipsSelect.js +4 -6
  122. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  123. package/dist/components/ChipsSelect/useChipsSelect.js +2 -2
  124. package/dist/components/ChipsSelect/useChipsSelect.js.map +1 -1
  125. package/dist/components/CustomSelect/CustomSelect.d.ts +2 -2
  126. package/dist/components/CustomSelect/CustomSelect.js +2 -3
  127. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  128. package/dist/components/FixedLayout/FixedLayout.d.ts +4 -9
  129. package/dist/components/FixedLayout/FixedLayout.js +84 -175
  130. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  131. package/dist/components/Gallery/Gallery.js +1 -1
  132. package/dist/components/Gallery/Gallery.js.map +1 -1
  133. package/dist/components/Header/Header.js +1 -1
  134. package/dist/components/Header/Header.js.map +1 -1
  135. package/dist/components/ModalCardBase/ModalCardBase.js +5 -1
  136. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  137. package/dist/components/ModalPage/ModalPage.d.ts +1 -2
  138. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  139. package/dist/components/ModalRoot/ModalRoot.js +1 -1
  140. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  141. package/dist/components/Panel/Panel.js +1 -1
  142. package/dist/components/Panel/Panel.js.map +1 -1
  143. package/dist/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  144. package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  145. package/dist/components/PullToRefresh/PullToRefresh.js +1 -1
  146. package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
  147. package/dist/components/RangeSlider/UniversalSlider.js +1 -1
  148. package/dist/components/RangeSlider/UniversalSlider.js.map +1 -1
  149. package/dist/components/Root/Root.d.ts +5 -27
  150. package/dist/components/Root/Root.js +152 -207
  151. package/dist/components/Root/Root.js.map +1 -1
  152. package/dist/components/Search/Search.js +1 -1
  153. package/dist/components/Search/Search.js.map +1 -1
  154. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  155. package/dist/components/SimpleCheckbox/SimpleCheckbox.d.ts +9 -0
  156. package/dist/components/SimpleCheckbox/SimpleCheckbox.js +97 -0
  157. package/dist/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  158. package/dist/components/Snackbar/Snackbar.js +1 -1
  159. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  160. package/dist/components/Tappable/Tappable.d.ts +12 -9
  161. package/dist/components/Tappable/Tappable.js +45 -37
  162. package/dist/components/Tappable/Tappable.js.map +1 -1
  163. package/dist/components/Touch/Touch.d.ts +1 -2
  164. package/dist/components/Touch/Touch.js +163 -286
  165. package/dist/components/Touch/Touch.js.map +1 -1
  166. package/dist/components/UsersStack/UsersStack.js +7 -16
  167. package/dist/components/UsersStack/UsersStack.js.map +1 -1
  168. package/dist/components/UsersStack/masks.d.ts +1 -1
  169. package/dist/components/UsersStack/masks.js +6 -9
  170. package/dist/components/UsersStack/masks.js.map +1 -1
  171. package/dist/components/View/View.js +1 -1
  172. package/dist/components/View/View.js.map +1 -1
  173. package/dist/components/View/ViewInfinite.js +1 -1
  174. package/dist/components/View/ViewInfinite.js.map +1 -1
  175. package/dist/components.css +1 -1
  176. package/dist/components.css.map +1 -1
  177. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.css +1 -1
  178. package/dist/cssm/components/AppRoot/AppRoot.css +1 -0
  179. package/dist/cssm/components/AppRoot/AppRoot.js +30 -2
  180. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  181. package/dist/cssm/components/Banner/Banner.css +1 -1
  182. package/dist/cssm/components/Banner/Banner.js +1 -1
  183. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  184. package/dist/cssm/components/Cell/Cell.js +1 -1
  185. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  186. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +4 -6
  187. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  188. package/dist/cssm/components/ChipsSelect/useChipsSelect.js +2 -2
  189. package/dist/cssm/components/ChipsSelect/useChipsSelect.js.map +1 -1
  190. package/dist/cssm/components/CustomSelect/CustomSelect.js +2 -3
  191. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  192. package/dist/cssm/components/FixedLayout/FixedLayout.js +84 -175
  193. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  194. package/dist/cssm/components/Gallery/Gallery.js +1 -1
  195. package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
  196. package/dist/cssm/components/Header/Header.js +1 -1
  197. package/dist/cssm/components/Header/Header.js.map +1 -1
  198. package/dist/cssm/components/ModalCardBase/ModalCardBase.css +1 -1
  199. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +5 -1
  200. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  201. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  202. package/dist/cssm/components/ModalRoot/ModalRoot.css +1 -1
  203. package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -1
  204. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  205. package/dist/cssm/components/Panel/Panel.js +1 -1
  206. package/dist/cssm/components/Panel/Panel.js.map +1 -1
  207. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.css +1 -1
  208. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +0 -1
  209. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
  210. package/dist/cssm/components/PullToRefresh/PullToRefresh.js +1 -1
  211. package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
  212. package/dist/cssm/components/RangeSlider/UniversalSlider.js +1 -1
  213. package/dist/cssm/components/RangeSlider/UniversalSlider.js.map +1 -1
  214. package/dist/cssm/components/Root/Root.js +152 -207
  215. package/dist/cssm/components/Root/Root.js.map +1 -1
  216. package/dist/cssm/components/Search/Search.js +1 -1
  217. package/dist/cssm/components/Search/Search.js.map +1 -1
  218. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  219. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.css +1 -0
  220. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js +98 -0
  221. package/dist/cssm/components/SimpleCheckbox/SimpleCheckbox.js.map +1 -0
  222. package/dist/cssm/components/Snackbar/Snackbar.js +1 -1
  223. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  224. package/dist/cssm/components/Tappable/Tappable.js +45 -37
  225. package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
  226. package/dist/cssm/components/Touch/Touch.js +163 -286
  227. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  228. package/dist/cssm/components/UsersStack/UsersStack.css +1 -1
  229. package/dist/cssm/components/UsersStack/UsersStack.js +7 -16
  230. package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
  231. package/dist/cssm/components/UsersStack/masks.js +6 -9
  232. package/dist/cssm/components/UsersStack/masks.js.map +1 -1
  233. package/dist/cssm/components/View/View.js +1 -1
  234. package/dist/cssm/components/View/View.js.map +1 -1
  235. package/dist/cssm/components/View/ViewInfinite.js +1 -1
  236. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  237. package/dist/cssm/hooks/useEventListener.js +8 -4
  238. package/dist/cssm/hooks/useEventListener.js.map +1 -1
  239. package/dist/cssm/hooks/useGlobalEventListener.js +2 -2
  240. package/dist/cssm/hooks/useGlobalEventListener.js.map +1 -1
  241. package/dist/cssm/hooks/useInsets.js +2 -10
  242. package/dist/cssm/hooks/useInsets.js.map +1 -1
  243. package/dist/cssm/hooks/useKeyboard.js +62 -0
  244. package/dist/cssm/hooks/useKeyboard.js.map +1 -0
  245. package/dist/cssm/hooks/useKeyboardInputTracker.js +4 -2
  246. package/dist/cssm/hooks/useKeyboardInputTracker.js.map +1 -1
  247. package/dist/cssm/index.js +1 -1
  248. package/dist/cssm/index.js.map +1 -1
  249. package/dist/cssm/lib/select.js +62 -0
  250. package/dist/cssm/lib/select.js.map +1 -0
  251. package/dist/cssm/lib/touch.js +5 -2
  252. package/dist/cssm/lib/touch.js.map +1 -1
  253. package/dist/cssm/lib/utils.js.map +1 -1
  254. package/dist/cssm/styles/animations.css +1 -1
  255. package/dist/cssm/styles/common.css +1 -1
  256. package/dist/cssm/styles/components.css +1 -1
  257. package/dist/cssm/styles/constants.css +1 -1
  258. package/dist/cssm/styles/unstable.css +1 -1
  259. package/dist/cssm/unstable/index.js +1 -0
  260. package/dist/cssm/unstable/index.js.map +1 -1
  261. package/dist/hooks/useEventListener.d.ts +2 -2
  262. package/dist/hooks/useEventListener.js +8 -4
  263. package/dist/hooks/useEventListener.js.map +1 -1
  264. package/dist/hooks/useGlobalEventListener.js +2 -2
  265. package/dist/hooks/useGlobalEventListener.js.map +1 -1
  266. package/dist/hooks/useInsets.js +2 -10
  267. package/dist/hooks/useInsets.js.map +1 -1
  268. package/dist/hooks/useKeyboard.d.ts +11 -0
  269. package/dist/hooks/useKeyboard.js +62 -0
  270. package/dist/hooks/useKeyboard.js.map +1 -0
  271. package/dist/hooks/useKeyboardInputTracker.js +4 -2
  272. package/dist/hooks/useKeyboardInputTracker.js.map +1 -1
  273. package/dist/index.d.ts +1 -1
  274. package/dist/index.js +1 -1
  275. package/dist/index.js.map +1 -1
  276. package/dist/lib/select.d.ts +7 -0
  277. package/dist/lib/select.js +62 -0
  278. package/dist/lib/select.js.map +1 -0
  279. package/dist/lib/touch.d.ts +1 -1
  280. package/dist/lib/touch.js +5 -2
  281. package/dist/lib/touch.js.map +1 -1
  282. package/dist/lib/utils.d.ts +2 -3
  283. package/dist/lib/utils.js.map +1 -1
  284. package/dist/types.d.ts +2 -6
  285. package/dist/unstable/index.d.ts +2 -0
  286. package/dist/unstable/index.js +1 -0
  287. package/dist/unstable/index.js.map +1 -1
  288. package/dist/unstable.css +1 -1
  289. package/dist/unstable.css.map +1 -1
  290. package/dist/vkui.css +1 -1
  291. package/dist/vkui.css.map +1 -1
  292. package/package.json +4 -2
  293. package/postcss.config.js +1 -1
  294. package/src/components/ActionSheetItem/ActionSheetItem.css +4 -8
  295. package/src/components/AppRoot/AppRoot.css +20 -0
  296. package/src/components/AppRoot/AppRoot.tsx +30 -0
  297. package/src/components/Banner/Banner.css +4 -0
  298. package/src/components/Banner/Banner.tsx +1 -1
  299. package/src/components/Cell/Cell.tsx +1 -1
  300. package/src/components/ChipsSelect/ChipsSelect.tsx +4 -7
  301. package/src/components/ChipsSelect/Readme.md +0 -2
  302. package/src/components/ChipsSelect/useChipsSelect.ts +1 -1
  303. package/src/components/CustomSelect/CustomSelect.tsx +3 -2
  304. package/src/components/FixedLayout/FixedLayout.tsx +61 -147
  305. package/src/components/Gallery/Gallery.tsx +1 -1
  306. package/src/components/Header/Header.tsx +1 -1
  307. package/src/components/ModalCardBase/ModalCardBase.css +4 -0
  308. package/src/components/ModalCardBase/ModalCardBase.tsx +5 -1
  309. package/src/components/ModalPage/ModalPage.tsx +1 -2
  310. package/src/components/ModalRoot/ModalRoot.css +10 -0
  311. package/src/components/ModalRoot/ModalRoot.tsx +1 -1
  312. package/src/components/Panel/Panel.tsx +1 -1
  313. package/src/components/PanelHeaderContent/PanelHeaderContent.css +2 -1
  314. package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +2 -2
  315. package/src/components/PullToRefresh/PullToRefresh.tsx +1 -1
  316. package/src/components/RangeSlider/UniversalSlider.tsx +1 -1
  317. package/src/components/Root/Readme.md +27 -37
  318. package/src/components/Root/Root.tsx +112 -191
  319. package/src/components/Search/Search.tsx +1 -1
  320. package/src/components/Separator/Readme.md +3 -1
  321. package/src/components/SimpleCell/SimpleCell.tsx +1 -1
  322. package/src/components/SimpleCheckbox/Readme.md +17 -0
  323. package/src/components/SimpleCheckbox/SimpleCheckbox.css +115 -0
  324. package/src/components/SimpleCheckbox/SimpleCheckbox.tsx +105 -0
  325. package/src/components/Snackbar/Snackbar.tsx +1 -1
  326. package/src/components/Tappable/Tappable.tsx +28 -37
  327. package/src/components/Touch/Touch.tsx +100 -238
  328. package/src/components/UsersStack/UsersStack.css +5 -9
  329. package/src/components/UsersStack/UsersStack.tsx +4 -11
  330. package/src/components/UsersStack/masks.tsx +6 -9
  331. package/src/components/View/Readme.md +34 -42
  332. package/src/components/View/View.tsx +1 -1
  333. package/src/components/View/ViewInfinite.tsx +1 -1
  334. package/src/hooks/useEventListener.ts +11 -8
  335. package/src/hooks/useGlobalEventListener.ts +2 -2
  336. package/src/hooks/useInsets.ts +2 -8
  337. package/src/hooks/useKeyboard.ts +67 -0
  338. package/src/hooks/useKeyboardInputTracker.ts +4 -2
  339. package/src/index.ts +1 -1
  340. package/src/lib/select.ts +53 -0
  341. package/src/lib/touch.ts +2 -2
  342. package/src/lib/utils.ts +3 -4
  343. package/src/styles/animations.css +0 -14
  344. package/src/styles/common.css +0 -21
  345. package/src/styles/components.css +2 -0
  346. package/src/styles/constants.css +3 -0
  347. package/src/styles/unstable.css +1 -0
  348. package/src/types.ts +2 -8
  349. package/src/unstable/index.ts +3 -0
@@ -1 +1 @@
1
- .vkuiActionSheetItem{position:relative;z-index:2;overflow:hidden;display:flex;align-items:center;text-decoration:none;color:#000;color:var(--text_primary)}.vkuiActionSheetItem__container,.vkuiActionSheetItem__before,.vkuiActionSheetItem__after{position:relative;z-index:2}.vkuiActionSheetItem__before,.vkuiActionSheetItem__after{flex-shrink:0}.vkuiActionSheetItem__container{max-width:100%;flex-grow:1;white-space:nowrap;overflow:hidden}.vkuiActionSheetItem__content{display:flex;align-items:baseline;overflow:hidden}.vkuiActionSheetItem__children{min-width:0;overflow:hidden;text-overflow:ellipsis}.vkuiActionSheetItem__subtitle{color:#818c99;color:var(--text_secondary);overflow:hidden;text-overflow:ellipsis}.vkuiActionSheetItem__meta{color:#818c99;color:var(--text_secondary);margin-left:6px;flex-shrink:0}.vkuiActionSheetItem__before{color:#3f8ae0;color:var(--action_sheet_action_foreground)}.vkuiActionSheetItem--destructive .vkuiActionSheetItem__container:first-child{color:#e64646;color:var(--destructive)}.vkuiActionSheetItem--destructive .vkuiActionSheetItem__before{color:#e64646;color:var(--destructive)}.vkuiActionSheetItem--compact .vkuiActionSheetItem__container{color:#000;color:var(--text_primary)}.vkuiActionSheetItem__radio{display:none}.vkuiActionSheetItem__marker{display:none;width:24px;height:24px;border-radius:50%;align-items:center;justify-content:center;background-color:#3f8ae0;background-color:var(--accent);color:#fff;color:var(--white)}.vkuiActionSheetItem__radio:checked~.vkuiActionSheetItem__marker{display:flex}.vkuiActionSheetItem--ios{padding:0 20px;min-height:56px;border-radius:0;color:#3f8ae0;color:var(--action_sheet_action_foreground)}.vkuiActionSheetItem--ios.vkuiActionSheetItem--destructive{color:#e64646;color:var(--destructive)}.vkuiActionSheetItem--ios:first-child{border-top-left-radius:14px;border-top-right-radius:14px}.vkuiActionSheetItem--ios:nth-last-child(2){border-bottom-left-radius:14px;border-bottom-right-radius:14px}.vkuiActionSheetItem--ios::before{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#fff;background-color:var(--modal_card_background);z-index:1;content:'';transition:opacity .15s ease-out,background-color .15s ease-out}.vkuiActionSheetItem--ios::after{position:absolute;right:0;left:0;z-index:1;height:1px;content:'';top:0;background:rgba(0,0,0,.12);background:var(--action_sheet_separator);-webkit-transform-origin:center bottom;transform-origin:center bottom}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.vkuiActionSheetItem--ios::after{-webkit-transform:scaleY(.5);transform:scaleY(.5)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){.vkuiActionSheetItem--ios::after{-webkit-transform:scaleY(.33);transform:scaleY(.33)}}.vkuiActionSheetItem--ios:first-child::after,.vkuiActionSheetItem--cancel::after{content:none}.vkuiActionSheet--ios .vkuiActionSheetItem--last::after,.vkuiActionSheet--ios .vkuiActionSheet__header:empty{content:none}.vkuiActionSheetItem--ios.vkuiActionSheetItem--active::before{background:#d7d8d9;background:var(--separator_common);opacity:1;transition:none}.vkuiActionSheetItem--ios .vkuiActionSheetItem__container{padding:13px 0}.vkuiActionSheetItem--ios .vkuiActionSheetItem__content{justify-content:center}.vkuiActionSheetItem--ios .vkuiActionSheetItem__subtitle{margin-top:2px}.vkuiActionSheetItem--ios .vkuiActionSheetItem__marker{margin-left:12px}.vkuiActionSheetItem--ios.vkuiActionSheetItem--compact .vkuiActionSheetItem__content,.vkuiActionSheetItem--ios .vkuiActionSheetItem__before+.vkuiActionSheetItem__container .vkuiActionSheetItem__content{justify-content:flex-start}.vkuiActionSheetItem--ios .vkuiActionSheetItem__before{margin-right:18px;margin-left:-2px}.vkuiActionSheetItem--cancel{margin-top:7px;margin-bottom:0;margin-bottom:var(--safe-area-inset-bottom);border-radius:14px;min-height:52px}.vkuiActionSheetItem--android{padding:0 20px;min-height:48px;border-radius:0}.vkuiActionSheetItem--android.vkuiActionSheetItem--active{background-color:rgba(0,0,0,.12);background-color:var(--action_sheet_separator)}.vkuiActionSheetItem--android .vkuiActionSheetItem__before{margin-right:18px;margin-left:-2px}.vkuiActionSheetItem--android .vkuiActionSheetItem__container{padding:11px 0}.vkuiActionSheetItem--android .vkuiActionSheetItem__subtitle{margin-top:1px;margin-bottom:-1px}.vkuiActionSheetItem--android .vkuiActionSheetItem__marker{margin-left:16px}.vkuiActionSheetItem--vkcom{padding:0 20px;min-height:48px;border-radius:0}.vkuiActionSheetItem--vkcom.vkuiActionSheetItem--active{background-color:rgba(0,0,0,.12);background-color:var(--action_sheet_separator)}.vkuiActionSheetItem--vkcom .vkuiActionSheetItem__before{margin-right:17px;margin-left:-1px}.vkuiActionSheetItem--vkcom .vkuiActionSheetItem__subtitle{margin-top:2px;margin-bottom:-2px}.vkuiActionSheetItem--vkcom .vkuiActionSheetItem__marker{margin-left:26px;color:#3f8ae0;color:var(--accent);background-color:transparent}.vkuiActionSheetItem--desktop{width:auto;cursor:pointer}.vkuiActionSheetItem--desktop.vkuiActionSheetItem--ios:nth-last-child(2){border-bottom-left-radius:0;border-bottom-right-radius:0}.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__children,.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__meta,.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__subtitle{color:#818c99;color:var(--text_secondary)}.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__before{color:#99a2ad;color:var(--icon_secondary)}.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__marker{background:#99a2ad;background:var(--icon_secondary)}.vkuiActionSheetItem--sizeY-compact{min-height:44px}.vkuiActionSheetItem--sizeY-compact .vkuiActionSheetItem__container{padding:12px 0}.vkuiActionSheetItem--sizeY-compact.vkuiActionSheetItem--withSubtitle .vkuiActionSheetItem__container{padding:10px 0}
1
+ .vkuiActionSheetItem{position:relative;z-index:2;overflow:hidden;display:flex;align-items:center;text-decoration:none;color:#000;color:var(--text_primary)}.vkuiActionSheetItem__container,.vkuiActionSheetItem__before,.vkuiActionSheetItem__after{position:relative;z-index:2}.vkuiActionSheetItem__before,.vkuiActionSheetItem__after{flex-shrink:0}.vkuiActionSheetItem__container{max-width:100%;flex-grow:1;white-space:nowrap;overflow:hidden}.vkuiActionSheetItem__content{display:flex;align-items:baseline;overflow:hidden}.vkuiActionSheetItem__children{min-width:0;overflow:hidden;text-overflow:ellipsis}.vkuiActionSheetItem__subtitle{color:#818c99;color:var(--text_secondary);overflow:hidden;text-overflow:ellipsis}.vkuiActionSheetItem__meta{color:#818c99;color:var(--text_secondary);margin-left:6px;flex-shrink:0}.vkuiActionSheetItem__before{color:#3f8ae0;color:var(--action_sheet_action_foreground)}.vkuiActionSheetItem--destructive .vkuiActionSheetItem__container:first-child{color:#e64646;color:var(--destructive)}.vkuiActionSheetItem--destructive .vkuiActionSheetItem__before{color:#e64646;color:var(--destructive)}.vkuiActionSheetItem--compact .vkuiActionSheetItem__container{color:#000;color:var(--text_primary)}.vkuiActionSheetItem__radio{display:none}.vkuiActionSheetItem__marker{display:none;width:24px;height:24px;border-radius:50%;align-items:center;justify-content:center;background-color:#3f8ae0;background-color:var(--accent);color:#fff;color:var(--white)}.vkuiActionSheetItem__radio:checked~.vkuiActionSheetItem__marker{display:flex}.vkuiActionSheetItem--ios{padding:0 20px;min-height:56px;border-radius:0;color:#3f8ae0;color:var(--action_sheet_action_foreground)}.vkuiActionSheetItem--ios.vkuiActionSheetItem--destructive{color:#e64646;color:var(--destructive)}.vkuiActionSheetItem--ios:first-child{border-top-left-radius:14px;border-top-right-radius:14px}.vkuiActionSheetItem--ios:not(.vkuiActionSheetItem--desktop):nth-last-child(2),.vkuiActionSheetItem--ios:last-child{border-bottom-left-radius:14px;border-bottom-right-radius:14px}.vkuiActionSheetItem--ios::before{position:absolute;left:0;top:0;width:100%;height:100%;background-color:#fff;background-color:var(--modal_card_background);z-index:-1;content:'';transition:opacity .15s ease-out,background-color .15s ease-out}.vkuiActionSheetItem--ios::after{position:absolute;right:0;left:0;z-index:-1;height:1px;content:'';top:0;background:rgba(0,0,0,.12);background:var(--action_sheet_separator);-webkit-transform-origin:center bottom;transform-origin:center bottom}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:2dppx){.vkuiActionSheetItem--ios::after{-webkit-transform:scaleY(.5);transform:scaleY(.5)}}@media (-webkit-min-device-pixel-ratio:3),(min-resolution:3dppx){.vkuiActionSheetItem--ios::after{-webkit-transform:scaleY(.33);transform:scaleY(.33)}}.vkuiActionSheetItem--ios:first-child::after,.vkuiActionSheetItem--cancel::after{content:none}.vkuiActionSheet--ios .vkuiActionSheetItem--last::after,.vkuiActionSheet--ios .vkuiActionSheet__header:empty{content:none}.vkuiActionSheetItem--ios.vkuiActionSheetItem--active::before{background:#d7d8d9;background:var(--separator_common);opacity:1;transition:none}.vkuiActionSheetItem--ios .vkuiActionSheetItem__container{padding:13px 0}.vkuiActionSheetItem--ios .vkuiActionSheetItem__content{justify-content:center}.vkuiActionSheetItem--ios .vkuiActionSheetItem__subtitle{margin-top:2px}.vkuiActionSheetItem--ios .vkuiActionSheetItem__marker{margin-left:12px}.vkuiActionSheetItem--ios.vkuiActionSheetItem--compact .vkuiActionSheetItem__content,.vkuiActionSheetItem--ios .vkuiActionSheetItem__before+.vkuiActionSheetItem__container .vkuiActionSheetItem__content{justify-content:flex-start}.vkuiActionSheetItem--ios .vkuiActionSheetItem__before{margin-right:18px;margin-left:-2px}.vkuiActionSheetItem--cancel{margin-top:7px;margin-bottom:0;margin-bottom:var(--safe-area-inset-bottom);border-radius:14px;min-height:52px}.vkuiActionSheetItem--android{padding:0 20px;min-height:48px;border-radius:0}.vkuiActionSheetItem--android.vkuiActionSheetItem--active{background-color:rgba(0,0,0,.12);background-color:var(--action_sheet_separator)}.vkuiActionSheetItem--android .vkuiActionSheetItem__before{margin-right:18px;margin-left:-2px}.vkuiActionSheetItem--android .vkuiActionSheetItem__container{padding:11px 0}.vkuiActionSheetItem--android .vkuiActionSheetItem__subtitle{margin-top:1px;margin-bottom:-1px}.vkuiActionSheetItem--android .vkuiActionSheetItem__marker{margin-left:16px}.vkuiActionSheetItem--vkcom{padding:0 20px;min-height:48px;border-radius:0}.vkuiActionSheetItem--vkcom.vkuiActionSheetItem--active{background-color:rgba(0,0,0,.12);background-color:var(--action_sheet_separator)}.vkuiActionSheetItem--vkcom .vkuiActionSheetItem__before{margin-right:17px;margin-left:-1px}.vkuiActionSheetItem--vkcom .vkuiActionSheetItem__subtitle{margin-top:2px;margin-bottom:-2px}.vkuiActionSheetItem--vkcom .vkuiActionSheetItem__marker{margin-left:26px;color:#3f8ae0;color:var(--accent);background-color:transparent}.vkuiActionSheetItem--desktop{width:auto;cursor:pointer}.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__children,.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__meta,.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__subtitle{color:#818c99;color:var(--text_secondary)}.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__before{color:#99a2ad;color:var(--icon_secondary)}.vkuiActionSheetItem[disabled] .vkuiActionSheetItem__marker{background:#99a2ad;background:var(--icon_secondary)}.vkuiActionSheetItem--sizeY-compact{min-height:44px}.vkuiActionSheetItem--sizeY-compact .vkuiActionSheetItem__container{padding:12px 0}.vkuiActionSheetItem--sizeY-compact.vkuiActionSheetItem--withSubtitle .vkuiActionSheetItem__container{padding:10px 0}
@@ -0,0 +1 @@
1
+ .vkui__root--embedded{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);overflow-x:hidden}.vkuiAppRoot{height:100%}.vkui__root--embedded .vkuiAppRoot{overflow:auto}.vkui--sizeX-regular{background:#ebedf0;background:var(--background_page)}.vkuiAppRoot--no-mouse{-webkit-user-select:none;user-select:none}
@@ -15,7 +15,9 @@ import { IconSettingsProvider } from '@vkontakte/icons';
15
15
  import { elementScrollController, globalScrollController, ScrollContext } from "./ScrollContext";
16
16
  import { noop } from "../../lib/utils";
17
17
  import { warnOnce } from "../../lib/warnOnce";
18
- import { useKeyboardInputTracker } from "../../hooks/useKeyboardInputTracker"; // Используйте classList, но будьте осторожны
18
+ import { useKeyboardInputTracker } from "../../hooks/useKeyboardInputTracker";
19
+ import { useInsets } from "../../hooks/useInsets";
20
+ import "./AppRoot.css"; // Используйте classList, но будьте осторожны
19
21
 
20
22
  /* eslint-disable no-restricted-properties */
21
23
 
@@ -46,6 +48,7 @@ export var AppRoot = withAdaptivity(function (_ref) {
46
48
  window = _useDOM.window,
47
49
  document = _useDOM.document;
48
50
 
51
+ var insets = useInsets();
49
52
  var initialized = React.useRef(false);
50
53
 
51
54
  if (!initialized.current) {
@@ -103,7 +106,32 @@ export var AppRoot = withAdaptivity(function (_ref) {
103
106
  document.documentElement.classList.remove('vkui');
104
107
  }
105
108
  };
106
- }, []); // adaptivity handler
109
+ }, []); // setup insets
110
+
111
+ useIsomorphicLayoutEffect(function () {
112
+ if (mode === 'partial') {
113
+ return noop;
114
+ }
115
+
116
+ var parent = rootRef.current.parentElement;
117
+
118
+ for (var key in insets) {
119
+ if (insets.hasOwnProperty(key) && typeof insets[key] === 'number') {
120
+ var inset = insets[key];
121
+ parent.style.setProperty("--safe-area-inset-".concat(key), "".concat(inset, "px"));
122
+ portalRoot && portalRoot.style.setProperty("--safe-area-inset-".concat(key), "".concat(inset, "px"));
123
+ }
124
+ }
125
+
126
+ return function () {
127
+ for (var _key in insets) {
128
+ if (insets.hasOwnProperty(_key)) {
129
+ parent.style.removeProperty("--safe-area-inset-".concat(_key));
130
+ portalRoot && portalRoot.style.removeProperty("--safe-area-inset-".concat(_key));
131
+ }
132
+ }
133
+ };
134
+ }, [insets, portalRoot]); // adaptivity handler
107
135
 
108
136
  useIsomorphicLayoutEffect(function () {
109
137
  if (mode === 'partial' || sizeX !== SizeType.REGULAR) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/AppRoot/AppRoot.tsx"],"names":["React","useDOM","classNames","AppRootContext","withAdaptivity","SizeType","useIsomorphicLayoutEffect","classScopingMode","IconSettingsProvider","elementScrollController","globalScrollController","ScrollContext","noop","warnOnce","useKeyboardInputTracker","warn","AppRoot","children","_mode","mode","_embedded","embedded","sizeX","hasMouse","noLegacyClasses","scroll","props","isKeyboardInputActive","rootRef","useRef","useState","portalRoot","setPortalRoot","window","document","initialized","current","documentElement","classList","add","noConflict","process","env","NODE_ENV","portal","createElement","body","appendChild","parentElement","removeChild","parent","classes","concat","remove","REGULAR","container","scrollController","useMemo","content","appRoot"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../../lib/dom';\nimport { classNames } from '../../lib/classNames';\nimport { AppRootContext } from './AppRootContext';\nimport { withAdaptivity, SizeType, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { classScopingMode } from '../../lib/classScopingMode';\nimport { IconSettingsProvider } from '@vkontakte/icons';\nimport { elementScrollController, globalScrollController, ScrollContext, ScrollContextInterface } from './ScrollContext';\nimport { noop } from '../../lib/utils';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';\n\n// Используйте classList, но будьте осторожны\n/* eslint-disable no-restricted-properties */\n\nexport interface AppRootProps extends React.HTMLAttributes<HTMLDivElement>, Pick<AdaptivityProps, 'sizeX' | 'hasMouse'> {\n /** @deprecated Use mode=\"embedded\" */\n embedded?: boolean;\n /** Режим встраивания */\n mode?: 'partial' | 'embedded' | 'full';\n window?: Window;\n /** Убирает классы без префикса (.Button) */\n noLegacyClasses?: boolean;\n scroll?: 'global' | 'contain';\n}\n\nconst warn = warnOnce('AppRoot');\nexport const AppRoot: React.FC<AppRootProps> = withAdaptivity(({\n children, mode: _mode, embedded: _embedded, sizeX, hasMouse, noLegacyClasses = false, scroll = 'global',\n ...props\n}: AppRootProps) => {\n // normalize mode\n const mode = _mode || (_embedded ? 'embedded' : 'full');\n const isKeyboardInputActive = useKeyboardInputTracker();\n const rootRef = React.useRef<HTMLDivElement>();\n const [portalRoot, setPortalRoot] = React.useState<HTMLDivElement>(null);\n const { window, document } = useDOM();\n\n const initialized = React.useRef(false);\n if (!initialized.current) {\n if (window && mode === 'full') {\n document.documentElement.classList.add('vkui');\n }\n classScopingMode.noConflict = noLegacyClasses;\n initialized.current = true;\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (scroll !== 'global' && mode !== 'embedded') {\n warn('Scroll modes only supported in embedded mode');\n }\n if (_mode && _embedded) {\n warn(`mode=\"${mode}\" overrides embedded`);\n }\n }\n\n // setup portal\n useIsomorphicLayoutEffect(() => {\n if (mode === 'full') {\n return noop;\n }\n\n const portal = document.createElement('div');\n portal.classList.add('vkui__portal-root');\n document.body.appendChild(portal);\n setPortalRoot(portal);\n return () => portal.parentElement.removeChild(portal);\n }, []);\n\n // setup root classes\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n\n const parent = rootRef.current.parentElement;\n const classes = ['vkui__root'].concat(mode === 'embedded' ? 'vkui__root--embedded' : []);\n parent.classList.add(...classes);\n\n return () => {\n parent.classList.remove(...classes);\n if (mode === 'full') {\n document.documentElement.classList.remove('vkui');\n }\n };\n }, []);\n\n // adaptivity handler\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial' || sizeX !== SizeType.REGULAR) {\n return noop;\n }\n const container = mode === 'embedded' ? rootRef.current.parentElement : document.body;\n container.classList.add('vkui--sizeX-regular');\n return () => container.classList.remove('vkui--sizeX-regular');\n }, [sizeX]);\n\n const scrollController = React.useMemo<ScrollContextInterface>(\n () => scroll === 'contain' ? elementScrollController(rootRef) : globalScrollController(window, document),\n [scroll]);\n\n const content = (\n <AppRootContext.Provider value={{\n appRoot: rootRef,\n portalRoot: portalRoot,\n embedded: mode === 'embedded',\n }}>\n <ScrollContext.Provider value={scrollController}>\n <IconSettingsProvider classPrefix=\"vkui\" globalClasses={!noLegacyClasses}>\n {children}\n </IconSettingsProvider>\n </ScrollContext.Provider>\n </AppRootContext.Provider>\n );\n\n return mode === 'partial' ? content : (\n <div ref={rootRef} vkuiClass={classNames('AppRoot', {\n 'AppRoot--no-mouse': !hasMouse,\n 'AppRoot--keyboard-input': isKeyboardInputActive,\n })} {...props}>\n {content}\n </div>\n );\n}, {\n sizeX: true,\n hasMouse: true,\n});\n\nexport default AppRoot;\n"],"file":"AppRoot.js"}
1
+ {"version":3,"sources":["../../../../src/components/AppRoot/AppRoot.tsx"],"names":["React","useDOM","classNames","AppRootContext","withAdaptivity","SizeType","useIsomorphicLayoutEffect","classScopingMode","IconSettingsProvider","elementScrollController","globalScrollController","ScrollContext","noop","warnOnce","useKeyboardInputTracker","useInsets","warn","AppRoot","children","_mode","mode","_embedded","embedded","sizeX","hasMouse","noLegacyClasses","scroll","props","isKeyboardInputActive","rootRef","useRef","useState","portalRoot","setPortalRoot","window","document","insets","initialized","current","documentElement","classList","add","noConflict","process","env","NODE_ENV","portal","createElement","body","appendChild","parentElement","removeChild","parent","classes","concat","remove","key","hasOwnProperty","inset","style","setProperty","removeProperty","REGULAR","container","scrollController","useMemo","content","appRoot"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../../lib/dom';\nimport { classNames } from '../../lib/classNames';\nimport { AppRootContext } from './AppRootContext';\nimport { withAdaptivity, SizeType, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { classScopingMode } from '../../lib/classScopingMode';\nimport { IconSettingsProvider } from '@vkontakte/icons';\nimport { elementScrollController, globalScrollController, ScrollContext, ScrollContextInterface } from './ScrollContext';\nimport { noop } from '../../lib/utils';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useKeyboardInputTracker } from '../../hooks/useKeyboardInputTracker';\nimport { useInsets } from '../../hooks/useInsets';\nimport { Insets } from '@vkontakte/vk-bridge';\nimport './AppRoot.css';\n\n// Используйте classList, но будьте осторожны\n/* eslint-disable no-restricted-properties */\n\nexport interface AppRootProps extends React.HTMLAttributes<HTMLDivElement>, Pick<AdaptivityProps, 'sizeX' | 'hasMouse'> {\n /** @deprecated Use mode=\"embedded\" */\n embedded?: boolean;\n /** Режим встраивания */\n mode?: 'partial' | 'embedded' | 'full';\n window?: Window;\n /** Убирает классы без префикса (.Button) */\n noLegacyClasses?: boolean;\n scroll?: 'global' | 'contain';\n}\n\nconst warn = warnOnce('AppRoot');\nexport const AppRoot: React.FC<AppRootProps> = withAdaptivity(({\n children, mode: _mode, embedded: _embedded, sizeX, hasMouse, noLegacyClasses = false, scroll = 'global',\n ...props\n}: AppRootProps) => {\n // normalize mode\n const mode = _mode || (_embedded ? 'embedded' : 'full');\n const isKeyboardInputActive = useKeyboardInputTracker();\n const rootRef = React.useRef<HTMLDivElement>();\n const [portalRoot, setPortalRoot] = React.useState<HTMLDivElement>(null);\n const { window, document } = useDOM();\n const insets = useInsets();\n\n const initialized = React.useRef(false);\n if (!initialized.current) {\n if (window && mode === 'full') {\n document.documentElement.classList.add('vkui');\n }\n classScopingMode.noConflict = noLegacyClasses;\n initialized.current = true;\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (scroll !== 'global' && mode !== 'embedded') {\n warn('Scroll modes only supported in embedded mode');\n }\n if (_mode && _embedded) {\n warn(`mode=\"${mode}\" overrides embedded`);\n }\n }\n\n // setup portal\n useIsomorphicLayoutEffect(() => {\n if (mode === 'full') {\n return noop;\n }\n\n const portal = document.createElement('div');\n portal.classList.add('vkui__portal-root');\n document.body.appendChild(portal);\n setPortalRoot(portal);\n return () => portal.parentElement.removeChild(portal);\n }, []);\n\n // setup root classes\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n\n const parent = rootRef.current.parentElement;\n const classes = ['vkui__root'].concat(mode === 'embedded' ? 'vkui__root--embedded' : []);\n parent.classList.add(...classes);\n\n return () => {\n parent.classList.remove(...classes);\n if (mode === 'full') {\n document.documentElement.classList.remove('vkui');\n }\n };\n }, []);\n\n // setup insets\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial') {\n return noop;\n }\n\n const parent = rootRef.current.parentElement;\n\n for (const key in insets) {\n if (insets.hasOwnProperty(key) && typeof insets[key as keyof Insets] === 'number') {\n const inset = insets[key as keyof Insets];\n parent.style.setProperty(`--safe-area-inset-${key}`, `${inset}px`);\n portalRoot && portalRoot.style.setProperty(`--safe-area-inset-${key}`, `${inset}px`);\n }\n }\n\n return () => {\n for (const key in insets) {\n if (insets.hasOwnProperty(key)) {\n parent.style.removeProperty(`--safe-area-inset-${key}`);\n portalRoot && portalRoot.style.removeProperty(`--safe-area-inset-${key}`);\n }\n }\n };\n }, [insets, portalRoot]);\n\n // adaptivity handler\n useIsomorphicLayoutEffect(() => {\n if (mode === 'partial' || sizeX !== SizeType.REGULAR) {\n return noop;\n }\n const container = mode === 'embedded' ? rootRef.current.parentElement : document.body;\n container.classList.add('vkui--sizeX-regular');\n return () => container.classList.remove('vkui--sizeX-regular');\n }, [sizeX]);\n\n const scrollController = React.useMemo<ScrollContextInterface>(\n () => scroll === 'contain' ? elementScrollController(rootRef) : globalScrollController(window, document),\n [scroll]);\n\n const content = (\n <AppRootContext.Provider value={{\n appRoot: rootRef,\n portalRoot: portalRoot,\n embedded: mode === 'embedded',\n }}>\n <ScrollContext.Provider value={scrollController}>\n <IconSettingsProvider classPrefix=\"vkui\" globalClasses={!noLegacyClasses}>\n {children}\n </IconSettingsProvider>\n </ScrollContext.Provider>\n </AppRootContext.Provider>\n );\n\n return mode === 'partial' ? content : (\n <div ref={rootRef} vkuiClass={classNames('AppRoot', {\n 'AppRoot--no-mouse': !hasMouse,\n 'AppRoot--keyboard-input': isKeyboardInputActive,\n })} {...props}>\n {content}\n </div>\n );\n}, {\n sizeX: true,\n hasMouse: true,\n});\n\nexport default AppRoot;\n"],"file":"AppRoot.js"}
@@ -1 +1 @@
1
- .vkuiBanner{margin:12px 0;padding:0 16px;color:#000;color:var(--text_primary)}.vkuiBanner__in{position:relative;display:flex;flex-flow:row nowrap;align-items:stretch;padding:12px;padding-left:16px;background-color:#f5f5f5;background-color:var(--content_tint_background);border-radius:8px;overflow:hidden}.vkuiBanner__in::before{content:'';position:absolute;left:0;top:0;display:block;width:100%;height:100%;border:1px solid rgba(0,0,0,.08);border:var(--thin-border) solid var(--image_border);border-radius:inherit;pointer-events:none;box-sizing:border-box;z-index:2}.vkuiBanner__before{position:relative;margin-right:12px;z-index:2}.vkuiBanner__content{position:relative;flex:1;display:flex;justify-content:center;flex-direction:column;min-width:0;z-index:2}.vkuiBanner__subheader{display:block;color:#6d7885;color:var(--text_subhead)}.vkuiBanner__bg{position:absolute;left:0;top:0;z-index:1}.vkuiBanner__bg,.vkuiBanner__bg>*{width:100%;height:100%}.vkuiBanner__aside{display:flex;flex-flow:row nowrap;align-content:center;align-items:center;justify-content:flex-end;width:28px;color:#b8c1cc;color:var(--icon_tertiary)}.vkuiBanner__dismiss{position:absolute;top:2px;right:2px;display:flex;flex-flow:row nowrap;align-content:center;align-items:center;justify-content:center;color:#99a2ad;color:var(--icon_secondary);z-index:3}.vkuiBanner__actions{margin-bottom:-6px}.vkuiBanner__subheader:not(:first-child),.vkuiBanner__text:not(:first-child){margin-top:2px}.vkuiBanner--md-image .vkuiBanner__in{background-color:#f5f5f5;background-color:var(--content_tint_background)}.vkuiBanner--md-image .vkuiBanner__dismiss,.vkuiBanner--inverted{color:#fff;color:var(--white)}.vkuiBanner--inverted .vkuiBanner__subheader{color:#fff;color:var(--white);opacity:.72}.vkuiBanner--sz-s .vkuiBanner__before{margin-left:-4px}.vkuiBanner--sz-m .vkuiBanner__in{padding:16px}.vkuiBanner--sz-m .vkuiBanner__subheader:not(:first-child),.vkuiBanner--sz-m .vkuiBanner__text:not(:first-child){margin-top:4px}.vkuiBanner--ios{padding:0 12px}.vkuiBanner--ios .vkuiBanner__in{border-radius:10px}.vkuiBanner--ios .vkuiBanner__dismiss,.vkuiBanner--ios.vkuiBanner--md-image .vkuiBanner__dismiss{color:#b8c1cc;color:var(--icon_tertiary)}
1
+ .vkuiBanner{margin:12px 0;padding:0 16px;color:#000;color:var(--text_primary)}.vkuiBanner__in{position:relative;display:flex;flex-flow:row nowrap;align-items:stretch;padding:12px;padding-left:16px;background-color:#f5f5f5;background-color:var(--content_tint_background);border-radius:8px;overflow:hidden}.vkuiBanner__in::before{content:'';position:absolute;left:0;top:0;display:block;width:100%;height:100%;border:1px solid rgba(0,0,0,.08);border:var(--thin-border) solid var(--image_border);border-radius:inherit;pointer-events:none;box-sizing:border-box;z-index:2}.vkuiBanner__before{position:relative;margin-right:12px;z-index:2}.vkuiBanner__content{position:relative;flex:1;display:flex;justify-content:center;flex-direction:column;min-width:0;z-index:2}.vkuiBanner__header{display:block}.vkuiBanner__subheader{display:block;color:#6d7885;color:var(--text_subhead)}.vkuiBanner__bg{position:absolute;left:0;top:0;z-index:1}.vkuiBanner__bg,.vkuiBanner__bg>*{width:100%;height:100%}.vkuiBanner__aside{display:flex;flex-flow:row nowrap;align-content:center;align-items:center;justify-content:flex-end;width:28px;color:#b8c1cc;color:var(--icon_tertiary)}.vkuiBanner__dismiss{position:absolute;top:2px;right:2px;display:flex;flex-flow:row nowrap;align-content:center;align-items:center;justify-content:center;color:#99a2ad;color:var(--icon_secondary);z-index:3}.vkuiBanner__actions{margin-bottom:-6px}.vkuiBanner__subheader:not(:first-child),.vkuiBanner__text:not(:first-child){margin-top:2px}.vkuiBanner--md-image .vkuiBanner__in{background-color:#f5f5f5;background-color:var(--content_tint_background)}.vkuiBanner--md-image .vkuiBanner__dismiss,.vkuiBanner--inverted{color:#fff;color:var(--white)}.vkuiBanner--inverted .vkuiBanner__subheader{color:#fff;color:var(--white);opacity:.72}.vkuiBanner--sz-s .vkuiBanner__before{margin-left:-4px}.vkuiBanner--sz-m .vkuiBanner__in{padding:16px}.vkuiBanner--sz-m .vkuiBanner__subheader:not(:first-child),.vkuiBanner--sz-m .vkuiBanner__text:not(:first-child){margin-top:4px}.vkuiBanner--ios{padding:0 12px}.vkuiBanner--ios .vkuiBanner__in{border-radius:10px}.vkuiBanner--ios .vkuiBanner__dismiss,.vkuiBanner--ios.vkuiBanner--md-image .vkuiBanner__dismiss{color:#b8c1cc;color:var(--icon_tertiary)}
@@ -78,7 +78,7 @@ var Banner = function Banner(props) {
78
78
  vkuiClass: "Banner__content"
79
79
  }, hasReactNode(header) && createScopedElement(BannerHeader, {
80
80
  size: size,
81
- Component: "h2",
81
+ Component: "span",
82
82
  vkuiClass: "Banner__header"
83
83
  }, header), hasReactNode(subheader) && createScopedElement(BannerSubheader, {
84
84
  Component: "span",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Banner/Banner.tsx"],"names":["React","getClassName","classNames","usePlatform","ANDROID","IOS","VKCOM","hasReactNode","Icon24Chevron","Icon24DismissSubstract","Icon24DismissDark","Icon24Cancel","Tappable","IconButton","Headline","Subhead","Text","Title","BannerHeader","size","restProps","BannerSubheader","Banner","props","platform","mode","imageTheme","before","asideMode","header","subheader","text","children","background","actions","onDismiss","dismissLabel","Children","count","defaultProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { hasReactNode } from '../../lib/utils';\nimport { Icon24Chevron, Icon24DismissSubstract, Icon24DismissDark, Icon24Cancel } from '@vkontakte/icons';\nimport Tappable from '../Tappable/Tappable';\nimport IconButton from '../IconButton/IconButton';\nimport Headline from '../Typography/Headline/Headline';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport Text from '../Typography/Text/Text';\nimport Title from '../Typography/Title/Title';\nimport './Banner.css';\n\nexport interface BannerProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Тип баннера.\n */\n mode?: 'tint' | 'image';\n size?: 's' | 'm';\n /**\n * Тип действия в правой части баннера.\n *\n * - `dismiss` – отображается иконка крестика, при клике на неё сработает свойство `onDismiss`.\n * - `expand` – отображается иконка шеврона, которая подразумевает, что при клике на баннер можно куда-то перейти.\n */\n asideMode?: 'dismiss' | 'expand';\n /**\n * Срабатывает при клике на иконку крестика при `asideMode=\"dismiss\"`.\n */\n onDismiss?: React.MouseEventHandler<HTMLButtonElement>;\n /**\n * `aria-label` для кнопки при `asideMode=\"dismiss\". Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n /**\n * Содержимое, отображаемое в левой части баннера.\n */\n before?: React.ReactNode;\n /**\n * Заголовок. <br />\n * При использовании этого свойства рекомендуется не указывать `text`.\n */\n header?: React.ReactNode;\n /**\n * Подзаголовок. <br />\n * При использовании этого свойства рекомендуется не указывать `text`.\n */\n subheader?: React.ReactNode;\n /**\n * Текст баннера. <br />\n * Это свойство следует использовать без указания `header` и `subheader`.\n */\n text?: React.ReactNode;\n /**\n * При использовании `mode=\"image\"`.\n *\n * - `light` – в качестве фона используется светлое изображение, цвет текста в баннере будет тёмным.\n * - `dark` – в качестве фона используется тёмное изображение, цвет текста будет светлым.\n */\n imageTheme?: 'light' | 'dark';\n /**\n * При использовании `mode=\"image\"`.\n *\n * Элемент, который нужно стилизовать цветом и/или фоном. Этот элемент будет растянут на 100% ширины и высоты баннера.\n */\n background?: React.ReactNode;\n /**\n * Кнопки, отображаемые в баннере.\n *\n * - В режиме `tint` или в `image` со светлым фоном рекомендуется использовать только `<Button mode=\"primary\" />` или `<Button mode=\"tertiary\" hasHover={false} />`.\n * - В режиме `image` с тёмным фоном – `<Button mode=\"overlay_primary\" />`.\n */\n actions?: React.ReactNode;\n}\n\ninterface BannerTypographyProps extends Pick<BannerProps, 'size'> {\n Component?: React.ElementType;\n}\n\nconst BannerHeader: React.FC<BannerTypographyProps> = ({ size, ...restProps }: BannerTypographyProps) => {\n return size === 'm'\n ? <Title level=\"2\" weight=\"medium\" {...restProps} />\n : <Headline weight=\"medium\" {...restProps} />;\n};\n\nconst BannerSubheader: React.FC<BannerTypographyProps> = ({ size, ...restProps }: BannerTypographyProps) => {\n return size === 'm'\n ? <Text weight=\"regular\" {...restProps} />\n : <Subhead weight=\"regular\" {...restProps} />;\n};\n\nconst Banner: React.FC<BannerProps> = (props: BannerProps) => {\n const platform = usePlatform();\n const {\n mode, imageTheme, size, before, asideMode, header, subheader, text, children, background, actions,\n onDismiss, dismissLabel,\n ...restProps\n } = props;\n\n return (\n <section\n {...restProps}\n vkuiClass={classNames(\n getClassName('Banner', platform),\n `Banner--md-${mode}`,\n `Banner--sz-${size}`,\n {\n 'Banner--inverted': mode === 'image' && imageTheme === 'dark',\n },\n )}\n >\n <Tappable\n vkuiClass=\"Banner__in\"\n activeMode={platform === IOS ? 'opacity' : 'background'}\n disabled={asideMode !== 'expand'}\n role={asideMode === 'expand' ? 'button' : null}\n >\n {mode === 'image' && background &&\n <div aria-hidden=\"true\" vkuiClass=\"Banner__bg\">\n {background}\n </div>\n }\n\n {before && <div vkuiClass=\"Banner__before\">{before}</div>}\n\n <div vkuiClass=\"Banner__content\">\n {hasReactNode(header) && (\n <BannerHeader size={size} Component=\"h2\" vkuiClass=\"Banner__header\">{header}</BannerHeader>\n )}\n {hasReactNode(subheader) && (\n <BannerSubheader Component=\"span\" size={size} vkuiClass=\"Banner__subheader\">{subheader}</BannerSubheader>\n )}\n {hasReactNode(text) && <Text weight=\"regular\" vkuiClass=\"Banner__text\">{text}</Text>}\n {hasReactNode(actions) && React.Children.count(actions) > 0 && (\n <div vkuiClass=\"Banner__actions\">{actions}</div>\n )}\n </div>\n\n {!!asideMode && (\n <div vkuiClass=\"Banner__aside\">\n {asideMode === 'expand' && <Icon24Chevron />}\n\n {asideMode === 'dismiss' && (\n <IconButton\n aria-label={dismissLabel}\n vkuiClass=\"Banner__dismiss\"\n onClick={onDismiss}\n hoverMode=\"opacity\"\n hasActive={false}\n >\n {(platform === ANDROID || platform === VKCOM) && <Icon24Cancel />}\n {platform === IOS && (mode === 'image' ? <Icon24DismissDark /> : <Icon24DismissSubstract />)}\n </IconButton>\n )}\n </div>\n )}\n </Tappable>\n </section>\n );\n};\n\nBanner.defaultProps = {\n dismissLabel: 'Скрыть',\n mode: 'tint',\n size: 's',\n imageTheme: 'dark',\n};\n\nexport default Banner;\n"],"file":"Banner.js"}
1
+ {"version":3,"sources":["../../../../src/components/Banner/Banner.tsx"],"names":["React","getClassName","classNames","usePlatform","ANDROID","IOS","VKCOM","hasReactNode","Icon24Chevron","Icon24DismissSubstract","Icon24DismissDark","Icon24Cancel","Tappable","IconButton","Headline","Subhead","Text","Title","BannerHeader","size","restProps","BannerSubheader","Banner","props","platform","mode","imageTheme","before","asideMode","header","subheader","text","children","background","actions","onDismiss","dismissLabel","Children","count","defaultProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { hasReactNode } from '../../lib/utils';\nimport { Icon24Chevron, Icon24DismissSubstract, Icon24DismissDark, Icon24Cancel } from '@vkontakte/icons';\nimport Tappable from '../Tappable/Tappable';\nimport IconButton from '../IconButton/IconButton';\nimport Headline from '../Typography/Headline/Headline';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport Text from '../Typography/Text/Text';\nimport Title from '../Typography/Title/Title';\nimport './Banner.css';\n\nexport interface BannerProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Тип баннера.\n */\n mode?: 'tint' | 'image';\n size?: 's' | 'm';\n /**\n * Тип действия в правой части баннера.\n *\n * - `dismiss` – отображается иконка крестика, при клике на неё сработает свойство `onDismiss`.\n * - `expand` – отображается иконка шеврона, которая подразумевает, что при клике на баннер можно куда-то перейти.\n */\n asideMode?: 'dismiss' | 'expand';\n /**\n * Срабатывает при клике на иконку крестика при `asideMode=\"dismiss\"`.\n */\n onDismiss?: React.MouseEventHandler<HTMLButtonElement>;\n /**\n * `aria-label` для кнопки при `asideMode=\"dismiss\". Необходим, чтобы кнопка была доступной.\n */\n dismissLabel?: string;\n /**\n * Содержимое, отображаемое в левой части баннера.\n */\n before?: React.ReactNode;\n /**\n * Заголовок. <br />\n * При использовании этого свойства рекомендуется не указывать `text`.\n */\n header?: React.ReactNode;\n /**\n * Подзаголовок. <br />\n * При использовании этого свойства рекомендуется не указывать `text`.\n */\n subheader?: React.ReactNode;\n /**\n * Текст баннера. <br />\n * Это свойство следует использовать без указания `header` и `subheader`.\n */\n text?: React.ReactNode;\n /**\n * При использовании `mode=\"image\"`.\n *\n * - `light` – в качестве фона используется светлое изображение, цвет текста в баннере будет тёмным.\n * - `dark` – в качестве фона используется тёмное изображение, цвет текста будет светлым.\n */\n imageTheme?: 'light' | 'dark';\n /**\n * При использовании `mode=\"image\"`.\n *\n * Элемент, который нужно стилизовать цветом и/или фоном. Этот элемент будет растянут на 100% ширины и высоты баннера.\n */\n background?: React.ReactNode;\n /**\n * Кнопки, отображаемые в баннере.\n *\n * - В режиме `tint` или в `image` со светлым фоном рекомендуется использовать только `<Button mode=\"primary\" />` или `<Button mode=\"tertiary\" hasHover={false} />`.\n * - В режиме `image` с тёмным фоном – `<Button mode=\"overlay_primary\" />`.\n */\n actions?: React.ReactNode;\n}\n\ninterface BannerTypographyProps extends Pick<BannerProps, 'size'> {\n Component?: React.ElementType;\n}\n\nconst BannerHeader: React.FC<BannerTypographyProps> = ({ size, ...restProps }: BannerTypographyProps) => {\n return size === 'm'\n ? <Title level=\"2\" weight=\"medium\" {...restProps} />\n : <Headline weight=\"medium\" {...restProps} />;\n};\n\nconst BannerSubheader: React.FC<BannerTypographyProps> = ({ size, ...restProps }: BannerTypographyProps) => {\n return size === 'm'\n ? <Text weight=\"regular\" {...restProps} />\n : <Subhead weight=\"regular\" {...restProps} />;\n};\n\nconst Banner: React.FC<BannerProps> = (props: BannerProps) => {\n const platform = usePlatform();\n const {\n mode, imageTheme, size, before, asideMode, header, subheader, text, children, background, actions,\n onDismiss, dismissLabel,\n ...restProps\n } = props;\n\n return (\n <section\n {...restProps}\n vkuiClass={classNames(\n getClassName('Banner', platform),\n `Banner--md-${mode}`,\n `Banner--sz-${size}`,\n {\n 'Banner--inverted': mode === 'image' && imageTheme === 'dark',\n },\n )}\n >\n <Tappable\n vkuiClass=\"Banner__in\"\n activeMode={platform === IOS ? 'opacity' : 'background'}\n disabled={asideMode !== 'expand'}\n role={asideMode === 'expand' ? 'button' : null}\n >\n {mode === 'image' && background &&\n <div aria-hidden=\"true\" vkuiClass=\"Banner__bg\">\n {background}\n </div>\n }\n\n {before && <div vkuiClass=\"Banner__before\">{before}</div>}\n\n <div vkuiClass=\"Banner__content\">\n {hasReactNode(header) && (\n <BannerHeader size={size} Component=\"span\" vkuiClass=\"Banner__header\">{header}</BannerHeader>\n )}\n {hasReactNode(subheader) && (\n <BannerSubheader Component=\"span\" size={size} vkuiClass=\"Banner__subheader\">{subheader}</BannerSubheader>\n )}\n {hasReactNode(text) && <Text weight=\"regular\" vkuiClass=\"Banner__text\">{text}</Text>}\n {hasReactNode(actions) && React.Children.count(actions) > 0 && (\n <div vkuiClass=\"Banner__actions\">{actions}</div>\n )}\n </div>\n\n {!!asideMode && (\n <div vkuiClass=\"Banner__aside\">\n {asideMode === 'expand' && <Icon24Chevron />}\n\n {asideMode === 'dismiss' && (\n <IconButton\n aria-label={dismissLabel}\n vkuiClass=\"Banner__dismiss\"\n onClick={onDismiss}\n hoverMode=\"opacity\"\n hasActive={false}\n >\n {(platform === ANDROID || platform === VKCOM) && <Icon24Cancel />}\n {platform === IOS && (mode === 'image' ? <Icon24DismissDark /> : <Icon24DismissSubstract />)}\n </IconButton>\n )}\n </div>\n )}\n </Tappable>\n </section>\n );\n};\n\nBanner.defaultProps = {\n dismissLabel: 'Скрыть',\n mode: 'tint',\n size: 's',\n imageTheme: 'dark',\n};\n\nexport default Banner;\n"],"file":"Banner.js"}
@@ -6,7 +6,7 @@ import { createScopedElement } from "../../lib/jsxRuntime";
6
6
  import * as React from 'react';
7
7
  import { classNames } from "../../lib/classNames";
8
8
  import { getClassName } from "../../helpers/getClassName";
9
- import Touch from "../Touch/Touch";
9
+ import { Touch } from "../Touch/Touch";
10
10
  import { ANDROID, IOS, VKCOM } from "../../lib/platform";
11
11
  import { Icon24Reorder, Icon24ReorderIos, Icon24CheckCircleOn, Icon24CheckCircleOff, Icon24CheckBoxOff, Icon24CheckBoxOn } from '@vkontakte/icons';
12
12
  import SimpleCell from "../SimpleCell/SimpleCell";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Cell/Cell.tsx"],"names":["React","classNames","getClassName","Touch","ANDROID","IOS","VKCOM","Icon24Reorder","Icon24ReorderIos","Icon24CheckCircleOn","Icon24CheckCircleOff","Icon24CheckBoxOff","Icon24CheckBoxOn","SimpleCell","Removable","usePlatform","ListContext","Cell","props","onRemove","removePlaceholder","onDragFinish","className","style","before","after","disabled","removable","draggable","selectable","Component","onChange","name","checked","defaultChecked","getRootRef","restProps","rootElRef","useRef","platform","useState","dragging","setDragging","undefined","siblings","setSiblings","dragStartIndex","setDragStartIndex","dragEndIndex","setDragEndIndex","dragShift","setDragShift","dragDirection","setDragDirection","onDragStart","rootEl","current","_siblings","Array","from","parentElement","childNodes","rootElIdx","indexOf","onDragMove","e","originalEvent","preventDefault","transform","shiftY","forEach","sibling","siblingIndex","rootGesture","getBoundingClientRect","siblingGesture","bottom","top","height","onDragEnd","to","onDragClick","nativeEvent","stopPropagation","useContext","toggleDrag","useEffect","IconOff","IconOn","simpleCell","defaultProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport Touch, { TouchEvent } from '../Touch/Touch';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { Icon24Reorder, Icon24ReorderIos, Icon24CheckCircleOn, Icon24CheckCircleOff, Icon24CheckBoxOff, Icon24CheckBoxOn } from '@vkontakte/icons';\nimport SimpleCell, { SimpleCellProps } from '../SimpleCell/SimpleCell';\nimport { HasPlatform } from '../../types';\nimport { Removable, RemovableProps } from '../Removable/Removable';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { ListContext } from '../../components/List/ListContext';\nimport './Cell.css';\n\nexport interface CellProps extends SimpleCellProps, HasPlatform, RemovableProps {\n /**\n * В режиме перетаскивания ячейка перестает быть кликабельной, то есть при клике переданный onClick вызываться не будет\n */\n draggable?: boolean;\n removable?: boolean;\n /**\n * Имя для input в режиме selectable\n */\n name?: string;\n selectable?: boolean;\n /**\n * В режиме selectable реагирует на входящие значения пропса cheсked, как зависящий напрямую от входящего значения\n */\n checked?: boolean;\n /**\n * В режиме selectable реагирует на входящие значения пропса defaultChecked как неконтролируемый компонент\n */\n defaultChecked?: boolean;\n /**\n * Коллбэк срабатывает при завершении перетаскивания.\n * **Важно:** режим перетаскивания не меняет порядок ячеек в DOM. В коллбэке есть объект с полями `from` и `to`.\n * Эти числа нужны для того, чтобы разработчик понимал, с какого индекса на какой произошел переход. В песочнице\n * есть рабочий пример с обработкой этих чисел и перерисовкой списка.\n */\n onDragFinish?: ({ from, to }: { from: number; to: number }) => void;\n}\n\nexport const Cell: React.FC<CellProps> = (props: CellProps) => {\n const {\n onRemove,\n removePlaceholder,\n onDragFinish,\n className,\n style,\n before,\n after,\n disabled,\n removable,\n draggable,\n selectable,\n Component,\n onChange,\n name,\n checked,\n defaultChecked,\n getRootRef,\n ...restProps\n } = props;\n const rootElRef = React.useRef(null);\n const platform = usePlatform();\n\n const [dragging, setDragging] = React.useState<boolean>(false);\n\n const [siblings, setSiblings] = React.useState<HTMLElement[]>(undefined);\n const [dragStartIndex, setDragStartIndex] = React.useState<number>(undefined);\n const [dragEndIndex, setDragEndIndex] = React.useState<number>(undefined);\n const [dragShift, setDragShift] = React.useState<number>(0);\n const [dragDirection, setDragDirection] = React.useState<'down' | 'up'>(undefined);\n\n const onDragStart = () => {\n const rootEl = rootElRef?.current;\n\n setDragging(true);\n\n const _siblings: HTMLElement[] = Array.from(rootEl.parentElement.childNodes);\n const rootElIdx = _siblings.indexOf(rootEl);\n\n setDragStartIndex(rootElIdx);\n setDragEndIndex(rootElIdx);\n setSiblings(_siblings);\n setDragShift(0);\n };\n\n const onDragMove = (e: TouchEvent) => {\n e.originalEvent.preventDefault();\n\n const rootEl = rootElRef?.current;\n\n rootEl.style.transform = `translateY(${e.shiftY}px)`;\n setDragDirection(dragShift - e.shiftY < 0 ? 'down' : 'up');\n setDragShift(e.shiftY);\n setDragEndIndex(dragStartIndex);\n\n siblings.forEach((sibling: HTMLElement, siblingIndex: number) => {\n const rootGesture = rootEl.getBoundingClientRect();\n\n const siblingGesture = sibling.getBoundingClientRect();\n\n if (dragStartIndex < siblingIndex) {\n if (rootGesture.bottom > siblingGesture.top + siblingGesture.height / 2) {\n if (dragDirection === 'down') {\n sibling.style.transform = 'translateY(-100%)';\n }\n\n setDragEndIndex((dragEndIndex) => dragEndIndex + 1);\n }\n if (rootGesture.top < siblingGesture.bottom - siblingGesture.height / 2 && dragDirection === 'up') {\n sibling.style.transform = 'translateY(0)';\n }\n } else if (dragStartIndex > siblingIndex) {\n if (rootGesture.top < siblingGesture.bottom - siblingGesture.height / 2) {\n if (dragDirection === 'up') {\n sibling.style.transform = 'translateY(100%)';\n }\n\n setDragEndIndex((dragEndIndex) => dragEndIndex - 1);\n }\n if (rootGesture.bottom > siblingGesture.top + siblingGesture.height / 2 && dragDirection === 'down') {\n sibling.style.transform = 'translateY(0)';\n }\n }\n });\n };\n\n const onDragEnd = () => {\n const [from, to] = [dragStartIndex, dragEndIndex];\n\n siblings.forEach((sibling: HTMLElement) => {\n sibling.style.transform = null;\n });\n\n setSiblings(undefined);\n setDragEndIndex(undefined);\n setDragStartIndex(undefined);\n setDragDirection(undefined);\n setDragShift(undefined);\n\n setDragging(false);\n\n props.onDragFinish && props.onDragFinish({ from, to });\n };\n\n const onDragClick = (e: React.MouseEvent) => {\n e.nativeEvent.stopPropagation();\n e.preventDefault();\n };\n\n const { toggleDrag } = React.useContext(ListContext);\n React.useEffect(() => {\n if (dragging) {\n toggleDrag(true);\n return () => toggleDrag(false);\n }\n return undefined;\n }, [dragging]);\n\n const IconOff = platform === ANDROID ? Icon24CheckBoxOff : Icon24CheckCircleOff;\n const IconOn = platform === ANDROID ? Icon24CheckBoxOn : Icon24CheckCircleOn;\n\n const simpleCell = (\n <SimpleCell\n {...restProps}\n disabled={draggable || removable || disabled}\n Component={selectable ? 'label' : Component}\n htmlFor={selectable ? name : undefined}\n before={\n <React.Fragment>\n {(platform === ANDROID || platform === VKCOM) && draggable && (\n <Touch\n vkuiClass=\"Cell__dragger\"\n onStart={onDragStart}\n onMoveY={onDragMove}\n onEnd={onDragEnd}\n onClick={onDragClick}\n ><Icon24Reorder /></Touch>\n )}\n {selectable && (\n <React.Fragment>\n <input\n type=\"checkbox\"\n vkuiClass=\"Cell__checkbox\"\n name={name}\n onChange={onChange}\n defaultChecked={defaultChecked}\n checked={checked}\n disabled={disabled}\n />\n <span vkuiClass=\"Cell__marker\">\n <IconOff vkuiClass=\"Cell__marker-in\" />\n <IconOn vkuiClass=\"Cell__marker-in Cell__marker-in--checked\" />\n </span>\n </React.Fragment>\n )}\n {before}\n </React.Fragment>\n }\n after={\n <React.Fragment>\n {platform === IOS && draggable && (\n <Touch\n vkuiClass=\"Cell__dragger\"\n onStart={onDragStart}\n onMoveY={onDragMove}\n onEnd={onDragEnd}\n onClick={onDragClick}\n ><Icon24ReorderIos /></Touch>\n )}\n {after}\n </React.Fragment>\n }\n />\n );\n\n return (\n <div\n vkuiClass={classNames(getClassName('Cell', platform), {\n 'Cell--dragging': dragging,\n 'Cell--removable': removable,\n 'Cell--selectable': selectable,\n 'Cell--disabled': disabled,\n })}\n className={className}\n style={style}\n ref={rootElRef}\n >\n {removable\n ? <Removable removePlaceholder={removePlaceholder} onRemove={(e) => onRemove(e, rootElRef?.current)}>{simpleCell}</Removable>\n : simpleCell\n }\n </div>\n );\n};\n\nCell.defaultProps = {\n removePlaceholder: 'Удалить',\n};\n"],"file":"Cell.js"}
1
+ {"version":3,"sources":["../../../../src/components/Cell/Cell.tsx"],"names":["React","classNames","getClassName","Touch","ANDROID","IOS","VKCOM","Icon24Reorder","Icon24ReorderIos","Icon24CheckCircleOn","Icon24CheckCircleOff","Icon24CheckBoxOff","Icon24CheckBoxOn","SimpleCell","Removable","usePlatform","ListContext","Cell","props","onRemove","removePlaceholder","onDragFinish","className","style","before","after","disabled","removable","draggable","selectable","Component","onChange","name","checked","defaultChecked","getRootRef","restProps","rootElRef","useRef","platform","useState","dragging","setDragging","undefined","siblings","setSiblings","dragStartIndex","setDragStartIndex","dragEndIndex","setDragEndIndex","dragShift","setDragShift","dragDirection","setDragDirection","onDragStart","rootEl","current","_siblings","Array","from","parentElement","childNodes","rootElIdx","indexOf","onDragMove","e","originalEvent","preventDefault","transform","shiftY","forEach","sibling","siblingIndex","rootGesture","getBoundingClientRect","siblingGesture","bottom","top","height","onDragEnd","to","onDragClick","nativeEvent","stopPropagation","useContext","toggleDrag","useEffect","IconOff","IconOn","simpleCell","defaultProps"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { ANDROID, IOS, VKCOM } from '../../lib/platform';\nimport { Icon24Reorder, Icon24ReorderIos, Icon24CheckCircleOn, Icon24CheckCircleOff, Icon24CheckBoxOff, Icon24CheckBoxOn } from '@vkontakte/icons';\nimport SimpleCell, { SimpleCellProps } from '../SimpleCell/SimpleCell';\nimport { HasPlatform } from '../../types';\nimport { Removable, RemovableProps } from '../Removable/Removable';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { ListContext } from '../../components/List/ListContext';\nimport './Cell.css';\n\nexport interface CellProps extends SimpleCellProps, HasPlatform, RemovableProps {\n /**\n * В режиме перетаскивания ячейка перестает быть кликабельной, то есть при клике переданный onClick вызываться не будет\n */\n draggable?: boolean;\n removable?: boolean;\n /**\n * Имя для input в режиме selectable\n */\n name?: string;\n selectable?: boolean;\n /**\n * В режиме selectable реагирует на входящие значения пропса cheсked, как зависящий напрямую от входящего значения\n */\n checked?: boolean;\n /**\n * В режиме selectable реагирует на входящие значения пропса defaultChecked как неконтролируемый компонент\n */\n defaultChecked?: boolean;\n /**\n * Коллбэк срабатывает при завершении перетаскивания.\n * **Важно:** режим перетаскивания не меняет порядок ячеек в DOM. В коллбэке есть объект с полями `from` и `to`.\n * Эти числа нужны для того, чтобы разработчик понимал, с какого индекса на какой произошел переход. В песочнице\n * есть рабочий пример с обработкой этих чисел и перерисовкой списка.\n */\n onDragFinish?: ({ from, to }: { from: number; to: number }) => void;\n}\n\nexport const Cell: React.FC<CellProps> = (props: CellProps) => {\n const {\n onRemove,\n removePlaceholder,\n onDragFinish,\n className,\n style,\n before,\n after,\n disabled,\n removable,\n draggable,\n selectable,\n Component,\n onChange,\n name,\n checked,\n defaultChecked,\n getRootRef,\n ...restProps\n } = props;\n const rootElRef = React.useRef(null);\n const platform = usePlatform();\n\n const [dragging, setDragging] = React.useState<boolean>(false);\n\n const [siblings, setSiblings] = React.useState<HTMLElement[]>(undefined);\n const [dragStartIndex, setDragStartIndex] = React.useState<number>(undefined);\n const [dragEndIndex, setDragEndIndex] = React.useState<number>(undefined);\n const [dragShift, setDragShift] = React.useState<number>(0);\n const [dragDirection, setDragDirection] = React.useState<'down' | 'up'>(undefined);\n\n const onDragStart = () => {\n const rootEl = rootElRef?.current;\n\n setDragging(true);\n\n const _siblings: HTMLElement[] = Array.from(rootEl.parentElement.childNodes);\n const rootElIdx = _siblings.indexOf(rootEl);\n\n setDragStartIndex(rootElIdx);\n setDragEndIndex(rootElIdx);\n setSiblings(_siblings);\n setDragShift(0);\n };\n\n const onDragMove = (e: TouchEvent) => {\n e.originalEvent.preventDefault();\n\n const rootEl = rootElRef?.current;\n\n rootEl.style.transform = `translateY(${e.shiftY}px)`;\n setDragDirection(dragShift - e.shiftY < 0 ? 'down' : 'up');\n setDragShift(e.shiftY);\n setDragEndIndex(dragStartIndex);\n\n siblings.forEach((sibling: HTMLElement, siblingIndex: number) => {\n const rootGesture = rootEl.getBoundingClientRect();\n\n const siblingGesture = sibling.getBoundingClientRect();\n\n if (dragStartIndex < siblingIndex) {\n if (rootGesture.bottom > siblingGesture.top + siblingGesture.height / 2) {\n if (dragDirection === 'down') {\n sibling.style.transform = 'translateY(-100%)';\n }\n\n setDragEndIndex((dragEndIndex) => dragEndIndex + 1);\n }\n if (rootGesture.top < siblingGesture.bottom - siblingGesture.height / 2 && dragDirection === 'up') {\n sibling.style.transform = 'translateY(0)';\n }\n } else if (dragStartIndex > siblingIndex) {\n if (rootGesture.top < siblingGesture.bottom - siblingGesture.height / 2) {\n if (dragDirection === 'up') {\n sibling.style.transform = 'translateY(100%)';\n }\n\n setDragEndIndex((dragEndIndex) => dragEndIndex - 1);\n }\n if (rootGesture.bottom > siblingGesture.top + siblingGesture.height / 2 && dragDirection === 'down') {\n sibling.style.transform = 'translateY(0)';\n }\n }\n });\n };\n\n const onDragEnd = () => {\n const [from, to] = [dragStartIndex, dragEndIndex];\n\n siblings.forEach((sibling: HTMLElement) => {\n sibling.style.transform = null;\n });\n\n setSiblings(undefined);\n setDragEndIndex(undefined);\n setDragStartIndex(undefined);\n setDragDirection(undefined);\n setDragShift(undefined);\n\n setDragging(false);\n\n props.onDragFinish && props.onDragFinish({ from, to });\n };\n\n const onDragClick = (e: React.MouseEvent) => {\n e.nativeEvent.stopPropagation();\n e.preventDefault();\n };\n\n const { toggleDrag } = React.useContext(ListContext);\n React.useEffect(() => {\n if (dragging) {\n toggleDrag(true);\n return () => toggleDrag(false);\n }\n return undefined;\n }, [dragging]);\n\n const IconOff = platform === ANDROID ? Icon24CheckBoxOff : Icon24CheckCircleOff;\n const IconOn = platform === ANDROID ? Icon24CheckBoxOn : Icon24CheckCircleOn;\n\n const simpleCell = (\n <SimpleCell\n {...restProps}\n disabled={draggable || removable || disabled}\n Component={selectable ? 'label' : Component}\n htmlFor={selectable ? name : undefined}\n before={\n <React.Fragment>\n {(platform === ANDROID || platform === VKCOM) && draggable && (\n <Touch\n vkuiClass=\"Cell__dragger\"\n onStart={onDragStart}\n onMoveY={onDragMove}\n onEnd={onDragEnd}\n onClick={onDragClick}\n ><Icon24Reorder /></Touch>\n )}\n {selectable && (\n <React.Fragment>\n <input\n type=\"checkbox\"\n vkuiClass=\"Cell__checkbox\"\n name={name}\n onChange={onChange}\n defaultChecked={defaultChecked}\n checked={checked}\n disabled={disabled}\n />\n <span vkuiClass=\"Cell__marker\">\n <IconOff vkuiClass=\"Cell__marker-in\" />\n <IconOn vkuiClass=\"Cell__marker-in Cell__marker-in--checked\" />\n </span>\n </React.Fragment>\n )}\n {before}\n </React.Fragment>\n }\n after={\n <React.Fragment>\n {platform === IOS && draggable && (\n <Touch\n vkuiClass=\"Cell__dragger\"\n onStart={onDragStart}\n onMoveY={onDragMove}\n onEnd={onDragEnd}\n onClick={onDragClick}\n ><Icon24ReorderIos /></Touch>\n )}\n {after}\n </React.Fragment>\n }\n />\n );\n\n return (\n <div\n vkuiClass={classNames(getClassName('Cell', platform), {\n 'Cell--dragging': dragging,\n 'Cell--removable': removable,\n 'Cell--selectable': selectable,\n 'Cell--disabled': disabled,\n })}\n className={className}\n style={style}\n ref={rootElRef}\n >\n {removable\n ? <Removable removePlaceholder={removePlaceholder} onRemove={(e) => onRemove(e, rootElRef?.current)}>{simpleCell}</Removable>\n : simpleCell\n }\n </div>\n );\n};\n\nCell.defaultProps = {\n removePlaceholder: 'Удалить',\n};\n"],"file":"Cell.js"}
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _objectSpread from "@babel/runtime/helpers/objectSpread2";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
- var _excluded = ["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"],
5
+ var _excluded = ["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"],
6
6
  _excluded2 = ["option"];
7
7
  import { createScopedElement } from "../../lib/jsxRuntime";
8
8
  import * as React from 'react';
@@ -20,6 +20,7 @@ import Caption from "../Typography/Caption/Caption";
20
20
  import { prefixClass } from "../../lib/prefixClass";
21
21
  import { useExternRef } from "../../hooks/useExternRef";
22
22
  import { useGlobalEventListener } from "../../hooks/useGlobalEventListener";
23
+ import { defaultFilterFn } from "../../lib/select";
23
24
  import "./ChipsSelect.css";
24
25
  var FOCUS_ACTION_NEXT = 'next';
25
26
  var FOCUS_ACTION_PREV = 'prev';
@@ -53,6 +54,7 @@ var ChipsSelect = function ChipsSelect(props) {
53
54
  closeAfterSelect = props.closeAfterSelect,
54
55
  onChangeStart = props.onChangeStart,
55
56
  after = props.after,
57
+ options = props.options,
56
58
  restProps = _objectWithoutProperties(props, _excluded);
57
59
 
58
60
  var _useDOM = useDOM(),
@@ -311,11 +313,7 @@ var chipsSelectDefaultProps = _objectSpread(_objectSpread({}, chipsInputDefaultP
311
313
  showSelected: true,
312
314
  closeAfterSelect: true,
313
315
  options: [],
314
- filterFn: function filterFn(value, option, getOptionLabel) {
315
- var _getOptionLabel, _getOptionLabel$toLow;
316
-
317
- return !value || value && ((_getOptionLabel = getOptionLabel(option)) === null || _getOptionLabel === void 0 ? void 0 : (_getOptionLabel$toLow = _getOptionLabel.toLowerCase()) === null || _getOptionLabel$toLow === void 0 ? void 0 : _getOptionLabel$toLow.startsWith(value === null || value === void 0 ? void 0 : value.toLowerCase()));
318
- },
316
+ filterFn: defaultFilterFn,
319
317
  renderOption: function renderOption(_ref2) {
320
318
  var option = _ref2.option,
321
319
  restProps = _objectWithoutProperties(_ref2, _excluded2);
@@ -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","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","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","options","toLowerCase","startsWith","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 './ChipsSelect.css';\n\nexport interface ChipsSelectProps<Option extends ChipsInputOption> extends ChipsInputProps<Option>, AdaptivityProps {\n popupDirection?: 'top' | 'bottom';\n options?: Option[];\n filterFn?: (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, ...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\n return (\n <React.Fragment key={getOptionValue(option)}>\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: (value?: string, option?: ChipsInputOption, getOptionLabel?: Pick<ChipsInputProps<ChipsInputOption>, 'getOptionLabel'>['getOptionLabel']) => {\n return (\n !value || value && getOptionLabel(option)?.toLowerCase()?.startsWith(value?.toLowerCase())\n );\n },\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","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\n return (\n <React.Fragment key={getOptionValue(option)}>\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"}
@@ -43,9 +43,9 @@ export var useChipsSelect = function useChipsSelect(props) {
43
43
  };
44
44
 
45
45
  var filteredOptions = React.useMemo(function () {
46
- return options.filter(function (option) {
46
+ return filterFn ? options.filter(function (option) {
47
47
  return filterFn(fieldValue, option, getOptionLabel);
48
- });
48
+ }) : options;
49
49
  }, [options, filterFn, fieldValue, getOptionLabel]);
50
50
  filteredOptions = React.useMemo(function () {
51
51
  if (!filteredOptions.length) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ChipsSelect/useChipsSelect.ts"],"names":["React","useChipsInput","useChipsSelect","props","options","filterFn","getOptionLabel","getOptionValue","showSelected","useState","opened","setOpened","focusedOptionIndex","setFocusedOptionIndex","focusedOption","setFocusedOption","fieldValue","selectedOptions","chipsInputState","handleInputChange","e","filteredOptions","useMemo","filter","option","length","filteredSet","Set","selected","map","item","includes","delete"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { ChipsInputOption } from '../ChipsInput/ChipsInput';\nimport { useChipsInput } from '../ChipsInput/useChipsInput';\nimport { ChipsSelectProps } from './ChipsSelect';\n\nexport const useChipsSelect = <Option extends ChipsInputOption>(props: Partial<ChipsSelectProps<Option>>) => {\n const { options, filterFn, getOptionLabel, getOptionValue, showSelected } = props;\n\n const [opened, setOpened] = React.useState(false);\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<number>(0);\n const [focusedOption, setFocusedOption] = React.useState<Option>(null);\n\n const { fieldValue, selectedOptions, ...chipsInputState } = useChipsInput(props);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n chipsInputState.handleInputChange(e);\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n }\n };\n\n let filteredOptions = React.useMemo(() => {\n return options.filter((option: Option) => filterFn(fieldValue, option, getOptionLabel));\n }, [options, filterFn, fieldValue, getOptionLabel]);\n\n filteredOptions = React.useMemo(() => {\n if (!filteredOptions.length) {\n return filteredOptions;\n }\n\n const filteredSet = new Set(filteredOptions);\n const selected = selectedOptions.map((item) => getOptionValue(item));\n\n for (const item of filteredSet) {\n if (selected.includes(getOptionValue(item))) {\n filteredSet.delete(item);\n }\n }\n\n return [...filteredSet];\n }, [showSelected, filteredOptions, selectedOptions]);\n\n return {\n ...chipsInputState, fieldValue, handleInputChange, opened, setOpened, filteredOptions,\n focusedOptionIndex, setFocusedOptionIndex, focusedOption, setFocusedOption, selectedOptions,\n };\n};\n"],"file":"useChipsSelect.js"}
1
+ {"version":3,"sources":["../../../../src/components/ChipsSelect/useChipsSelect.ts"],"names":["React","useChipsInput","useChipsSelect","props","options","filterFn","getOptionLabel","getOptionValue","showSelected","useState","opened","setOpened","focusedOptionIndex","setFocusedOptionIndex","focusedOption","setFocusedOption","fieldValue","selectedOptions","chipsInputState","handleInputChange","e","filteredOptions","useMemo","filter","option","length","filteredSet","Set","selected","map","item","includes","delete"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { ChipsInputOption } from '../ChipsInput/ChipsInput';\nimport { useChipsInput } from '../ChipsInput/useChipsInput';\nimport { ChipsSelectProps } from './ChipsSelect';\n\nexport const useChipsSelect = <Option extends ChipsInputOption>(props: Partial<ChipsSelectProps<Option>>) => {\n const { options, filterFn, getOptionLabel, getOptionValue, showSelected } = props;\n\n const [opened, setOpened] = React.useState(false);\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<number>(0);\n const [focusedOption, setFocusedOption] = React.useState<Option>(null);\n\n const { fieldValue, selectedOptions, ...chipsInputState } = useChipsInput(props);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n chipsInputState.handleInputChange(e);\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n }\n };\n\n let filteredOptions = React.useMemo(() => {\n return filterFn ? options.filter((option: Option) => filterFn(fieldValue, option, getOptionLabel)) : options;\n }, [options, filterFn, fieldValue, getOptionLabel]);\n\n filteredOptions = React.useMemo(() => {\n if (!filteredOptions.length) {\n return filteredOptions;\n }\n\n const filteredSet = new Set(filteredOptions);\n const selected = selectedOptions.map((item) => getOptionValue(item));\n\n for (const item of filteredSet) {\n if (selected.includes(getOptionValue(item))) {\n filteredSet.delete(item);\n }\n }\n\n return [...filteredSet];\n }, [showSelected, filteredOptions, selectedOptions]);\n\n return {\n ...chipsInputState, fieldValue, handleInputChange, opened, setOpened, filteredOptions,\n focusedOptionIndex, setFocusedOptionIndex, focusedOption, setFocusedOption, selectedOptions,\n };\n};\n"],"file":"useChipsSelect.js"}
@@ -23,6 +23,7 @@ import { Icon20Dropdown, Icon24Dropdown } from '@vkontakte/icons';
23
23
  import Caption from "../Typography/Caption/Caption";
24
24
  import { warnOnce } from "../../lib/warnOnce";
25
25
  import Spinner from "../Spinner/Spinner";
26
+ import { defaultFilterFn } from "../../lib/select";
26
27
  import "./CustomSelect.css";
27
28
 
28
29
  var findIndexAfter = function findIndexAfter(options) {
@@ -610,9 +611,7 @@ _defineProperty(CustomSelect, "defaultProps", {
610
611
  },
611
612
  options: [],
612
613
  emptyText: 'Ничего не найдено',
613
- filterFn: function filterFn(value, option) {
614
- return option.label.toLowerCase().includes(value.toLowerCase());
615
- }
614
+ filterFn: defaultFilterFn
616
615
  });
617
616
 
618
617
  export default withPlatform(withAdaptivity(CustomSelect, {