@vkontakte/vkui 6.5.0 → 6.5.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 (334) hide show
  1. package/dist/cjs/components/Button/Button.js +1 -1
  2. package/dist/cjs/components/Button/Button.js.map +1 -1
  3. package/dist/cjs/components/Cell/Cell.d.ts.map +1 -1
  4. package/dist/cjs/components/Cell/Cell.js +10 -14
  5. package/dist/cjs/components/Cell/Cell.js.map +1 -1
  6. package/dist/cjs/components/ChipsInputBase/Chip/Chip.js +2 -2
  7. package/dist/cjs/components/ChipsInputBase/Chip/Chip.js.map +1 -1
  8. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +9 -9
  9. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  10. package/dist/cjs/components/Clickable/Clickable.d.ts.map +1 -1
  11. package/dist/cjs/components/Clickable/Clickable.js +1 -1
  12. package/dist/cjs/components/Clickable/Clickable.js.map +1 -1
  13. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +3 -13
  14. package/dist/cjs/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  15. package/dist/cjs/components/CustomSelect/CustomSelect.js +45 -70
  16. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  17. package/dist/cjs/components/CustomSelect/CustomSelectInput.d.ts +4 -2
  18. package/dist/cjs/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
  19. package/dist/cjs/components/CustomSelect/CustomSelectInput.js +19 -24
  20. package/dist/cjs/components/CustomSelect/CustomSelectInput.js.map +1 -1
  21. package/dist/cjs/components/CustomSelect/helpers.d.ts +8 -0
  22. package/dist/cjs/components/CustomSelect/helpers.d.ts.map +1 -0
  23. package/dist/cjs/components/CustomSelect/helpers.js +76 -0
  24. package/dist/cjs/components/CustomSelect/helpers.js.map +1 -0
  25. package/dist/cjs/components/CustomSelect/types.d.ts +12 -0
  26. package/dist/cjs/components/CustomSelect/types.d.ts.map +1 -0
  27. package/dist/cjs/components/CustomSelect/types.js +6 -0
  28. package/dist/cjs/components/CustomSelect/types.js.map +1 -0
  29. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
  30. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  31. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +2 -14
  32. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  33. package/dist/cjs/components/DateInput/DateInput.d.ts +1 -1
  34. package/dist/cjs/components/DateInput/DateInput.d.ts.map +1 -1
  35. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  36. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +1 -1
  37. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  38. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  39. package/dist/cjs/components/Flex/FlexItem/FlexItem.d.ts +6 -4
  40. package/dist/cjs/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
  41. package/dist/cjs/components/Flex/FlexItem/FlexItem.js.map +1 -1
  42. package/dist/cjs/components/Footer/Footer.d.ts +1 -1
  43. package/dist/cjs/components/Footer/Footer.d.ts.map +1 -1
  44. package/dist/cjs/components/Footer/Footer.js +7 -3
  45. package/dist/cjs/components/Footer/Footer.js.map +1 -1
  46. package/dist/cjs/components/FormItem/FormItem.js +2 -2
  47. package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
  48. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.d.ts.map +1 -1
  49. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +3 -3
  50. package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  51. package/dist/cjs/components/Group/Group.d.ts.map +1 -1
  52. package/dist/cjs/components/Group/Group.js +3 -2
  53. package/dist/cjs/components/Group/Group.js.map +1 -1
  54. package/dist/cjs/components/Link/Link.d.ts +1 -1
  55. package/dist/cjs/components/Link/Link.d.ts.map +1 -1
  56. package/dist/cjs/components/Link/Link.js +3 -5
  57. package/dist/cjs/components/Link/Link.js.map +1 -1
  58. package/dist/cjs/components/Removable/Removable.d.ts +5 -1
  59. package/dist/cjs/components/Removable/Removable.d.ts.map +1 -1
  60. package/dist/cjs/components/Removable/Removable.js +8 -5
  61. package/dist/cjs/components/Removable/Removable.js.map +1 -1
  62. package/dist/cjs/components/RootComponent/RootComponent.d.ts +1 -1
  63. package/dist/cjs/components/RootComponent/RootComponent.d.ts.map +1 -1
  64. package/dist/cjs/components/RootComponent/RootComponent.js +1 -1
  65. package/dist/cjs/components/RootComponent/RootComponent.js.map +1 -1
  66. package/dist/cjs/components/Search/Search.d.ts.map +1 -1
  67. package/dist/cjs/components/Search/Search.js +3 -2
  68. package/dist/cjs/components/Search/Search.js.map +1 -1
  69. package/dist/cjs/components/Select/Select.d.ts.map +1 -1
  70. package/dist/cjs/components/Select/Select.js +1 -2
  71. package/dist/cjs/components/Select/Select.js.map +1 -1
  72. package/dist/cjs/components/SelectTypography/SelectTypography.d.ts +2 -2
  73. package/dist/cjs/components/SelectTypography/SelectTypography.d.ts.map +1 -1
  74. package/dist/cjs/components/SelectTypography/SelectTypography.js.map +1 -1
  75. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +1 -1
  76. package/dist/cjs/components/SimpleCell/SimpleCell.d.ts.map +1 -1
  77. package/dist/cjs/components/SimpleCell/SimpleCell.js +1 -1
  78. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  79. package/dist/cjs/components/Snackbar/Snackbar.js +2 -2
  80. package/dist/cjs/components/Snackbar/Snackbar.js.map +1 -1
  81. package/dist/cjs/components/ToolButton/ToolButton.d.ts +1 -1
  82. package/dist/cjs/components/ToolButton/ToolButton.d.ts.map +1 -1
  83. package/dist/cjs/components/ToolButton/ToolButton.js +1 -3
  84. package/dist/cjs/components/ToolButton/ToolButton.js.map +1 -1
  85. package/dist/cjs/components/View/View.d.ts.map +1 -1
  86. package/dist/cjs/components/View/View.js +16 -32
  87. package/dist/cjs/components/View/View.js.map +1 -1
  88. package/dist/cjs/hooks/useEnsuredControl.d.ts.map +1 -1
  89. package/dist/cjs/hooks/useEnsuredControl.js +27 -3
  90. package/dist/cjs/hooks/useEnsuredControl.js.map +1 -1
  91. package/dist/cjs/hooks/useIsClient.d.ts +1 -1
  92. package/dist/cjs/hooks/useIsClient.js.map +1 -1
  93. package/dist/cjs/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  94. package/dist/components/Button/Button.js +2 -2
  95. package/dist/components/Button/Button.js.map +1 -1
  96. package/dist/components/Cell/Cell.d.ts.map +1 -1
  97. package/dist/components/Cell/Cell.js +11 -15
  98. package/dist/components/Cell/Cell.js.map +1 -1
  99. package/dist/components/ChipsInputBase/Chip/Chip.js +3 -3
  100. package/dist/components/ChipsInputBase/Chip/Chip.js.map +1 -1
  101. package/dist/components/ChipsSelect/ChipsSelect.js +9 -9
  102. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  103. package/dist/components/Clickable/Clickable.d.ts.map +1 -1
  104. package/dist/components/Clickable/Clickable.js +1 -1
  105. package/dist/components/Clickable/Clickable.js.map +1 -1
  106. package/dist/components/CustomSelect/CustomSelect.d.ts +3 -13
  107. package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  108. package/dist/components/CustomSelect/CustomSelect.js +37 -62
  109. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  110. package/dist/components/CustomSelect/CustomSelectInput.d.ts +4 -2
  111. package/dist/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
  112. package/dist/components/CustomSelect/CustomSelectInput.js +19 -24
  113. package/dist/components/CustomSelect/CustomSelectInput.js.map +1 -1
  114. package/dist/components/CustomSelect/helpers.d.ts +8 -0
  115. package/dist/components/CustomSelect/helpers.d.ts.map +1 -0
  116. package/dist/components/CustomSelect/helpers.js +48 -0
  117. package/dist/components/CustomSelect/helpers.js.map +1 -0
  118. package/dist/components/CustomSelect/types.d.ts +12 -0
  119. package/dist/components/CustomSelect/types.d.ts.map +1 -0
  120. package/dist/components/CustomSelect/types.js +3 -0
  121. package/dist/components/CustomSelect/types.js.map +1 -0
  122. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
  123. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  124. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +2 -14
  125. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  126. package/dist/components/DateInput/DateInput.d.ts +1 -1
  127. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  128. package/dist/components/DateInput/DateInput.js.map +1 -1
  129. package/dist/components/DateRangeInput/DateRangeInput.d.ts +1 -1
  130. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  131. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  132. package/dist/components/Flex/FlexItem/FlexItem.d.ts +6 -4
  133. package/dist/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
  134. package/dist/components/Flex/FlexItem/FlexItem.js.map +1 -1
  135. package/dist/components/Footer/Footer.d.ts +1 -1
  136. package/dist/components/Footer/Footer.d.ts.map +1 -1
  137. package/dist/components/Footer/Footer.js +7 -3
  138. package/dist/components/Footer/Footer.js.map +1 -1
  139. package/dist/components/FormItem/FormItem.js +3 -3
  140. package/dist/components/FormItem/FormItem.js.map +1 -1
  141. package/dist/components/FormLayoutGroup/FormLayoutGroup.d.ts.map +1 -1
  142. package/dist/components/FormLayoutGroup/FormLayoutGroup.js +4 -4
  143. package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  144. package/dist/components/Group/Group.d.ts.map +1 -1
  145. package/dist/components/Group/Group.js +3 -2
  146. package/dist/components/Group/Group.js.map +1 -1
  147. package/dist/components/Link/Link.d.ts +1 -1
  148. package/dist/components/Link/Link.d.ts.map +1 -1
  149. package/dist/components/Link/Link.js +4 -6
  150. package/dist/components/Link/Link.js.map +1 -1
  151. package/dist/components/Removable/Removable.d.ts +5 -1
  152. package/dist/components/Removable/Removable.d.ts.map +1 -1
  153. package/dist/components/Removable/Removable.js +9 -6
  154. package/dist/components/Removable/Removable.js.map +1 -1
  155. package/dist/components/RootComponent/RootComponent.d.ts +1 -1
  156. package/dist/components/RootComponent/RootComponent.d.ts.map +1 -1
  157. package/dist/components/RootComponent/RootComponent.js +1 -1
  158. package/dist/components/RootComponent/RootComponent.js.map +1 -1
  159. package/dist/components/Search/Search.d.ts.map +1 -1
  160. package/dist/components/Search/Search.js +3 -2
  161. package/dist/components/Search/Search.js.map +1 -1
  162. package/dist/components/Select/Select.d.ts.map +1 -1
  163. package/dist/components/Select/Select.js +1 -2
  164. package/dist/components/Select/Select.js.map +1 -1
  165. package/dist/components/SelectTypography/SelectTypography.d.ts +2 -2
  166. package/dist/components/SelectTypography/SelectTypography.d.ts.map +1 -1
  167. package/dist/components/SelectTypography/SelectTypography.js.map +1 -1
  168. package/dist/components/SimpleCell/SimpleCell.d.ts +1 -1
  169. package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
  170. package/dist/components/SimpleCell/SimpleCell.js +1 -1
  171. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  172. package/dist/components/Snackbar/Snackbar.js +3 -3
  173. package/dist/components/Snackbar/Snackbar.js.map +1 -1
  174. package/dist/components/ToolButton/ToolButton.d.ts +1 -1
  175. package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
  176. package/dist/components/ToolButton/ToolButton.js +2 -4
  177. package/dist/components/ToolButton/ToolButton.js.map +1 -1
  178. package/dist/components/View/View.d.ts.map +1 -1
  179. package/dist/components/View/View.js +17 -33
  180. package/dist/components/View/View.js.map +1 -1
  181. package/dist/components.css +3 -3
  182. package/dist/components.css.map +1 -1
  183. package/dist/components.js.tmp +260 -263
  184. package/dist/cssm/components/Button/Button.js +2 -2
  185. package/dist/cssm/components/Button/Button.js.map +1 -1
  186. package/dist/cssm/components/Cell/Cell.d.ts.map +1 -1
  187. package/dist/cssm/components/Cell/Cell.js +11 -14
  188. package/dist/cssm/components/Cell/Cell.js.map +1 -1
  189. package/dist/cssm/components/Cell/Cell.module.css +0 -4
  190. package/dist/cssm/components/ChipsInputBase/Chip/Chip.js +3 -3
  191. package/dist/cssm/components/ChipsInputBase/Chip/Chip.js.map +1 -1
  192. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +9 -9
  193. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  194. package/dist/cssm/components/Clickable/Clickable.d.ts.map +1 -1
  195. package/dist/cssm/components/Clickable/Clickable.js +1 -1
  196. package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
  197. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts +3 -13
  198. package/dist/cssm/components/CustomSelect/CustomSelect.d.ts.map +1 -1
  199. package/dist/cssm/components/CustomSelect/CustomSelect.js +36 -59
  200. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  201. package/dist/cssm/components/CustomSelect/CustomSelectInput.d.ts +4 -2
  202. package/dist/cssm/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
  203. package/dist/cssm/components/CustomSelect/CustomSelectInput.js +16 -21
  204. package/dist/cssm/components/CustomSelect/CustomSelectInput.js.map +1 -1
  205. package/dist/cssm/components/CustomSelect/CustomSelectInput.module.css +74 -40
  206. package/dist/cssm/components/CustomSelect/helpers.d.ts +8 -0
  207. package/dist/cssm/components/CustomSelect/helpers.d.ts.map +1 -0
  208. package/dist/cssm/components/CustomSelect/helpers.js +44 -0
  209. package/dist/cssm/components/CustomSelect/helpers.js.map +1 -0
  210. package/dist/cssm/components/CustomSelect/types.d.ts +12 -0
  211. package/dist/cssm/components/CustomSelect/types.d.ts.map +1 -0
  212. package/dist/cssm/components/CustomSelect/types.js +3 -0
  213. package/dist/cssm/components/CustomSelect/types.js.map +1 -0
  214. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +1 -1
  215. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts.map +1 -1
  216. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +2 -13
  217. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  218. package/dist/cssm/components/DateInput/DateInput.d.ts +1 -1
  219. package/dist/cssm/components/DateInput/DateInput.d.ts.map +1 -1
  220. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  221. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +1 -1
  222. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  223. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  224. package/dist/cssm/components/Flex/FlexItem/FlexItem.d.ts +6 -4
  225. package/dist/cssm/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
  226. package/dist/cssm/components/Flex/FlexItem/FlexItem.js.map +1 -1
  227. package/dist/cssm/components/Footer/Footer.d.ts +1 -1
  228. package/dist/cssm/components/Footer/Footer.d.ts.map +1 -1
  229. package/dist/cssm/components/Footer/Footer.js +4 -2
  230. package/dist/cssm/components/Footer/Footer.js.map +1 -1
  231. package/dist/cssm/components/FormField/FormField.module.css +36 -23
  232. package/dist/cssm/components/FormItem/FormItem.js +3 -3
  233. package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
  234. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.d.ts.map +1 -1
  235. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +4 -4
  236. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
  237. package/dist/cssm/components/Group/Group.d.ts.map +1 -1
  238. package/dist/cssm/components/Group/Group.js +3 -2
  239. package/dist/cssm/components/Group/Group.js.map +1 -1
  240. package/dist/cssm/components/ImageBase/ImageBase.module.css +0 -4
  241. package/dist/cssm/components/Link/Link.d.ts +1 -1
  242. package/dist/cssm/components/Link/Link.d.ts.map +1 -1
  243. package/dist/cssm/components/Link/Link.js +2 -3
  244. package/dist/cssm/components/Link/Link.js.map +1 -1
  245. package/dist/cssm/components/Removable/Removable.d.ts +5 -1
  246. package/dist/cssm/components/Removable/Removable.d.ts.map +1 -1
  247. package/dist/cssm/components/Removable/Removable.js +7 -5
  248. package/dist/cssm/components/Removable/Removable.js.map +1 -1
  249. package/dist/cssm/components/Removable/Removable.module.css +4 -0
  250. package/dist/cssm/components/RootComponent/RootComponent.d.ts +1 -1
  251. package/dist/cssm/components/RootComponent/RootComponent.d.ts.map +1 -1
  252. package/dist/cssm/components/RootComponent/RootComponent.js +2 -1
  253. package/dist/cssm/components/RootComponent/RootComponent.js.map +1 -1
  254. package/dist/cssm/components/RootComponent/RootComponent.module.css +10 -0
  255. package/dist/cssm/components/Search/Search.d.ts.map +1 -1
  256. package/dist/cssm/components/Search/Search.js +3 -2
  257. package/dist/cssm/components/Search/Search.js.map +1 -1
  258. package/dist/cssm/components/Select/Select.d.ts.map +1 -1
  259. package/dist/cssm/components/Select/Select.js +1 -1
  260. package/dist/cssm/components/Select/Select.js.map +1 -1
  261. package/dist/cssm/components/SelectTypography/SelectTypography.d.ts +2 -2
  262. package/dist/cssm/components/SelectTypography/SelectTypography.d.ts.map +1 -1
  263. package/dist/cssm/components/SelectTypography/SelectTypography.js.map +1 -1
  264. package/dist/cssm/components/SimpleCell/SimpleCell.d.ts +1 -1
  265. package/dist/cssm/components/SimpleCell/SimpleCell.d.ts.map +1 -1
  266. package/dist/cssm/components/SimpleCell/SimpleCell.js +1 -1
  267. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  268. package/dist/cssm/components/SimpleCell/SimpleCell.module.css +4 -0
  269. package/dist/cssm/components/Snackbar/Snackbar.js +3 -3
  270. package/dist/cssm/components/Snackbar/Snackbar.js.map +1 -1
  271. package/dist/cssm/components/ToolButton/ToolButton.d.ts +1 -1
  272. package/dist/cssm/components/ToolButton/ToolButton.d.ts.map +1 -1
  273. package/dist/cssm/components/ToolButton/ToolButton.js +2 -3
  274. package/dist/cssm/components/ToolButton/ToolButton.js.map +1 -1
  275. package/dist/cssm/components/View/View.d.ts.map +1 -1
  276. package/dist/cssm/components/View/View.js +17 -33
  277. package/dist/cssm/components/View/View.js.map +1 -1
  278. package/dist/cssm/hooks/useEnsuredControl.d.ts.map +1 -1
  279. package/dist/cssm/hooks/useEnsuredControl.js +27 -3
  280. package/dist/cssm/hooks/useEnsuredControl.js.map +1 -1
  281. package/dist/cssm/hooks/useIsClient.d.ts +1 -1
  282. package/dist/cssm/hooks/useIsClient.js +1 -1
  283. package/dist/cssm/hooks/useIsClient.js.map +1 -1
  284. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  285. package/dist/cssm/styles/constants.css +2 -3
  286. package/dist/hooks/useEnsuredControl.d.ts.map +1 -1
  287. package/dist/hooks/useEnsuredControl.js +27 -3
  288. package/dist/hooks/useEnsuredControl.js.map +1 -1
  289. package/dist/hooks/useIsClient.d.ts +1 -1
  290. package/dist/hooks/useIsClient.js +1 -1
  291. package/dist/hooks/useIsClient.js.map +1 -1
  292. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  293. package/dist/vkui.css +3 -3
  294. package/dist/vkui.css.map +1 -1
  295. package/dist/vkui.js.tmp +260 -263
  296. package/package.json +1 -1
  297. package/src/components/Button/Button.tsx +2 -2
  298. package/src/components/Cell/Cell.module.css +0 -4
  299. package/src/components/Cell/Cell.tsx +9 -16
  300. package/src/components/ChipsInputBase/Chip/Chip.tsx +3 -3
  301. package/src/components/ChipsSelect/ChipsSelect.tsx +12 -12
  302. package/src/components/Clickable/Clickable.tsx +4 -1
  303. package/src/components/CustomSelect/CustomSelect.tsx +52 -104
  304. package/src/components/CustomSelect/CustomSelectInput.module.css +55 -35
  305. package/src/components/CustomSelect/CustomSelectInput.tsx +25 -36
  306. package/src/components/CustomSelect/helpers.tsx +61 -0
  307. package/src/components/CustomSelect/types.ts +15 -0
  308. package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +3 -17
  309. package/src/components/DateInput/DateInput.tsx +1 -1
  310. package/src/components/DateRangeInput/DateRangeInput.tsx +1 -1
  311. package/src/components/Flex/FlexItem/FlexItem.tsx +6 -4
  312. package/src/components/Footer/Footer.tsx +14 -2
  313. package/src/components/FormField/FormField.module.css +32 -21
  314. package/src/components/FormItem/FormItem.tsx +3 -3
  315. package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +4 -8
  316. package/src/components/Group/Group.tsx +3 -2
  317. package/src/components/ImageBase/ImageBase.module.css +0 -4
  318. package/src/components/Link/Link.tsx +1 -3
  319. package/src/components/Removable/Removable.module.css +4 -0
  320. package/src/components/Removable/Removable.tsx +12 -4
  321. package/src/components/RootComponent/RootComponent.module.css +10 -0
  322. package/src/components/RootComponent/RootComponent.tsx +12 -2
  323. package/src/components/Search/Search.tsx +3 -2
  324. package/src/components/Select/Select.tsx +0 -1
  325. package/src/components/SelectTypography/SelectTypography.tsx +2 -5
  326. package/src/components/SimpleCell/SimpleCell.module.css +4 -0
  327. package/src/components/SimpleCell/SimpleCell.tsx +2 -1
  328. package/src/components/Snackbar/Snackbar.tsx +3 -3
  329. package/src/components/ToolButton/ToolButton.tsx +1 -3
  330. package/src/components/View/View.tsx +21 -36
  331. package/src/hooks/useEnsuredControl.ts +38 -4
  332. package/src/hooks/useIsClient.ts +1 -1
  333. package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +1 -1
  334. package/src/styles/constants.css +2 -3
@@ -49,7 +49,7 @@ const sizeYClassNames = {
49
49
  ['regular']: "vkuiButton--sizeY-regular"
50
50
  };
51
51
  const Button = (_param)=>{
52
- var { size = 's', mode = 'primary', appearance = 'accent', stretched = false, align = 'center', children, before, after, getRootRef, loading, onClick = _vkjs.noop, className, disableSpinnerAnimation, rounded } = _param, restProps = _object_without_properties._(_param, [
52
+ var { size = 's', mode = 'primary', appearance = 'accent', stretched = false, align = 'center', children, before, after, getRootRef, loading, onClick, className, disableSpinnerAnimation, rounded } = _param, restProps = _object_without_properties._(_param, [
53
53
  "size",
54
54
  "mode",
55
55
  "appearance",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode, noop } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasAlign } from '../../types';\nimport { Spinner } from '../Spinner/Spinner';\nimport { Tappable, TappableProps } from '../Tappable/Tappable';\nimport '../Spinner/Spinner.module.css';\nimport styles from './Button.module.css';\n\nconst stylesSize = {\n s: styles['Button--size-s'],\n m: styles['Button--size-m'],\n l: styles['Button--size-l'],\n};\n\nconst stylesMode = {\n primary: styles['Button--mode-primary'],\n secondary: styles['Button--mode-secondary'],\n tertiary: styles['Button--mode-tertiary'],\n outline: styles['Button--mode-outline'],\n link: styles['Button--mode-link'],\n};\n\nconst stylesAppearance = {\n 'accent': styles['Button--appearance-accent'],\n 'positive': styles['Button--appearance-positive'],\n 'negative': styles['Button--appearance-negative'],\n 'neutral': styles['Button--appearance-neutral'],\n 'overlay': styles['Button--appearance-overlay'],\n 'accent-invariable': styles['Button--appearance-accent-invariable'],\n};\n\nconst stylesAlign = {\n left: styles['Button--align-left'],\n center: styles['Button--align-center'],\n right: styles['Button--align-right'],\n};\n\nconst sizeYClassNames = {\n none: styles['Button--sizeY-none'],\n ['regular']: styles['Button--sizeY-regular'],\n};\n\nexport interface VKUIButtonProps extends HasAlign {\n mode?: 'primary' | 'secondary' | 'tertiary' | 'outline' | 'link';\n appearance?: 'accent' | 'positive' | 'negative' | 'neutral' | 'overlay' | 'accent-invariable';\n size?: 's' | 'm' | 'l';\n stretched?: boolean;\n before?: React.ReactNode;\n after?: React.ReactNode;\n loading?: boolean;\n disableSpinnerAnimation?: boolean;\n rounded?: boolean;\n}\n\nexport interface ButtonProps extends Omit<TappableProps, 'size'>, VKUIButtonProps {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Button\n */\nexport const Button = ({\n size = 's',\n mode = 'primary',\n appearance = 'accent',\n stretched = false,\n align = 'center',\n children,\n before,\n after,\n getRootRef,\n loading,\n onClick = noop,\n className,\n disableSpinnerAnimation,\n rounded,\n ...restProps\n}: ButtonProps): React.ReactNode => {\n const hasIcons = Boolean(before || after);\n const hasIconOnly = !children && Boolean(after) !== Boolean(before);\n const { sizeY = 'none' } = useAdaptivity();\n const platform = usePlatform();\n\n return (\n <Tappable\n hoverMode={styles['Button--hover']}\n activeMode={styles['Button--active']}\n Component={restProps.href ? 'a' : 'button'}\n focusVisibleMode=\"outside\"\n {...restProps}\n onClick={loading ? undefined : onClick}\n className={classNames(\n className,\n styles.Button,\n stylesSize[size],\n stylesMode[mode],\n stylesAppearance[appearance],\n stylesAlign[align],\n sizeY !== 'compact' && sizeYClassNames[sizeY],\n platform === 'ios' && styles['Button--ios'],\n stretched && styles['Button--stretched'],\n hasIcons && styles['Button--with-icon'],\n hasIconOnly && !stretched && styles['Button--singleIcon'],\n loading && styles['Button--loading'],\n rounded && styles['Button--rounded'],\n )}\n getRootRef={getRootRef}\n >\n {loading && (\n <Spinner\n size=\"small\"\n className={styles.Button__spinner}\n disableAnimation={disableSpinnerAnimation}\n />\n )}\n <span className={styles.Button__in}>\n {hasReactNode(before) && (\n <span\n className={styles.Button__before}\n role=\"presentation\"\n data-testid={process.env.NODE_ENV === 'test' ? 'before' : undefined}\n >\n {before}\n </span>\n )}\n {hasReactNode(children) && (\n <span\n className={styles.Button__content}\n data-testid={process.env.NODE_ENV === 'test' ? 'children' : undefined}\n >\n {children}\n </span>\n )}\n {hasReactNode(after) && (\n <span\n className={styles.Button__after}\n role=\"presentation\"\n data-testid={process.env.NODE_ENV === 'test' ? 'after' : undefined}\n >\n {after}\n </span>\n )}\n </span>\n </Tappable>\n );\n};\n"],"names":["Button","stylesSize","s","m","l","stylesMode","primary","secondary","tertiary","outline","link","stylesAppearance","stylesAlign","left","center","right","sizeYClassNames","none","size","mode","appearance","stretched","align","children","before","after","getRootRef","loading","onClick","noop","className","disableSpinnerAnimation","rounded","restProps","hasIcons","Boolean","hasIconOnly","sizeY","useAdaptivity","platform","usePlatform","Tappable","hoverMode","activeMode","Component","href","focusVisibleMode","undefined","classNames","Spinner","disableAnimation","span","hasReactNode","role","data-testid","process","env","NODE_ENV"],"mappings":";;;;+BA6DaA;;;eAAAA;;;;;;;;iEA7DU;sBACwB;+BACjB;6BACF;yBAEJ;0BACgB;AAIxC,MAAMC,aAAa;IACjBC,CAAC;IACDC,CAAC;IACDC,CAAC;AACH;AAEA,MAAMC,aAAa;IACjBC,OAAO;IACPC,SAAS;IACTC,QAAQ;IACRC,OAAO;IACPC,IAAI;AACN;AAEA,MAAMC,mBAAmB;IACvB,QAAQ;IACR,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,mBAAmB;AACrB;AAEA,MAAMC,cAAc;IAClBC,IAAI;IACJC,MAAM;IACNC,KAAK;AACP;AAEA,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;AACb;AAmBO,MAAMjB,SAAS;QAAC,EACrBkB,OAAO,GAAG,EACVC,OAAO,SAAS,EAChBC,aAAa,QAAQ,EACrBC,YAAY,KAAK,EACjBC,QAAQ,QAAQ,EAChBC,QAAQ,EACRC,MAAM,EACNC,KAAK,EACLC,UAAU,EACVC,OAAO,EACPC,UAAUC,UAAI,EACdC,SAAS,EACTC,uBAAuB,EACvBC,OAAO,EAEK,WADTC;QAdHf;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;QACAC;QACAC;;IAGA,MAAME,WAAWC,QAAQX,UAAUC;IACnC,MAAMW,cAAc,CAACb,YAAYY,QAAQV,WAAWU,QAAQX;IAC5D,MAAM,EAAEa,QAAQ,MAAM,EAAE,GAAGC,IAAAA,4BAAa;IACxC,MAAMC,WAAWC,IAAAA,wBAAW;IAE5B,qBACE,sBAACC,kBAAQ;QACPC,SAAS;QACTC,UAAU;QACVC,WAAWX,UAAUY,IAAI,GAAG,MAAM;QAClCC,kBAAiB;OACbb;QACJL,SAASD,UAAUoB,YAAYnB;QAC/BE,WAAWkB,IAAAA,gBAAU,EACnBlB,yBAEA7B,UAAU,CAACiB,KAAK,EAChBb,UAAU,CAACc,KAAK,EAChBR,gBAAgB,CAACS,WAAW,EAC5BR,WAAW,CAACU,MAAM,EAClBe,UAAU,aAAarB,eAAe,CAACqB,MAAM,EAC7CE,aAAa,4BACblB,sCACAa,qCACAE,eAAe,CAACf,uCAChBM,kCACAK;QAEFN,YAAYA;;YAEXC,yBACC,qBAACsB,gBAAO;gBACN/B,MAAK;gBACLY,SAAS;gBACToB,kBAAkBnB;;0BAGtB,sBAACoB;gBAAKrB,SAAS;;oBACZsB,IAAAA,kBAAY,EAAC5B,yBACZ,qBAAC2B;wBACCrB,SAAS;wBACTuB,MAAK;wBACLC,eAAaC,QAAQC,GAAG,CAACC,QAAQ,KAAK,SAAS,WAAWV;kCAEzDvB;;oBAGJ4B,IAAAA,kBAAY,EAAC7B,2BACZ,qBAAC4B;wBACCrB,SAAS;wBACTwB,eAAaC,QAAQC,GAAG,CAACC,QAAQ,KAAK,SAAS,aAAaV;kCAE3DxB;;oBAGJ6B,IAAAA,kBAAY,EAAC3B,wBACZ,qBAAC0B;wBACCrB,SAAS;wBACTuB,MAAK;wBACLC,eAAaC,QAAQC,GAAG,CAACC,QAAQ,KAAK,SAAS,UAAUV;kCAExDtB;;;;;;AAMb"}
1
+ {"version":3,"sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasAlign } from '../../types';\nimport { Spinner } from '../Spinner/Spinner';\nimport { Tappable, TappableProps } from '../Tappable/Tappable';\nimport '../Spinner/Spinner.module.css';\nimport styles from './Button.module.css';\n\nconst stylesSize = {\n s: styles['Button--size-s'],\n m: styles['Button--size-m'],\n l: styles['Button--size-l'],\n};\n\nconst stylesMode = {\n primary: styles['Button--mode-primary'],\n secondary: styles['Button--mode-secondary'],\n tertiary: styles['Button--mode-tertiary'],\n outline: styles['Button--mode-outline'],\n link: styles['Button--mode-link'],\n};\n\nconst stylesAppearance = {\n 'accent': styles['Button--appearance-accent'],\n 'positive': styles['Button--appearance-positive'],\n 'negative': styles['Button--appearance-negative'],\n 'neutral': styles['Button--appearance-neutral'],\n 'overlay': styles['Button--appearance-overlay'],\n 'accent-invariable': styles['Button--appearance-accent-invariable'],\n};\n\nconst stylesAlign = {\n left: styles['Button--align-left'],\n center: styles['Button--align-center'],\n right: styles['Button--align-right'],\n};\n\nconst sizeYClassNames = {\n none: styles['Button--sizeY-none'],\n ['regular']: styles['Button--sizeY-regular'],\n};\n\nexport interface VKUIButtonProps extends HasAlign {\n mode?: 'primary' | 'secondary' | 'tertiary' | 'outline' | 'link';\n appearance?: 'accent' | 'positive' | 'negative' | 'neutral' | 'overlay' | 'accent-invariable';\n size?: 's' | 'm' | 'l';\n stretched?: boolean;\n before?: React.ReactNode;\n after?: React.ReactNode;\n loading?: boolean;\n disableSpinnerAnimation?: boolean;\n rounded?: boolean;\n}\n\nexport interface ButtonProps extends Omit<TappableProps, 'size'>, VKUIButtonProps {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Button\n */\nexport const Button = ({\n size = 's',\n mode = 'primary',\n appearance = 'accent',\n stretched = false,\n align = 'center',\n children,\n before,\n after,\n getRootRef,\n loading,\n onClick,\n className,\n disableSpinnerAnimation,\n rounded,\n ...restProps\n}: ButtonProps): React.ReactNode => {\n const hasIcons = Boolean(before || after);\n const hasIconOnly = !children && Boolean(after) !== Boolean(before);\n const { sizeY = 'none' } = useAdaptivity();\n const platform = usePlatform();\n\n return (\n <Tappable\n hoverMode={styles['Button--hover']}\n activeMode={styles['Button--active']}\n Component={restProps.href ? 'a' : 'button'}\n focusVisibleMode=\"outside\"\n {...restProps}\n onClick={loading ? undefined : onClick}\n className={classNames(\n className,\n styles.Button,\n stylesSize[size],\n stylesMode[mode],\n stylesAppearance[appearance],\n stylesAlign[align],\n sizeY !== 'compact' && sizeYClassNames[sizeY],\n platform === 'ios' && styles['Button--ios'],\n stretched && styles['Button--stretched'],\n hasIcons && styles['Button--with-icon'],\n hasIconOnly && !stretched && styles['Button--singleIcon'],\n loading && styles['Button--loading'],\n rounded && styles['Button--rounded'],\n )}\n getRootRef={getRootRef}\n >\n {loading && (\n <Spinner\n size=\"small\"\n className={styles.Button__spinner}\n disableAnimation={disableSpinnerAnimation}\n />\n )}\n <span className={styles.Button__in}>\n {hasReactNode(before) && (\n <span\n className={styles.Button__before}\n role=\"presentation\"\n data-testid={process.env.NODE_ENV === 'test' ? 'before' : undefined}\n >\n {before}\n </span>\n )}\n {hasReactNode(children) && (\n <span\n className={styles.Button__content}\n data-testid={process.env.NODE_ENV === 'test' ? 'children' : undefined}\n >\n {children}\n </span>\n )}\n {hasReactNode(after) && (\n <span\n className={styles.Button__after}\n role=\"presentation\"\n data-testid={process.env.NODE_ENV === 'test' ? 'after' : undefined}\n >\n {after}\n </span>\n )}\n </span>\n </Tappable>\n );\n};\n"],"names":["Button","stylesSize","s","m","l","stylesMode","primary","secondary","tertiary","outline","link","stylesAppearance","stylesAlign","left","center","right","sizeYClassNames","none","size","mode","appearance","stretched","align","children","before","after","getRootRef","loading","onClick","className","disableSpinnerAnimation","rounded","restProps","hasIcons","Boolean","hasIconOnly","sizeY","useAdaptivity","platform","usePlatform","Tappable","hoverMode","activeMode","Component","href","focusVisibleMode","undefined","classNames","Spinner","disableAnimation","span","hasReactNode","role","data-testid","process","env","NODE_ENV"],"mappings":";;;;+BA6DaA;;;eAAAA;;;;;;;;iEA7DU;sBACkB;+BACX;6BACF;yBAEJ;0BACgB;AAIxC,MAAMC,aAAa;IACjBC,CAAC;IACDC,CAAC;IACDC,CAAC;AACH;AAEA,MAAMC,aAAa;IACjBC,OAAO;IACPC,SAAS;IACTC,QAAQ;IACRC,OAAO;IACPC,IAAI;AACN;AAEA,MAAMC,mBAAmB;IACvB,QAAQ;IACR,UAAU;IACV,UAAU;IACV,SAAS;IACT,SAAS;IACT,mBAAmB;AACrB;AAEA,MAAMC,cAAc;IAClBC,IAAI;IACJC,MAAM;IACNC,KAAK;AACP;AAEA,MAAMC,kBAAkB;IACtBC,IAAI;IACJ,CAAC,UAAU;AACb;AAmBO,MAAMjB,SAAS;QAAC,EACrBkB,OAAO,GAAG,EACVC,OAAO,SAAS,EAChBC,aAAa,QAAQ,EACrBC,YAAY,KAAK,EACjBC,QAAQ,QAAQ,EAChBC,QAAQ,EACRC,MAAM,EACNC,KAAK,EACLC,UAAU,EACVC,OAAO,EACPC,OAAO,EACPC,SAAS,EACTC,uBAAuB,EACvBC,OAAO,EAEK,WADTC;QAdHd;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;;IAGA,MAAME,WAAWC,QAAQV,UAAUC;IACnC,MAAMU,cAAc,CAACZ,YAAYW,QAAQT,WAAWS,QAAQV;IAC5D,MAAM,EAAEY,QAAQ,MAAM,EAAE,GAAGC,IAAAA,4BAAa;IACxC,MAAMC,WAAWC,IAAAA,wBAAW;IAE5B,qBACE,sBAACC,kBAAQ;QACPC,SAAS;QACTC,UAAU;QACVC,WAAWX,UAAUY,IAAI,GAAG,MAAM;QAClCC,kBAAiB;OACbb;QACJJ,SAASD,UAAUmB,YAAYlB;QAC/BC,WAAWkB,IAAAA,gBAAU,EACnBlB,yBAEA5B,UAAU,CAACiB,KAAK,EAChBb,UAAU,CAACc,KAAK,EAChBR,gBAAgB,CAACS,WAAW,EAC5BR,WAAW,CAACU,MAAM,EAClBc,UAAU,aAAapB,eAAe,CAACoB,MAAM,EAC7CE,aAAa,4BACbjB,sCACAY,qCACAE,eAAe,CAACd,uCAChBM,kCACAI;QAEFL,YAAYA;;YAEXC,yBACC,qBAACqB,gBAAO;gBACN9B,MAAK;gBACLW,SAAS;gBACToB,kBAAkBnB;;0BAGtB,sBAACoB;gBAAKrB,SAAS;;oBACZsB,IAAAA,kBAAY,EAAC3B,yBACZ,qBAAC0B;wBACCrB,SAAS;wBACTuB,MAAK;wBACLC,eAAaC,QAAQC,GAAG,CAACC,QAAQ,KAAK,SAAS,WAAWV;kCAEzDtB;;oBAGJ2B,IAAAA,kBAAY,EAAC5B,2BACZ,qBAAC2B;wBACCrB,SAAS;wBACTwB,eAAaC,QAAQC,GAAG,CAACC,QAAQ,KAAK,SAAS,aAAaV;kCAE3DvB;;oBAGJ4B,IAAAA,kBAAY,EAAC1B,wBACZ,qBAACyB;wBACCrB,SAAS;wBACTuB,MAAK;wBACLC,eAAaC,QAAQC,GAAG,CAACC,QAAQ,KAAK,SAAS,UAAUV;kCAExDrB;;;;;;AAMb"}
@@ -1 +1 @@
1
- {"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../../../src/components/Cell/Cell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAa,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAc,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAK9E,MAAM,WAAW,SACf,SAAQ,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,EACzC,cAAc,EACd,UAAU,CAAC,cAAc,CAAC;IAC5B,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IAClC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5D;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG;IACvC,QAAQ,EAAE,OAAO,YAAY,CAAC;CA6I/B,CAAC"}
1
+ {"version":3,"file":"Cell.d.ts","sourceRoot":"","sources":["../../../../src/components/Cell/Cell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAa,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAc,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAqB,MAAM,6BAA6B,CAAC;AAK9E,MAAM,WAAW,SACf,SAAQ,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,EACzC,cAAc,EACd,UAAU,CAAC,cAAc,CAAC;IAC5B,IAAI,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IAClC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5D;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG;IACvC,QAAQ,EAAE,OAAO,YAAY,CAAC;CAsI/B,CAAC"}
@@ -23,7 +23,7 @@ const _CellCheckbox = require("./CellCheckbox/CellCheckbox");
23
23
  const _CellDragger = require("./CellDragger/CellDragger");
24
24
  const _constants = require("./constants");
25
25
  const Cell = (_param)=>{
26
- var { mode, onRemove = _vkjs.noop, removePlaceholder = 'Удалить', onDragFinish, before, after, disabled, draggable, Component: ComponentProps, onChange, name, value, checked, defaultChecked, getRootRef, draggerLabel = _constants.DEFAULT_DRAGGABLE_LABEL, className, style, toggleButtonTestId, removeButtonTestId } = _param, restProps = _object_without_properties._(_param, [
26
+ var { mode, onRemove, removePlaceholder = 'Удалить', onDragFinish, before, after, disabled, draggable, Component: ComponentProps, onChange, name, value, checked, defaultChecked, getRootRef, draggerLabel = _constants.DEFAULT_DRAGGABLE_LABEL, className, style, toggleButtonTestId, removeButtonTestId } = _param, restProps = _object_without_properties._(_param, [
27
27
  "mode",
28
28
  "onRemove",
29
29
  "removePlaceholder",
@@ -54,7 +54,6 @@ const Cell = (_param)=>{
54
54
  const dragger = draggable ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_CellDragger.CellDragger, {
55
55
  elRef: rootElRef,
56
56
  className: (0, _vkjs.classNames)("vkuiCell__dragger", !before && !selectable && "vkuiCell__control--noBefore"),
57
- disabled: disabled,
58
57
  onDragStateChange: setDragging,
59
58
  onDragFinish: onDragFinish,
60
59
  children: draggerLabel
@@ -73,12 +72,12 @@ const Cell = (_param)=>{
73
72
  className: (0, _vkjs.classNames)("vkuiCell__checkbox", !before && "vkuiCell__control--noBefore")
74
73
  }, checkboxProps));
75
74
  }
76
- const simpleCellDisabled = draggable && !selectable || removable && !restProps.onClick || disabled;
77
- const hasActive = !simpleCellDisabled && !dragging;
78
- const cellClasses = (0, _vkjs.classNames)("vkuiCell", dragging && "vkuiCell--dragging", platform === 'ios' && "vkuiCell--ios", removable && "vkuiCell--removable", Component === 'label' && "vkuiCell--selectable", disabled && "vkuiCell--disabled");
75
+ const hasActive = !disabled && !dragging;
76
+ const cellClasses = (0, _vkjs.classNames)("vkuiCell", dragging && "vkuiCell--dragging", platform === 'ios' && "vkuiCell--ios", removable && "vkuiCell--removable", Component === 'label' && "vkuiCell--selectable");
79
77
  const simpleCellProps = _object_spread_props._(_object_spread._(_object_spread_props._(_object_spread._({
80
78
  hasActive: hasActive,
81
- hasHover: hasActive && !removable
79
+ hasHover: hasActive && !removable,
80
+ disabled
82
81
  }, restProps), {
83
82
  className: "vkuiCell__content"
84
83
  }), Component && {
@@ -98,23 +97,20 @@ const Cell = (_param)=>{
98
97
  ]
99
98
  })
100
99
  });
101
- if (restProps.onClick) {
102
- simpleCellProps.disabled = simpleCellDisabled;
103
- }
104
100
  if (removable) {
105
101
  return /*#__PURE__*/ (0, _jsxruntime.jsx)(_Removable.Removable, {
106
102
  className: (0, _vkjs.classNames)(cellClasses, className),
107
103
  style: style,
108
104
  getRootRef: rootElRef,
109
105
  removePlaceholder: removePlaceholder,
110
- onRemove: (e)=>onRemove(e, rootElRef.current),
106
+ onRemove: (e)=>onRemove === null || onRemove === void 0 ? void 0 : onRemove(e, rootElRef.current),
111
107
  toggleButtonTestId: toggleButtonTestId,
112
108
  removeButtonTestId: removeButtonTestId,
109
+ disabled: disabled,
113
110
  children: platform === 'ios' ? ({ isRemoving })=>{
114
- if (simpleCellProps.onClick) {
115
- simpleCellProps.disabled = isRemoving || !simpleCellProps.disabled;
116
- }
117
- return /*#__PURE__*/ (0, _jsxruntime.jsx)(_SimpleCell.SimpleCell, _object_spread._({}, simpleCellProps));
111
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_SimpleCell.SimpleCell, _object_spread._({}, simpleCellProps, isRemoving ? {
112
+ onClick: undefined
113
+ } : {}));
118
114
  } : /*#__PURE__*/ (0, _jsxruntime.jsx)(_SimpleCell.SimpleCell, _object_spread._({}, simpleCellProps))
119
115
  });
120
116
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Cell/Cell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport type { SwappedItemRange } from '../../hooks/useDraggableWithDomApi';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRootRef } from '../../types';\nimport { Removable, RemovableProps } from '../Removable/Removable';\nimport { SimpleCell, SimpleCellProps } from '../SimpleCell/SimpleCell';\nimport { CellCheckbox, CellCheckboxProps } from './CellCheckbox/CellCheckbox';\nimport { CellDragger } from './CellDragger/CellDragger';\nimport { DEFAULT_DRAGGABLE_LABEL } from './constants';\nimport styles from './Cell.module.css';\n\nexport interface CellProps\n extends Omit<SimpleCellProps, 'getRootRef'>,\n RemovableProps,\n HasRootRef<HTMLDivElement> {\n mode?: 'removable' | 'selectable';\n /**\n * В режиме перетаскивания ячейка перестает быть кликабельной, то есть при клике переданный onClick вызываться не будет\n */\n draggable?: boolean;\n /**\n * Имя для input в режиме selectable\n */\n name?: string;\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?: (swappedItemRange: SwappedItemRange) => void;\n /**\n * Текст для кнопки перетаскивания ячейки\n */\n draggerLabel?: string;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Cell\n */\nexport const Cell: React.FC<CellProps> & {\n Checkbox: typeof CellCheckbox;\n} = ({\n mode,\n onRemove = noop,\n removePlaceholder = 'Удалить',\n onDragFinish,\n before,\n after,\n disabled,\n draggable,\n Component: ComponentProps,\n onChange,\n name,\n value,\n checked,\n defaultChecked,\n getRootRef,\n draggerLabel = DEFAULT_DRAGGABLE_LABEL,\n className,\n style,\n toggleButtonTestId,\n removeButtonTestId,\n ...restProps\n}: CellProps) => {\n const [dragging, setDragging] = React.useState(false);\n const selectable = mode === 'selectable';\n const removable = mode === 'removable';\n const Component = selectable ? 'label' : ComponentProps;\n\n const platform = usePlatform();\n\n const rootElRef = useExternRef(getRootRef);\n\n const dragger = draggable ? (\n <CellDragger\n elRef={rootElRef}\n className={classNames(\n styles['Cell__dragger'],\n !before && !selectable && styles['Cell__control--noBefore'],\n )}\n disabled={disabled}\n onDragStateChange={setDragging}\n onDragFinish={onDragFinish}\n >\n {draggerLabel}\n </CellDragger>\n ) : null;\n\n let checkbox;\n if (selectable) {\n const checkboxProps: CellCheckboxProps = {\n name,\n value,\n defaultChecked,\n checked,\n disabled,\n onChange,\n };\n checkbox = (\n <CellCheckbox\n className={classNames(\n styles['Cell__checkbox'],\n !before && styles['Cell__control--noBefore'],\n )}\n {...checkboxProps}\n />\n );\n }\n\n const simpleCellDisabled =\n (draggable && !selectable) || (removable && !restProps.onClick) || disabled;\n const hasActive = !simpleCellDisabled && !dragging;\n\n const cellClasses = classNames(\n styles['Cell'],\n dragging && styles['Cell--dragging'],\n platform === 'ios' && styles['Cell--ios'],\n removable && styles['Cell--removable'],\n Component === 'label' && styles['Cell--selectable'],\n disabled && styles['Cell--disabled'],\n );\n\n const simpleCellProps: SimpleCellProps = {\n hasActive: hasActive,\n hasHover: hasActive && !removable,\n ...restProps,\n className: styles['Cell__content'],\n // чтобы свойство, если не определено, не присутствовало в\n // restProps явно как {'Component': undefined} и ниже не переопределяло\n // возможное значение commonProps.Component = 'a' при слиянии двух объектов, как\n // {...commonProps, ...restProps}\n ...(Component && { Component }),\n before: (\n <React.Fragment>\n {draggable && platform !== 'ios' && dragger}\n {selectable && checkbox}\n {before}\n </React.Fragment>\n ),\n after: (\n <React.Fragment>\n {draggable && platform === 'ios' && dragger}\n {after}\n </React.Fragment>\n ),\n };\n\n if (restProps.onClick) {\n simpleCellProps.disabled = simpleCellDisabled;\n }\n\n if (removable) {\n return (\n <Removable\n className={classNames(cellClasses, className)}\n style={style}\n getRootRef={rootElRef}\n removePlaceholder={removePlaceholder}\n onRemove={(e) => onRemove(e, rootElRef.current)}\n toggleButtonTestId={toggleButtonTestId}\n removeButtonTestId={removeButtonTestId}\n >\n {platform === 'ios' ? (\n ({ isRemoving }) => {\n if (simpleCellProps.onClick) {\n simpleCellProps.disabled = isRemoving || !simpleCellProps.disabled;\n }\n return <SimpleCell {...simpleCellProps} />;\n }\n ) : (\n <SimpleCell {...simpleCellProps} />\n )}\n </Removable>\n );\n }\n\n return (\n <div className={classNames(cellClasses, className)} style={style} ref={rootElRef}>\n <SimpleCell {...simpleCellProps} />\n </div>\n );\n};\n\nCell.Checkbox = CellCheckbox;\n"],"names":["Cell","mode","onRemove","noop","removePlaceholder","onDragFinish","before","after","disabled","draggable","Component","ComponentProps","onChange","name","value","checked","defaultChecked","getRootRef","draggerLabel","DEFAULT_DRAGGABLE_LABEL","className","style","toggleButtonTestId","removeButtonTestId","restProps","dragging","setDragging","React","useState","selectable","removable","platform","usePlatform","rootElRef","useExternRef","dragger","CellDragger","elRef","classNames","onDragStateChange","checkbox","checkboxProps","CellCheckbox","simpleCellDisabled","onClick","hasActive","cellClasses","simpleCellProps","hasHover","Fragment","Removable","e","current","isRemoving","SimpleCell","div","ref","Checkbox"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/Cell/Cell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport type { SwappedItemRange } from '../../hooks/useDraggableWithDomApi';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRootRef } from '../../types';\nimport { Removable, RemovableProps } from '../Removable/Removable';\nimport { SimpleCell, SimpleCellProps } from '../SimpleCell/SimpleCell';\nimport { CellCheckbox, CellCheckboxProps } from './CellCheckbox/CellCheckbox';\nimport { CellDragger } from './CellDragger/CellDragger';\nimport { DEFAULT_DRAGGABLE_LABEL } from './constants';\nimport styles from './Cell.module.css';\n\nexport interface CellProps\n extends Omit<SimpleCellProps, 'getRootRef'>,\n RemovableProps,\n HasRootRef<HTMLDivElement> {\n mode?: 'removable' | 'selectable';\n /**\n * В режиме перетаскивания ячейка перестает быть кликабельной, то есть при клике переданный onClick вызываться не будет\n */\n draggable?: boolean;\n /**\n * Имя для input в режиме selectable\n */\n name?: string;\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?: (swappedItemRange: SwappedItemRange) => void;\n /**\n * Текст для кнопки перетаскивания ячейки\n */\n draggerLabel?: string;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Cell\n */\nexport const Cell: React.FC<CellProps> & {\n Checkbox: typeof CellCheckbox;\n} = ({\n mode,\n onRemove,\n removePlaceholder = 'Удалить',\n onDragFinish,\n before,\n after,\n disabled,\n draggable,\n Component: ComponentProps,\n onChange,\n name,\n value,\n checked,\n defaultChecked,\n getRootRef,\n draggerLabel = DEFAULT_DRAGGABLE_LABEL,\n className,\n style,\n toggleButtonTestId,\n removeButtonTestId,\n ...restProps\n}: CellProps) => {\n const [dragging, setDragging] = React.useState(false);\n const selectable = mode === 'selectable';\n const removable = mode === 'removable';\n const Component = selectable ? 'label' : ComponentProps;\n\n const platform = usePlatform();\n\n const rootElRef = useExternRef(getRootRef);\n\n const dragger = draggable ? (\n <CellDragger\n elRef={rootElRef}\n className={classNames(\n styles['Cell__dragger'],\n !before && !selectable && styles['Cell__control--noBefore'],\n )}\n onDragStateChange={setDragging}\n onDragFinish={onDragFinish}\n >\n {draggerLabel}\n </CellDragger>\n ) : null;\n\n let checkbox;\n if (selectable) {\n const checkboxProps: CellCheckboxProps = {\n name,\n value,\n defaultChecked,\n checked,\n disabled,\n onChange,\n };\n checkbox = (\n <CellCheckbox\n className={classNames(\n styles['Cell__checkbox'],\n !before && styles['Cell__control--noBefore'],\n )}\n {...checkboxProps}\n />\n );\n }\n\n const hasActive = !disabled && !dragging;\n\n const cellClasses = classNames(\n styles['Cell'],\n dragging && styles['Cell--dragging'],\n platform === 'ios' && styles['Cell--ios'],\n removable && styles['Cell--removable'],\n Component === 'label' && styles['Cell--selectable'],\n );\n\n const simpleCellProps: SimpleCellProps = {\n hasActive: hasActive,\n hasHover: hasActive && !removable,\n disabled,\n ...restProps,\n className: styles['Cell__content'],\n // чтобы свойство, если не определено, не присутствовало в\n // restProps явно как {'Component': undefined} и ниже не переопределяло\n // возможное значение commonProps.Component = 'a' при слиянии двух объектов, как\n // {...commonProps, ...restProps}\n ...(Component && { Component }),\n before: (\n <React.Fragment>\n {draggable && platform !== 'ios' && dragger}\n {selectable && checkbox}\n {before}\n </React.Fragment>\n ),\n after: (\n <React.Fragment>\n {draggable && platform === 'ios' && dragger}\n {after}\n </React.Fragment>\n ),\n };\n\n if (removable) {\n return (\n <Removable\n className={classNames(cellClasses, className)}\n style={style}\n getRootRef={rootElRef}\n removePlaceholder={removePlaceholder}\n onRemove={(e) => onRemove?.(e, rootElRef.current)}\n toggleButtonTestId={toggleButtonTestId}\n removeButtonTestId={removeButtonTestId}\n disabled={disabled}\n >\n {platform === 'ios' ? (\n ({ isRemoving }) => {\n return (\n <SimpleCell {...simpleCellProps} {...(isRemoving ? { onClick: undefined } : {})} />\n );\n }\n ) : (\n <SimpleCell {...simpleCellProps} />\n )}\n </Removable>\n );\n }\n\n return (\n <div className={classNames(cellClasses, className)} style={style} ref={rootElRef}>\n <SimpleCell {...simpleCellProps} />\n </div>\n );\n};\n\nCell.Checkbox = CellCheckbox;\n"],"names":["Cell","mode","onRemove","removePlaceholder","onDragFinish","before","after","disabled","draggable","Component","ComponentProps","onChange","name","value","checked","defaultChecked","getRootRef","draggerLabel","DEFAULT_DRAGGABLE_LABEL","className","style","toggleButtonTestId","removeButtonTestId","restProps","dragging","setDragging","React","useState","selectable","removable","platform","usePlatform","rootElRef","useExternRef","dragger","CellDragger","elRef","classNames","onDragStateChange","checkbox","checkboxProps","CellCheckbox","hasActive","cellClasses","simpleCellProps","hasHover","Fragment","Removable","e","current","isRemoving","SimpleCell","onClick","undefined","div","ref","Checkbox"],"mappings":";;;;+BAkDaA;;;eAAAA;;;;;;;;iEAlDU;sBACI;8BAEE;6BACD;2BAEc;4BACE;8BACI;6BACpB;2BACY;AAwCjC,MAAMA,OAET;QAAC,EACHC,IAAI,EACJC,QAAQ,EACRC,oBAAoB,SAAS,EAC7BC,YAAY,EACZC,MAAM,EACNC,KAAK,EACLC,QAAQ,EACRC,SAAS,EACTC,WAAWC,cAAc,EACzBC,QAAQ,EACRC,IAAI,EACJC,KAAK,EACLC,OAAO,EACPC,cAAc,EACdC,UAAU,EACVC,eAAeC,kCAAuB,EACtCC,SAAS,EACTC,KAAK,EACLC,kBAAkB,EAClBC,kBAAkB,EAER,WADPC;QApBHtB;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;QACAC;QACAC;QACAC;;IAGA,MAAM,CAACE,UAAUC,YAAY,GAAGC,OAAMC,QAAQ,CAAC;IAC/C,MAAMC,aAAa3B,SAAS;IAC5B,MAAM4B,YAAY5B,SAAS;IAC3B,MAAMQ,YAAYmB,aAAa,UAAUlB;IAEzC,MAAMoB,WAAWC,IAAAA,wBAAW;IAE5B,MAAMC,YAAYC,IAAAA,0BAAY,EAACjB;IAE/B,MAAMkB,UAAU1B,0BACd,qBAAC2B,wBAAW;QACVC,OAAOJ;QACPb,WAAWkB,IAAAA,gBAAU,uBAEnB,CAAChC,UAAU,CAACuB;QAEdU,mBAAmBb;QACnBrB,cAAcA;kBAEba;SAED;IAEJ,IAAIsB;IACJ,IAAIX,YAAY;QACd,MAAMY,gBAAmC;YACvC5B;YACAC;YACAE;YACAD;YACAP;YACAI;QACF;QACA4B,yBACE,qBAACE,0BAAY;YACXtB,WAAWkB,IAAAA,gBAAU,wBAEnB,CAAChC;WAECmC;IAGV;IAEA,MAAME,YAAY,CAACnC,YAAY,CAACiB;IAEhC,MAAMmB,cAAcN,IAAAA,gBAAU,cAE5Bb,kCACAM,aAAa,0BACbD,oCACApB,cAAc;IAGhB,MAAMmC,kBAAmC;QACvCF,WAAWA;QACXG,UAAUH,aAAa,CAACb;QACxBtB;OACGgB;QACHJ,SAAS;QAKLV,aAAa;QAAEA;IAAU;QAC7BJ,sBACE,sBAACqB,OAAMoB,QAAQ;;gBACZtC,aAAasB,aAAa,SAASI;gBACnCN,cAAcW;gBACdlC;;;QAGLC,qBACE,sBAACoB,OAAMoB,QAAQ;;gBACZtC,aAAasB,aAAa,SAASI;gBACnC5B;;;;IAKP,IAAIuB,WAAW;QACb,qBACE,qBAACkB,oBAAS;YACR5B,WAAWkB,IAAAA,gBAAU,EAACM,aAAaxB;YACnCC,OAAOA;YACPJ,YAAYgB;YACZ7B,mBAAmBA;YACnBD,UAAU,CAAC8C,IAAM9C,qBAAAA,+BAAAA,SAAW8C,GAAGhB,UAAUiB,OAAO;YAChD5B,oBAAoBA;YACpBC,oBAAoBA;YACpBf,UAAUA;sBAETuB,aAAa,QACZ,CAAC,EAAEoB,UAAU,EAAE;gBACb,qBACE,qBAACC,sBAAU,uBAAKP,iBAAsBM,aAAa;oBAAEE,SAASC;gBAAU,IAAI,CAAC;YAEjF,kBAEA,qBAACF,sBAAU,uBAAKP;;IAIxB;IAEA,qBACE,qBAACU;QAAInC,WAAWkB,IAAAA,gBAAU,EAACM,aAAaxB;QAAYC,OAAOA;QAAOmC,KAAKvB;kBACrE,cAAA,qBAACmB,sBAAU,uBAAKP;;AAGtB;AAEA5C,KAAKwD,QAAQ,GAAGf,0BAAY"}
@@ -27,7 +27,7 @@ const sizeYClassNames = {
27
27
  compact: "vkuiChip--sizeY-compact"
28
28
  };
29
29
  const Chip = (_param)=>{
30
- var { Component = 'span', value = '', removable = true, onRemove = _vkjs.noop, removeLabel = 'Удалить', before, after, disabled, readOnly, children, className, onFocus: onFocusProp, onBlur: onBlurProp } = _param, restProps = _object_without_properties._(_param, [
30
+ var { Component = 'span', value = '', removable = true, onRemove, removeLabel = 'Удалить', before, after, disabled, readOnly, children, className, onFocus: onFocusProp, onBlur: onBlurProp } = _param, restProps = _object_without_properties._(_param, [
31
31
  "Component",
32
32
  "value",
33
33
  "removable",
@@ -60,7 +60,7 @@ const Chip = (_param)=>{
60
60
  onBlur(event);
61
61
  };
62
62
  const onRemoveWrapper = _react.useCallback((event)=>{
63
- onRemove(event, value);
63
+ onRemove === null || onRemove === void 0 ? void 0 : onRemove(event, value);
64
64
  }, [
65
65
  onRemove,
66
66
  value
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/components/ChipsInputBase/Chip/Chip.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Cancel } from '@vkontakte/icons';\nimport { classNames, hasReactNode, noop } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../../hooks/useAdaptivity';\nimport { useFocusVisible } from '../../../hooks/useFocusVisible';\nimport { useFocusVisibleClassName } from '../../../hooks/useFocusVisibleClassName';\nimport { RootComponent } from '../../RootComponent/RootComponent';\nimport { Footnote } from '../../Typography/Footnote/Footnote';\nimport { VisuallyHidden } from '../../VisuallyHidden/VisuallyHidden';\nimport type { ChipProps } from '../types';\nimport styles from './Chip.module.css';\n\nconst sizeYClassNames = {\n none: styles['Chip--sizeY-none'],\n compact: styles['Chip--sizeY-compact'],\n} as const;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Chip\n */\nexport const Chip = ({\n Component = 'span',\n value = '',\n removable = true,\n onRemove = noop,\n removeLabel = 'Удалить',\n before,\n after,\n disabled,\n readOnly,\n children,\n className,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n ...restProps\n}: ChipProps): React.ReactNode => {\n const { sizeY = 'none' } = useAdaptivity();\n const { focusVisible, onFocus, onBlur } = useFocusVisible();\n const focusVisibleClassName = useFocusVisibleClassName({ focusVisible });\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onFocusProp) {\n onFocusProp(event);\n }\n onFocus(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onBlurProp) {\n onBlurProp(event);\n }\n onBlur(event);\n };\n\n const onRemoveWrapper = React.useCallback(\n (event: React.MouseEvent) => {\n onRemove(event, value);\n },\n [onRemove, value],\n );\n\n return (\n <RootComponent\n {...restProps}\n Component={Component}\n className={classNames(\n styles['Chip'],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n focusVisibleClassName,\n className,\n )}\n aria-readonly={readOnly}\n aria-disabled={disabled}\n onFocus={disabled ? undefined : handleFocus}\n onBlur={disabled ? undefined : handleBlur}\n >\n <div className={styles['Chip__in']}>\n {hasReactNode(before) && <div className={styles['Chip__before']}>{before}</div>}\n <Footnote className={styles['Chip__content']}>{children}</Footnote>\n {hasReactNode(after) && <div className={styles['Chip__after']}>{after}</div>}\n </div>\n {!readOnly && removable && (\n <div className={styles['Chip__removable']}>\n <button\n tabIndex={-1} // [reason]: чтобы можно было выставлять состояние фокуса только программно через `*.focus()`\n disabled={disabled}\n className={styles['Chip__remove']}\n onClick={disabled ? undefined : onRemoveWrapper}\n >\n <VisuallyHidden>\n &nbsp; {removeLabel} {children}\n </VisuallyHidden>\n <Icon16Cancel />\n </button>\n </div>\n )}\n </RootComponent>\n );\n};\n"],"names":["Chip","sizeYClassNames","none","compact","Component","value","removable","onRemove","noop","removeLabel","before","after","disabled","readOnly","children","className","onFocus","onFocusProp","onBlur","onBlurProp","restProps","sizeY","useAdaptivity","focusVisible","useFocusVisible","focusVisibleClassName","useFocusVisibleClassName","handleFocus","event","handleBlur","onRemoveWrapper","React","useCallback","RootComponent","classNames","aria-readonly","aria-disabled","undefined","div","hasReactNode","Footnote","button","tabIndex","onClick","VisuallyHidden","Icon16Cancel"],"mappings":";;;;+BAoBaA;;;eAAAA;;;;;;;;iEApBU;uBACM;sBACkB;+BACjB;iCACE;0CACS;+BACX;0BACL;gCACM;AAI/B,MAAMC,kBAAkB;IACtBC,IAAI;IACJC,OAAO;AACT;AAKO,MAAMH,OAAO;QAAC,EACnBI,YAAY,MAAM,EAClBC,QAAQ,EAAE,EACVC,YAAY,IAAI,EAChBC,WAAWC,UAAI,EACfC,cAAc,SAAS,EACvBC,MAAM,EACNC,KAAK,EACLC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,SAASC,WAAW,EACpBC,QAAQC,UAAU,EAER,WADPC;QAbHhB;QACAC;QACAC;QACAC;QACAE;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;;IAGA,MAAM,EAAEG,QAAQ,MAAM,EAAE,GAAGC,IAAAA,4BAAa;IACxC,MAAM,EAAEC,YAAY,EAAEP,OAAO,EAAEE,MAAM,EAAE,GAAGM,IAAAA,gCAAe;IACzD,MAAMC,wBAAwBC,IAAAA,kDAAwB,EAAC;QAAEH;IAAa;IAEtE,MAAMI,cAAc,CAACC;QACnB,IAAIX,aAAa;YACfA,YAAYW;QACd;QACAZ,QAAQY;IACV;IAEA,MAAMC,aAAa,CAACD;QAClB,IAAIT,YAAY;YACdA,WAAWS;QACb;QACAV,OAAOU;IACT;IAEA,MAAME,kBAAkBC,OAAMC,WAAW,CACvC,CAACJ;QACCrB,SAASqB,OAAOvB;IAClB,GACA;QAACE;QAAUF;KAAM;IAGnB,qBACE,sBAAC4B,4BAAa,8CACRb;QACJhB,WAAWA;QACXW,WAAWmB,IAAAA,gBAAU,cAEnBb,UAAU,aAAapB,eAAe,CAACoB,MAAM,EAC7CI,uBACAV;QAEFoB,iBAAetB;QACfuB,iBAAexB;QACfI,SAASJ,WAAWyB,YAAYV;QAChCT,QAAQN,WAAWyB,YAAYR;;0BAE/B,sBAACS;gBAAIvB,SAAS;;oBACXwB,IAAAA,kBAAY,EAAC7B,yBAAW,qBAAC4B;wBAAIvB,SAAS;kCAA2BL;;kCAClE,qBAAC8B,kBAAQ;wBAACzB,SAAS;kCAA4BD;;oBAC9CyB,IAAAA,kBAAY,EAAC5B,wBAAU,qBAAC2B;wBAAIvB,SAAS;kCAA0BJ;;;;YAEjE,CAACE,YAAYP,2BACZ,qBAACgC;gBAAIvB,SAAS;0BACZ,cAAA,sBAAC0B;oBACCC,UAAU,CAAC;oBACX9B,UAAUA;oBACVG,SAAS;oBACT4B,SAAS/B,WAAWyB,YAAYP;;sCAEhC,sBAACc,8BAAc;;gCAAC;gCACNnC;gCAAY;gCAAEK;;;sCAExB,qBAAC+B,mBAAY;;;;;;AAMzB"}
1
+ {"version":3,"sources":["../../../../../src/components/ChipsInputBase/Chip/Chip.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Cancel } from '@vkontakte/icons';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../../hooks/useAdaptivity';\nimport { useFocusVisible } from '../../../hooks/useFocusVisible';\nimport { useFocusVisibleClassName } from '../../../hooks/useFocusVisibleClassName';\nimport { RootComponent } from '../../RootComponent/RootComponent';\nimport { Footnote } from '../../Typography/Footnote/Footnote';\nimport { VisuallyHidden } from '../../VisuallyHidden/VisuallyHidden';\nimport type { ChipProps } from '../types';\nimport styles from './Chip.module.css';\n\nconst sizeYClassNames = {\n none: styles['Chip--sizeY-none'],\n compact: styles['Chip--sizeY-compact'],\n} as const;\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Chip\n */\nexport const Chip = ({\n Component = 'span',\n value = '',\n removable = true,\n onRemove,\n removeLabel = 'Удалить',\n before,\n after,\n disabled,\n readOnly,\n children,\n className,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n ...restProps\n}: ChipProps): React.ReactNode => {\n const { sizeY = 'none' } = useAdaptivity();\n const { focusVisible, onFocus, onBlur } = useFocusVisible();\n const focusVisibleClassName = useFocusVisibleClassName({ focusVisible });\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onFocusProp) {\n onFocusProp(event);\n }\n onFocus(event);\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onBlurProp) {\n onBlurProp(event);\n }\n onBlur(event);\n };\n\n const onRemoveWrapper = React.useCallback(\n (event: React.MouseEvent) => {\n onRemove?.(event, value);\n },\n [onRemove, value],\n );\n\n return (\n <RootComponent\n {...restProps}\n Component={Component}\n className={classNames(\n styles['Chip'],\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n focusVisibleClassName,\n className,\n )}\n aria-readonly={readOnly}\n aria-disabled={disabled}\n onFocus={disabled ? undefined : handleFocus}\n onBlur={disabled ? undefined : handleBlur}\n >\n <div className={styles['Chip__in']}>\n {hasReactNode(before) && <div className={styles['Chip__before']}>{before}</div>}\n <Footnote className={styles['Chip__content']}>{children}</Footnote>\n {hasReactNode(after) && <div className={styles['Chip__after']}>{after}</div>}\n </div>\n {!readOnly && removable && (\n <div className={styles['Chip__removable']}>\n <button\n tabIndex={-1} // [reason]: чтобы можно было выставлять состояние фокуса только программно через `*.focus()`\n disabled={disabled}\n className={styles['Chip__remove']}\n onClick={disabled ? undefined : onRemoveWrapper}\n >\n <VisuallyHidden>\n &nbsp; {removeLabel} {children}\n </VisuallyHidden>\n <Icon16Cancel />\n </button>\n </div>\n )}\n </RootComponent>\n );\n};\n"],"names":["Chip","sizeYClassNames","none","compact","Component","value","removable","onRemove","removeLabel","before","after","disabled","readOnly","children","className","onFocus","onFocusProp","onBlur","onBlurProp","restProps","sizeY","useAdaptivity","focusVisible","useFocusVisible","focusVisibleClassName","useFocusVisibleClassName","handleFocus","event","handleBlur","onRemoveWrapper","React","useCallback","RootComponent","classNames","aria-readonly","aria-disabled","undefined","div","hasReactNode","Footnote","button","tabIndex","onClick","VisuallyHidden","Icon16Cancel"],"mappings":";;;;+BAoBaA;;;eAAAA;;;;;;;;iEApBU;uBACM;sBACY;+BACX;iCACE;0CACS;+BACX;0BACL;gCACM;AAI/B,MAAMC,kBAAkB;IACtBC,IAAI;IACJC,OAAO;AACT;AAKO,MAAMH,OAAO;QAAC,EACnBI,YAAY,MAAM,EAClBC,QAAQ,EAAE,EACVC,YAAY,IAAI,EAChBC,QAAQ,EACRC,cAAc,SAAS,EACvBC,MAAM,EACNC,KAAK,EACLC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,SAASC,WAAW,EACpBC,QAAQC,UAAU,EAER,WADPC;QAbHf;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;;IAGA,MAAM,EAAEG,QAAQ,MAAM,EAAE,GAAGC,IAAAA,4BAAa;IACxC,MAAM,EAAEC,YAAY,EAAEP,OAAO,EAAEE,MAAM,EAAE,GAAGM,IAAAA,gCAAe;IACzD,MAAMC,wBAAwBC,IAAAA,kDAAwB,EAAC;QAAEH;IAAa;IAEtE,MAAMI,cAAc,CAACC;QACnB,IAAIX,aAAa;YACfA,YAAYW;QACd;QACAZ,QAAQY;IACV;IAEA,MAAMC,aAAa,CAACD;QAClB,IAAIT,YAAY;YACdA,WAAWS;QACb;QACAV,OAAOU;IACT;IAEA,MAAME,kBAAkBC,OAAMC,WAAW,CACvC,CAACJ;QACCpB,qBAAAA,+BAAAA,SAAWoB,OAAOtB;IACpB,GACA;QAACE;QAAUF;KAAM;IAGnB,qBACE,sBAAC2B,4BAAa,8CACRb;QACJf,WAAWA;QACXU,WAAWmB,IAAAA,gBAAU,cAEnBb,UAAU,aAAanB,eAAe,CAACmB,MAAM,EAC7CI,uBACAV;QAEFoB,iBAAetB;QACfuB,iBAAexB;QACfI,SAASJ,WAAWyB,YAAYV;QAChCT,QAAQN,WAAWyB,YAAYR;;0BAE/B,sBAACS;gBAAIvB,SAAS;;oBACXwB,IAAAA,kBAAY,EAAC7B,yBAAW,qBAAC4B;wBAAIvB,SAAS;kCAA2BL;;kCAClE,qBAAC8B,kBAAQ;wBAACzB,SAAS;kCAA4BD;;oBAC9CyB,IAAAA,kBAAY,EAAC5B,wBAAU,qBAAC2B;wBAAIvB,SAAS;kCAA0BJ;;;;YAEjE,CAACE,YAAYN,2BACZ,qBAAC+B;gBAAIvB,SAAS;0BACZ,cAAA,sBAAC0B;oBACCC,UAAU,CAAC;oBACX9B,UAAUA;oBACVG,SAAS;oBACT4B,SAAS/B,WAAWyB,YAAYP;;sCAEhC,sBAACc,8BAAc;;gCAAC;gCACNnC;gCAAY;gCAAEK;;;sCAExB,qBAAC+B,mBAAY;;;;;;AAMzB"}
@@ -126,6 +126,13 @@ const ChipsSelect = (_param)=>{
126
126
  const inputRef = (0, _useExternRef.useExternRef)(getRef, inputRefHook);
127
127
  // Связано с CustomSelectDropdownProps
128
128
  const [dropdownVerticalPlacement, setDropdownVerticalPlacement] = _react.useState(placementProp);
129
+ const onDropdownPlacementChange = _react.useCallback((placement)=>{
130
+ if (placement.startsWith('top')) {
131
+ setDropdownVerticalPlacement('top');
132
+ } else if (placement.startsWith('bottom')) {
133
+ setDropdownVerticalPlacement('bottom');
134
+ }
135
+ }, []);
129
136
  const dropdownId = _react.useId();
130
137
  const dropdownCurrentItemId = focusedOptionIndex !== null ? `${dropdownId}-${focusedOptionIndex}` : undefined;
131
138
  const dropdownScrollBoxRef = _react.useRef(null);
@@ -253,13 +260,6 @@ const ChipsSelect = (_param)=>{
253
260
  focusedOptionIndex,
254
261
  setFocusedOption
255
262
  ]);
256
- const onDropdownPlacementChange = _react.useCallback((placement)=>{
257
- /* istanbul ignore next: */ if (placement.startsWith('top')) {
258
- setDropdownVerticalPlacement('top');
259
- } else if (placement.startsWith('bottom')) {
260
- setDropdownVerticalPlacement('bottom');
261
- }
262
- }, []);
263
263
  const onDropdownMouseLeave = _react.useCallback(()=>{
264
264
  setFocusedOptionIndex(null);
265
265
  }, [
@@ -271,7 +271,7 @@ const ChipsSelect = (_param)=>{
271
271
  setOpened
272
272
  ]);
273
273
  (0, _useGlobalOnClickOutside.useGlobalOnClickOutside)(handleClickOutside, opened ? rootRef : null, opened ? dropdownScrollBoxRef : null);
274
- const openedClassNames = _react.useMemo(()=>opened && dropdownOffsetDistance === 0 && ((dropdownVerticalPlacement === null || dropdownVerticalPlacement === void 0 ? void 0 : dropdownVerticalPlacement.includes('top')) ? "vkuiChipsSelect--pop-up" : "vkuiChipsSelect--pop-down") || undefined, [
274
+ const openedClassNames = _react.useMemo(()=>opened && dropdownOffsetDistance === 0 && (dropdownVerticalPlacement.includes('top') ? "vkuiChipsSelect--pop-up" : "vkuiChipsSelect--pop-down") || undefined, [
275
275
  dropdownOffsetDistance,
276
276
  opened,
277
277
  dropdownVerticalPlacement
@@ -317,7 +317,7 @@ const ChipsSelect = (_param)=>{
317
317
  opened && /*#__PURE__*/ (0, _jsxruntime.jsx)(_CustomSelectDropdown.CustomSelectDropdown, {
318
318
  "data-testid": dropdownTestId,
319
319
  targetRef: rootRef,
320
- placement: placementProp,
320
+ placement: dropdownVerticalPlacement,
321
321
  scrollBoxRef: dropdownScrollBoxRef,
322
322
  onPlacementChange: onDropdownPlacementChange,
323
323
  onMouseLeave: onDropdownMouseLeave,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalOnClickOutside } from '../../hooks/useGlobalOnClickOutside';\nimport { Keys } from '../../lib/accessibility';\nimport type { Placement } from '../../lib/floating';\nimport { defaultFilterFn } from '../../lib/select';\nimport { ChipsInputBase } from '../ChipsInputBase/ChipsInputBase';\nimport {\n getNewOptionDataDefault,\n getOptionLabelDefault,\n getOptionValueDefault,\n renderChipDefault,\n} from '../ChipsInputBase/constants';\nimport type { ChipOption, ChipsInputBaseProps } from '../ChipsInputBase/types';\nimport {\n CustomSelectDropdown,\n CustomSelectDropdownProps,\n} from '../CustomSelectDropdown/CustomSelectDropdown';\nimport {\n CustomSelectOption,\n type CustomSelectOptionProps,\n} from '../CustomSelectOption/CustomSelectOption';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport type { FormFieldProps } from '../FormField/FormField';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport {\n DEFAULT_EMPTY_TEXT,\n DEFAULT_SELECTED_BEHAVIOR,\n FOCUS_ACTION_NEXT,\n FOCUS_ACTION_PREV,\n isCreateNewOptionPreset,\n isEmptyOptionPreset,\n isNotServicePreset,\n renderOptionDefault,\n} from './constants';\nimport type { FocusActionType, OptionPreset } from './types';\nimport { useChipsSelect, type UseChipsSelectProps } from './useChipsSelect';\nimport styles from './ChipsSelect.module.css';\n\nconst findIndexAfter = <O extends ChipOption>(\n options: Array<OptionPreset<O>> = [],\n startIndex = -1,\n) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex(\n (option, i) => i > startIndex && (!isNotServicePreset(option) || !option.disabled),\n );\n};\n\nconst findIndexBefore = <O extends ChipOption>(\n options: Array<OptionPreset<O>> = [],\n endIndex: number = options.length,\n) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!isNotServicePreset(option) || !option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nexport interface ChipsSelectProps<O extends ChipOption>\n extends ChipsInputBaseProps<O>,\n UseChipsSelectProps<O>,\n Pick<FormFieldProps, 'status' | 'mode' | 'before'>,\n Pick<\n CustomSelectDropdownProps,\n 'overscrollBehavior' | 'autoHideScrollbar' | 'autoHideScrollbarDelay'\n > {\n placement?: 'top' | 'bottom';\n /**\n * Отрисовка Spinner вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n /**\n * Закрытие выпадающего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n /**\n * Ширина раскрывающегося списка зависит от контента\n */\n dropdownAutoWidth?: boolean;\n /**\n * Принудительно использовать портал.\n */\n forceDropdownPortal?: boolean;\n /**\n * Передача `data-testid`.\n */\n dropdownTestId?: string;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n /**\n * Добавляет значение в список на событие `onBlur` (использовать вместе с `creatable`)\n */\n addOnBlur?: boolean;\n /**\n * Отключает максимальную высоту по умолчанию\n */\n noMaxHeight?: boolean;\n\n renderOption?: (props: CustomSelectOptionProps, option: O) => React.ReactNode;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (event: React.MouseEvent | React.KeyboardEvent, option: O) => void;\n\n /**\n * Отступ от выпадающего списка\n */\n dropdownOffsetDistance?: number;\n\n /**\n * Если `true`, то справа будет отображаться кнопка для очистки значения\n */\n allowClearButton?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ChipsSelect\n */\nexport const ChipsSelect = <Option extends ChipOption>({\n // FormFieldProps\n id: labelledbyId,\n getRootRef,\n className,\n status = 'default',\n icon: dropdownIconProp,\n onChangeStart,\n\n // CustomSelectDropdownProps\n options: optionsProp,\n placement: placementProp = 'bottom',\n closeAfterSelect = true,\n selectedBehavior = DEFAULT_SELECTED_BEHAVIOR,\n emptyText = DEFAULT_EMPTY_TEXT,\n creatable = false,\n fetching = false,\n dropdownAutoWidth,\n forceDropdownPortal,\n noMaxHeight = false,\n filterFn = defaultFilterFn,\n dropdownTestId,\n onClose,\n onOpen,\n overscrollBehavior,\n\n // ChipsInputProps\n getRef,\n value: valueProp,\n defaultValue,\n inputValue: inputValueProp,\n defaultInputValue,\n disabled,\n readOnly,\n getOptionValue = getOptionValueDefault,\n getOptionLabel = getOptionLabelDefault,\n getNewOptionData = getNewOptionDataDefault,\n renderChip = renderChipDefault,\n renderOption = renderOptionDefault,\n onChange,\n onFocus: onFocusProp,\n onInputChange: onInputChangeProp,\n onBlur: onBlurProp,\n onKeyDown: onKeyDownProp,\n dropdownOffsetDistance = 0,\n allowClearButton,\n clearButtonTestId,\n ...restProps\n}: ChipsSelectProps<Option>): React.ReactNode => {\n const {\n // Связано с ChipsInputProps\n // option\n value,\n addOptionFromInput,\n addOption,\n removeOption,\n clearOptions,\n // input\n inputRef: inputRefHook,\n inputValue,\n clearInput,\n onInputChange,\n\n // Связано с CustomSelectDropdownProps\n options,\n opened,\n setOpened,\n focusedOption,\n focusedOptionIndex,\n setFocusedOption,\n setFocusedOptionIndex,\n } = useChipsSelect({\n // option\n value: valueProp,\n defaultValue,\n onChange,\n getOptionValue,\n getOptionLabel,\n getNewOptionData,\n\n // input\n inputValue: inputValueProp,\n defaultInputValue,\n onInputChange: onInputChangeProp,\n\n // dropdown\n options: optionsProp,\n emptyText,\n creatable,\n filterFn,\n selectedBehavior,\n onClose,\n onOpen,\n\n // other\n disabled,\n });\n\n // Связано с ChipsInputProps\n const rootRef = useExternRef(getRootRef);\n const inputRef = useExternRef(getRef, inputRefHook);\n\n // Связано с CustomSelectDropdownProps\n const [dropdownVerticalPlacement, setDropdownVerticalPlacement] = React.useState<\n Extract<Placement, 'top' | 'bottom'> | undefined\n >(placementProp);\n const dropdownId = React.useId();\n const dropdownCurrentItemId =\n focusedOptionIndex !== null ? `${dropdownId}-${focusedOptionIndex}` : undefined;\n const dropdownScrollBoxRef = React.useRef<HTMLDivElement>(null);\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onFocusProp) {\n onFocusProp(event);\n }\n\n if (!readOnly) {\n setOpened(true);\n setFocusedOptionIndex(null);\n }\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onBlurProp) {\n onBlurProp(event);\n }\n\n // Не добавляем значение, если его нужно выбрать строго из списка\n if (!readOnly && !event.defaultPrevented && !creatable) {\n event.preventDefault();\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = dropdownScrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n /* istanbul ignore if: невозможный кейс (в SSR вызова этой функции не будет) */\n if (!item || !dropdown) {\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 /* istanbul ignore next: нет представления как воспроизвести */\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 | null) => {\n if (index === oldIndex) {\n /* istanbul ignore next: нет представления как воспроизвести */\n return;\n }\n\n const option = options[index];\n\n if (isNotServicePreset(option) && option.disabled) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number | null, type: FocusActionType) => {\n let index = nextIndex === null ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n const nextIndex = findIndexAfter(options, index);\n index = nextIndex === -1 ? findIndexAfter(options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === FOCUS_ACTION_PREV) {\n const beforeIndex = findIndexBefore(options, index);\n index = beforeIndex === -1 ? findIndexBefore(options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n focusOptionByIndex(index, focusedOptionIndex);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDownProp) {\n onKeyDownProp(event);\n }\n\n if (event.defaultPrevented || readOnly) {\n return;\n }\n\n switch (event.key) {\n case Keys.ARROW_UP:\n case Keys.ARROW_DOWN:\n event.preventDefault();\n\n if (!opened) {\n setOpened(true);\n focusOption(null, FOCUS_ACTION_NEXT);\n } else {\n focusOption(\n focusedOptionIndex,\n event.key === Keys.ARROW_UP ? FOCUS_ACTION_PREV : FOCUS_ACTION_NEXT,\n );\n }\n break;\n case Keys.ENTER: {\n if (!opened) {\n break;\n }\n if (focusedOptionIndex != null) {\n const foundOption = options[focusedOptionIndex];\n if (foundOption && isNotServicePreset(foundOption)) {\n event.preventDefault();\n\n if (onChangeStart) {\n onChangeStart(event, foundOption);\n }\n\n addOption(foundOption);\n setFocusedOptionIndex(null);\n clearInput();\n if (closeAfterSelect) {\n setOpened(false);\n }\n\n break;\n }\n }\n\n if (!creatable) {\n event.preventDefault();\n }\n break;\n }\n case Keys.ESCAPE:\n case Keys.TAB:\n if (opened) {\n setOpened(false);\n }\n }\n };\n\n React.useEffect(() => {\n if (focusedOptionIndex === null) {\n setFocusedOption(null);\n } else {\n const foundFocusedOptionIndex = options[focusedOptionIndex];\n\n if (foundFocusedOptionIndex && isNotServicePreset(foundFocusedOptionIndex)) {\n setFocusedOption(foundFocusedOptionIndex);\n }\n }\n }, [options, focusedOptionIndex, setFocusedOption]);\n\n const onDropdownPlacementChange = React.useCallback((placement: Placement) => {\n /* istanbul ignore next: */\n if (placement.startsWith('top')) {\n setDropdownVerticalPlacement('top');\n } else if (placement.startsWith('bottom')) {\n setDropdownVerticalPlacement('bottom');\n }\n }, []);\n\n const onDropdownMouseLeave = React.useCallback(() => {\n setFocusedOptionIndex(null);\n }, [setFocusedOptionIndex]);\n\n const handleClickOutside = React.useCallback(() => {\n setOpened(false);\n }, [setOpened]);\n\n useGlobalOnClickOutside(\n handleClickOutside,\n opened ? rootRef : null,\n opened ? dropdownScrollBoxRef : null,\n );\n\n const openedClassNames = React.useMemo(\n () =>\n (opened &&\n dropdownOffsetDistance === 0 &&\n (dropdownVerticalPlacement?.includes('top')\n ? styles['ChipsSelect--pop-up']\n : styles['ChipsSelect--pop-down'])) ||\n undefined,\n [dropdownOffsetDistance, opened, dropdownVerticalPlacement],\n );\n\n const clearButtonShown = allowClearButton && (!!value.length || !!inputValue.length);\n\n return (\n <>\n <ChipsInputBase\n {...restProps}\n disabled={disabled}\n readOnly={readOnly}\n clearButtonShown={clearButtonShown}\n clearButtonTestId={clearButtonTestId}\n // FormFieldProps\n id={labelledbyId}\n getRootRef={rootRef}\n className={classNames(styles['ChipsSelect'], openedClassNames, className)}\n status={status}\n after={\n dropdownIconProp || (\n <DropdownIcon\n opened={opened}\n className={clearButtonShown ? styles['ChipsSelect__dropdown-icon'] : undefined}\n />\n )\n }\n // option\n value={value}\n onAddChipOption={addOptionFromInput}\n onRemoveChipOption={removeOption}\n renderChip={renderChip}\n onClear={clearOptions}\n // input\n getRef={inputRef}\n inputValue={inputValue}\n onInputChange={onInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n // a11y\n role=\"combobox\"\n aria-expanded={opened}\n aria-autocomplete=\"list\"\n aria-controls={opened ? dropdownId : undefined}\n aria-activedescendant={opened ? dropdownCurrentItemId : undefined}\n aria-haspopup=\"listbox\"\n />\n {opened && (\n <CustomSelectDropdown\n data-testid={dropdownTestId}\n targetRef={rootRef}\n placement={placementProp}\n scrollBoxRef={dropdownScrollBoxRef}\n onPlacementChange={onDropdownPlacementChange}\n onMouseLeave={onDropdownMouseLeave}\n fetching={fetching}\n autoWidth={dropdownAutoWidth}\n forcePortal={forceDropdownPortal}\n noMaxHeight={noMaxHeight}\n offsetDistance={dropdownOffsetDistance}\n overscrollBehavior={overscrollBehavior}\n // a11y\n id={dropdownId}\n role=\"listbox\"\n aria-labelledby={labelledbyId}\n >\n {options.map((option, index) => {\n const dropdownItemId = `${dropdownId}-${index}`;\n\n if (isEmptyOptionPreset(option)) {\n return (\n <Footnote key=\"empty-text\" className={styles['ChipsSelect__empty']}>\n {option.placeholder}\n </Footnote>\n );\n }\n if (isCreateNewOptionPreset(option)) {\n return (\n <CustomSelectOption\n key=\"create-new-option\"\n id={dropdownItemId}\n hovered={focusedOptionIndex === index}\n onMouseDown={() => addOptionFromInput(inputValue)}\n onMouseEnter={() => setFocusedOptionIndex(index)}\n >\n {option.actionText}\n </CustomSelectOption>\n );\n }\n return (\n <React.Fragment key={`${typeof option.value}-${option.value}`}>\n {renderOption(\n {\n id: dropdownItemId,\n disabled: option.disabled,\n hovered: focusedOption\n ? getOptionValue(option) === getOptionValue(focusedOption)\n : false,\n children: option.label,\n selected: !!value.find(\n (selectedOption: Option) =>\n getOptionValue(selectedOption) === getOptionValue(option),\n ),\n getRootRef(node) {\n if (node) {\n chipsSelectOptions[index] = node;\n }\n },\n onMouseDown(event: React.MouseEvent<HTMLDivElement>) {\n if (option.disabled) {\n return;\n }\n if (onChangeStart) {\n onChangeStart(event, option);\n }\n\n if (!event.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter() {\n setFocusedOptionIndex(index);\n },\n },\n option,\n )}\n </React.Fragment>\n );\n })}\n </CustomSelectDropdown>\n )}\n </>\n );\n};\n"],"names":["ChipsSelect","findIndexAfter","options","startIndex","length","findIndex","option","i","isNotServicePreset","disabled","findIndexBefore","endIndex","result","id","labelledbyId","getRootRef","className","status","icon","dropdownIconProp","onChangeStart","optionsProp","placement","placementProp","closeAfterSelect","selectedBehavior","DEFAULT_SELECTED_BEHAVIOR","emptyText","DEFAULT_EMPTY_TEXT","creatable","fetching","dropdownAutoWidth","forceDropdownPortal","noMaxHeight","filterFn","defaultFilterFn","dropdownTestId","onClose","onOpen","overscrollBehavior","getRef","value","valueProp","defaultValue","inputValue","inputValueProp","defaultInputValue","readOnly","getOptionValue","getOptionValueDefault","getOptionLabel","getOptionLabelDefault","getNewOptionData","getNewOptionDataDefault","renderChip","renderChipDefault","renderOption","renderOptionDefault","onChange","onFocus","onFocusProp","onInputChange","onInputChangeProp","onBlur","onBlurProp","onKeyDown","onKeyDownProp","dropdownOffsetDistance","allowClearButton","clearButtonTestId","restProps","addOptionFromInput","addOption","removeOption","clearOptions","inputRef","inputRefHook","clearInput","opened","setOpened","focusedOption","focusedOptionIndex","setFocusedOption","setFocusedOptionIndex","useChipsSelect","rootRef","useExternRef","dropdownVerticalPlacement","setDropdownVerticalPlacement","React","useState","dropdownId","useId","dropdownCurrentItemId","undefined","dropdownScrollBoxRef","useRef","handleFocus","event","handleBlur","defaultPrevented","preventDefault","chipsSelectOptions","current","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","beforeIndex","handleKeyDown","key","Keys","ARROW_UP","ARROW_DOWN","ENTER","foundOption","ESCAPE","TAB","useEffect","foundFocusedOptionIndex","onDropdownPlacementChange","useCallback","startsWith","onDropdownMouseLeave","handleClickOutside","useGlobalOnClickOutside","openedClassNames","useMemo","includes","clearButtonShown","ChipsInputBase","classNames","after","DropdownIcon","onAddChipOption","onRemoveChipOption","onClear","role","aria-expanded","aria-autocomplete","aria-controls","aria-activedescendant","aria-haspopup","CustomSelectDropdown","data-testid","targetRef","scrollBoxRef","onPlacementChange","onMouseLeave","autoWidth","forcePortal","offsetDistance","aria-labelledby","map","dropdownItemId","isEmptyOptionPreset","Footnote","placeholder","isCreateNewOptionPreset","CustomSelectOption","hovered","onMouseDown","onMouseEnter","actionText","Fragment","children","label","selected","find","selectedOption","node"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalOnClickOutside } from '../../hooks/useGlobalOnClickOutside';\nimport { Keys } from '../../lib/accessibility';\nimport type { Placement } from '../../lib/floating';\nimport { defaultFilterFn } from '../../lib/select';\nimport { ChipsInputBase } from '../ChipsInputBase/ChipsInputBase';\nimport {\n getNewOptionDataDefault,\n getOptionLabelDefault,\n getOptionValueDefault,\n renderChipDefault,\n} from '../ChipsInputBase/constants';\nimport type { ChipOption, ChipsInputBaseProps } from '../ChipsInputBase/types';\nimport {\n CustomSelectDropdown,\n CustomSelectDropdownProps,\n} from '../CustomSelectDropdown/CustomSelectDropdown';\nimport {\n CustomSelectOption,\n type CustomSelectOptionProps,\n} from '../CustomSelectOption/CustomSelectOption';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport type { FormFieldProps } from '../FormField/FormField';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport {\n DEFAULT_EMPTY_TEXT,\n DEFAULT_SELECTED_BEHAVIOR,\n FOCUS_ACTION_NEXT,\n FOCUS_ACTION_PREV,\n isCreateNewOptionPreset,\n isEmptyOptionPreset,\n isNotServicePreset,\n renderOptionDefault,\n} from './constants';\nimport type { FocusActionType, OptionPreset } from './types';\nimport { useChipsSelect, type UseChipsSelectProps } from './useChipsSelect';\nimport styles from './ChipsSelect.module.css';\n\nconst findIndexAfter = <O extends ChipOption>(\n options: Array<OptionPreset<O>> = [],\n startIndex = -1,\n) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex(\n (option, i) => i > startIndex && (!isNotServicePreset(option) || !option.disabled),\n );\n};\n\nconst findIndexBefore = <O extends ChipOption>(\n options: Array<OptionPreset<O>> = [],\n endIndex: number = options.length,\n) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!isNotServicePreset(option) || !option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nexport interface ChipsSelectProps<O extends ChipOption>\n extends ChipsInputBaseProps<O>,\n UseChipsSelectProps<O>,\n Pick<FormFieldProps, 'status' | 'mode' | 'before'>,\n Pick<\n CustomSelectDropdownProps,\n 'overscrollBehavior' | 'autoHideScrollbar' | 'autoHideScrollbarDelay'\n > {\n placement?: 'top' | 'bottom';\n /**\n * Отрисовка Spinner вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n /**\n * Закрытие выпадающего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n /**\n * Ширина раскрывающегося списка зависит от контента\n */\n dropdownAutoWidth?: boolean;\n /**\n * Принудительно использовать портал.\n */\n forceDropdownPortal?: boolean;\n /**\n * Передача `data-testid`.\n */\n dropdownTestId?: string;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n /**\n * Добавляет значение в список на событие `onBlur` (использовать вместе с `creatable`)\n */\n addOnBlur?: boolean;\n /**\n * Отключает максимальную высоту по умолчанию\n */\n noMaxHeight?: boolean;\n\n renderOption?: (props: CustomSelectOptionProps, option: O) => React.ReactNode;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (event: React.MouseEvent | React.KeyboardEvent, option: O) => void;\n\n /**\n * Отступ от выпадающего списка\n */\n dropdownOffsetDistance?: number;\n\n /**\n * Если `true`, то справа будет отображаться кнопка для очистки значения\n */\n allowClearButton?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ChipsSelect\n */\nexport const ChipsSelect = <Option extends ChipOption>({\n // FormFieldProps\n id: labelledbyId,\n getRootRef,\n className,\n status = 'default',\n icon: dropdownIconProp,\n onChangeStart,\n\n // CustomSelectDropdownProps\n options: optionsProp,\n placement: placementProp = 'bottom',\n closeAfterSelect = true,\n selectedBehavior = DEFAULT_SELECTED_BEHAVIOR,\n emptyText = DEFAULT_EMPTY_TEXT,\n creatable = false,\n fetching = false,\n dropdownAutoWidth,\n forceDropdownPortal,\n noMaxHeight = false,\n filterFn = defaultFilterFn,\n dropdownTestId,\n onClose,\n onOpen,\n overscrollBehavior,\n\n // ChipsInputProps\n getRef,\n value: valueProp,\n defaultValue,\n inputValue: inputValueProp,\n defaultInputValue,\n disabled,\n readOnly,\n getOptionValue = getOptionValueDefault,\n getOptionLabel = getOptionLabelDefault,\n getNewOptionData = getNewOptionDataDefault,\n renderChip = renderChipDefault,\n renderOption = renderOptionDefault,\n onChange,\n onFocus: onFocusProp,\n onInputChange: onInputChangeProp,\n onBlur: onBlurProp,\n onKeyDown: onKeyDownProp,\n dropdownOffsetDistance = 0,\n allowClearButton,\n clearButtonTestId,\n ...restProps\n}: ChipsSelectProps<Option>): React.ReactNode => {\n const {\n // Связано с ChipsInputProps\n // option\n value,\n addOptionFromInput,\n addOption,\n removeOption,\n clearOptions,\n // input\n inputRef: inputRefHook,\n inputValue,\n clearInput,\n onInputChange,\n\n // Связано с CustomSelectDropdownProps\n options,\n opened,\n setOpened,\n focusedOption,\n focusedOptionIndex,\n setFocusedOption,\n setFocusedOptionIndex,\n } = useChipsSelect({\n // option\n value: valueProp,\n defaultValue,\n onChange,\n getOptionValue,\n getOptionLabel,\n getNewOptionData,\n\n // input\n inputValue: inputValueProp,\n defaultInputValue,\n onInputChange: onInputChangeProp,\n\n // dropdown\n options: optionsProp,\n emptyText,\n creatable,\n filterFn,\n selectedBehavior,\n onClose,\n onOpen,\n\n // other\n disabled,\n });\n\n // Связано с ChipsInputProps\n const rootRef = useExternRef(getRootRef);\n const inputRef = useExternRef(getRef, inputRefHook);\n\n // Связано с CustomSelectDropdownProps\n const [dropdownVerticalPlacement, setDropdownVerticalPlacement] = React.useState<\n 'top' | 'bottom'\n >(placementProp);\n\n const onDropdownPlacementChange = React.useCallback((placement: Placement) => {\n if (placement.startsWith('top')) {\n setDropdownVerticalPlacement('top');\n } else if (placement.startsWith('bottom')) {\n setDropdownVerticalPlacement('bottom');\n }\n }, []);\n\n const dropdownId = React.useId();\n const dropdownCurrentItemId =\n focusedOptionIndex !== null ? `${dropdownId}-${focusedOptionIndex}` : undefined;\n const dropdownScrollBoxRef = React.useRef<HTMLDivElement>(null);\n\n const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onFocusProp) {\n onFocusProp(event);\n }\n\n if (!readOnly) {\n setOpened(true);\n setFocusedOptionIndex(null);\n }\n };\n\n const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (onBlurProp) {\n onBlurProp(event);\n }\n\n // Не добавляем значение, если его нужно выбрать строго из списка\n if (!readOnly && !event.defaultPrevented && !creatable) {\n event.preventDefault();\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = dropdownScrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n /* istanbul ignore if: невозможный кейс (в SSR вызова этой функции не будет) */\n if (!item || !dropdown) {\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 /* istanbul ignore next: нет представления как воспроизвести */\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 | null) => {\n if (index === oldIndex) {\n /* istanbul ignore next: нет представления как воспроизвести */\n return;\n }\n\n const option = options[index];\n\n if (isNotServicePreset(option) && option.disabled) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number | null, type: FocusActionType) => {\n let index = nextIndex === null ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n const nextIndex = findIndexAfter(options, index);\n index = nextIndex === -1 ? findIndexAfter(options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === FOCUS_ACTION_PREV) {\n const beforeIndex = findIndexBefore(options, index);\n index = beforeIndex === -1 ? findIndexBefore(options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n focusOptionByIndex(index, focusedOptionIndex);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDownProp) {\n onKeyDownProp(event);\n }\n\n if (event.defaultPrevented || readOnly) {\n return;\n }\n\n switch (event.key) {\n case Keys.ARROW_UP:\n case Keys.ARROW_DOWN:\n event.preventDefault();\n\n if (!opened) {\n setOpened(true);\n focusOption(null, FOCUS_ACTION_NEXT);\n } else {\n focusOption(\n focusedOptionIndex,\n event.key === Keys.ARROW_UP ? FOCUS_ACTION_PREV : FOCUS_ACTION_NEXT,\n );\n }\n break;\n case Keys.ENTER: {\n if (!opened) {\n break;\n }\n if (focusedOptionIndex != null) {\n const foundOption = options[focusedOptionIndex];\n if (foundOption && isNotServicePreset(foundOption)) {\n event.preventDefault();\n\n if (onChangeStart) {\n onChangeStart(event, foundOption);\n }\n\n addOption(foundOption);\n setFocusedOptionIndex(null);\n clearInput();\n if (closeAfterSelect) {\n setOpened(false);\n }\n\n break;\n }\n }\n\n if (!creatable) {\n event.preventDefault();\n }\n break;\n }\n case Keys.ESCAPE:\n case Keys.TAB:\n if (opened) {\n setOpened(false);\n }\n }\n };\n\n React.useEffect(() => {\n if (focusedOptionIndex === null) {\n setFocusedOption(null);\n } else {\n const foundFocusedOptionIndex = options[focusedOptionIndex];\n\n if (foundFocusedOptionIndex && isNotServicePreset(foundFocusedOptionIndex)) {\n setFocusedOption(foundFocusedOptionIndex);\n }\n }\n }, [options, focusedOptionIndex, setFocusedOption]);\n\n const onDropdownMouseLeave = React.useCallback(() => {\n setFocusedOptionIndex(null);\n }, [setFocusedOptionIndex]);\n\n const handleClickOutside = React.useCallback(() => {\n setOpened(false);\n }, [setOpened]);\n\n useGlobalOnClickOutside(\n handleClickOutside,\n opened ? rootRef : null,\n opened ? dropdownScrollBoxRef : null,\n );\n\n const openedClassNames = React.useMemo(\n () =>\n (opened &&\n dropdownOffsetDistance === 0 &&\n (dropdownVerticalPlacement.includes('top')\n ? styles['ChipsSelect--pop-up']\n : styles['ChipsSelect--pop-down'])) ||\n undefined,\n [dropdownOffsetDistance, opened, dropdownVerticalPlacement],\n );\n\n const clearButtonShown = allowClearButton && (!!value.length || !!inputValue.length);\n\n return (\n <>\n <ChipsInputBase\n {...restProps}\n disabled={disabled}\n readOnly={readOnly}\n clearButtonShown={clearButtonShown}\n clearButtonTestId={clearButtonTestId}\n // FormFieldProps\n id={labelledbyId}\n getRootRef={rootRef}\n className={classNames(styles['ChipsSelect'], openedClassNames, className)}\n status={status}\n after={\n dropdownIconProp || (\n <DropdownIcon\n opened={opened}\n className={clearButtonShown ? styles['ChipsSelect__dropdown-icon'] : undefined}\n />\n )\n }\n // option\n value={value}\n onAddChipOption={addOptionFromInput}\n onRemoveChipOption={removeOption}\n renderChip={renderChip}\n onClear={clearOptions}\n // input\n getRef={inputRef}\n inputValue={inputValue}\n onInputChange={onInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n // a11y\n role=\"combobox\"\n aria-expanded={opened}\n aria-autocomplete=\"list\"\n aria-controls={opened ? dropdownId : undefined}\n aria-activedescendant={opened ? dropdownCurrentItemId : undefined}\n aria-haspopup=\"listbox\"\n />\n {opened && (\n <CustomSelectDropdown\n data-testid={dropdownTestId}\n targetRef={rootRef}\n placement={dropdownVerticalPlacement}\n scrollBoxRef={dropdownScrollBoxRef}\n onPlacementChange={onDropdownPlacementChange}\n onMouseLeave={onDropdownMouseLeave}\n fetching={fetching}\n autoWidth={dropdownAutoWidth}\n forcePortal={forceDropdownPortal}\n noMaxHeight={noMaxHeight}\n offsetDistance={dropdownOffsetDistance}\n overscrollBehavior={overscrollBehavior}\n // a11y\n id={dropdownId}\n role=\"listbox\"\n aria-labelledby={labelledbyId}\n >\n {options.map((option, index) => {\n const dropdownItemId = `${dropdownId}-${index}`;\n\n if (isEmptyOptionPreset(option)) {\n return (\n <Footnote key=\"empty-text\" className={styles['ChipsSelect__empty']}>\n {option.placeholder}\n </Footnote>\n );\n }\n if (isCreateNewOptionPreset(option)) {\n return (\n <CustomSelectOption\n key=\"create-new-option\"\n id={dropdownItemId}\n hovered={focusedOptionIndex === index}\n onMouseDown={() => addOptionFromInput(inputValue)}\n onMouseEnter={() => setFocusedOptionIndex(index)}\n >\n {option.actionText}\n </CustomSelectOption>\n );\n }\n return (\n <React.Fragment key={`${typeof option.value}-${option.value}`}>\n {renderOption(\n {\n id: dropdownItemId,\n disabled: option.disabled,\n hovered: focusedOption\n ? getOptionValue(option) === getOptionValue(focusedOption)\n : false,\n children: option.label,\n selected: !!value.find(\n (selectedOption: Option) =>\n getOptionValue(selectedOption) === getOptionValue(option),\n ),\n getRootRef(node) {\n if (node) {\n chipsSelectOptions[index] = node;\n }\n },\n onMouseDown(event: React.MouseEvent<HTMLDivElement>) {\n if (option.disabled) {\n return;\n }\n if (onChangeStart) {\n onChangeStart(event, option);\n }\n\n if (!event.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter() {\n setFocusedOptionIndex(index);\n },\n },\n option,\n )}\n </React.Fragment>\n );\n })}\n </CustomSelectDropdown>\n )}\n </>\n );\n};\n"],"names":["ChipsSelect","findIndexAfter","options","startIndex","length","findIndex","option","i","isNotServicePreset","disabled","findIndexBefore","endIndex","result","id","labelledbyId","getRootRef","className","status","icon","dropdownIconProp","onChangeStart","optionsProp","placement","placementProp","closeAfterSelect","selectedBehavior","DEFAULT_SELECTED_BEHAVIOR","emptyText","DEFAULT_EMPTY_TEXT","creatable","fetching","dropdownAutoWidth","forceDropdownPortal","noMaxHeight","filterFn","defaultFilterFn","dropdownTestId","onClose","onOpen","overscrollBehavior","getRef","value","valueProp","defaultValue","inputValue","inputValueProp","defaultInputValue","readOnly","getOptionValue","getOptionValueDefault","getOptionLabel","getOptionLabelDefault","getNewOptionData","getNewOptionDataDefault","renderChip","renderChipDefault","renderOption","renderOptionDefault","onChange","onFocus","onFocusProp","onInputChange","onInputChangeProp","onBlur","onBlurProp","onKeyDown","onKeyDownProp","dropdownOffsetDistance","allowClearButton","clearButtonTestId","restProps","addOptionFromInput","addOption","removeOption","clearOptions","inputRef","inputRefHook","clearInput","opened","setOpened","focusedOption","focusedOptionIndex","setFocusedOption","setFocusedOptionIndex","useChipsSelect","rootRef","useExternRef","dropdownVerticalPlacement","setDropdownVerticalPlacement","React","useState","onDropdownPlacementChange","useCallback","startsWith","dropdownId","useId","dropdownCurrentItemId","undefined","dropdownScrollBoxRef","useRef","handleFocus","event","handleBlur","defaultPrevented","preventDefault","chipsSelectOptions","current","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","beforeIndex","handleKeyDown","key","Keys","ARROW_UP","ARROW_DOWN","ENTER","foundOption","ESCAPE","TAB","useEffect","foundFocusedOptionIndex","onDropdownMouseLeave","handleClickOutside","useGlobalOnClickOutside","openedClassNames","useMemo","includes","clearButtonShown","ChipsInputBase","classNames","after","DropdownIcon","onAddChipOption","onRemoveChipOption","onClear","role","aria-expanded","aria-autocomplete","aria-controls","aria-activedescendant","aria-haspopup","CustomSelectDropdown","data-testid","targetRef","scrollBoxRef","onPlacementChange","onMouseLeave","autoWidth","forcePortal","offsetDistance","aria-labelledby","map","dropdownItemId","isEmptyOptionPreset","Footnote","placeholder","isCreateNewOptionPreset","CustomSelectOption","hovered","onMouseDown","onMouseEnter","actionText","Fragment","children","label","selected","find","selectedOption","node"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Clickable.d.ts","sourceRoot":"","sources":["../../../../src/components/Clickable/Clickable.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,qBAAqB,EAEtB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAiB,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAGL,UAAU,EAEX,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,WAAW,CAC7C,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAC3B,qBAAqB,EACrB,UAAU;CAAG;AA0FjB;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAQnE;AA2CD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,wEAIxB,cAAc,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,SAqB5B,CAAC"}
1
+ {"version":3,"file":"Clickable.d.ts","sourceRoot":"","sources":["../../../../src/components/Clickable/Clickable.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,qBAAqB,EAEtB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAAiB,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAGL,UAAU,EAEX,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,WAAW,CAC7C,SAAQ,kBAAkB,CAAC,CAAC,CAAC,EAC3B,qBAAqB,EACrB,UAAU;CAAG;AA0FjB;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAWnE;AA2CD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,wEAIxB,cAAc,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,SAqB5B,CAAC"}
@@ -108,7 +108,7 @@ const _useState = require("./useState");
108
108
  }));
109
109
  };
110
110
  function checkClickable(props) {
111
- return (props.href !== undefined || props.onClick !== undefined || props.onClickCapture !== undefined || props.Component === 'label') && !props.disabled;
111
+ return (props.href !== undefined || props.onClick !== undefined || props.onClickCapture !== undefined || props.Component === 'a' || props.Component === 'button' || props.Component === 'label' || props.Component === 'input') && !props.disabled;
112
112
  }
113
113
  /**
114
114
  * Определяет правильный компонент и его свойства
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Clickable/Clickable.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport {\n FocusVisibleModeProps,\n useFocusVisibleClassName,\n} from '../../hooks/useFocusVisibleClassName';\nimport { mergeCalls } from '../../lib/mergeCalls';\nimport { clickByKeyboardHandler } from '../../lib/utils';\nimport { RootComponent, RootComponentProps } from '../RootComponent/RootComponent';\nimport {\n ClickableLockStateContext,\n DEFAULT_ACTIVE_EFFECT_DELAY,\n StateProps,\n useState,\n} from './useState';\nimport styles from './Clickable.module.css';\n\nexport interface ClickableProps<T = HTMLElement>\n extends RootComponentProps<T>,\n FocusVisibleModeProps,\n StateProps {}\n\n/**\n * Некликабельный компонент. Отключаем возможность нажимать на компонент.\n */\nconst NonClickable = <T,>({\n href,\n onClick,\n onClickCapture,\n activeClassName,\n hoverClassName,\n hasActive,\n hasHover,\n hovered,\n activated,\n activeEffectDelay,\n ...restProps\n}: ClickableProps<T>) => <RootComponent {...restProps} />;\n\n/**\n * Кликабельный компонент. Добавляем кучу обвесов\n */\nconst RealClickable = <T,>({\n baseClassName,\n children,\n focusVisibleMode = 'inside',\n activeClassName,\n hoverClassName,\n activeEffectDelay = DEFAULT_ACTIVE_EFFECT_DELAY,\n hasHover = true,\n hasActive = true,\n hovered,\n activated,\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n ...restProps\n}: ClickableProps<T>) => {\n const { focusVisible, ...focusEvents } = useFocusVisible();\n const focusVisibleClassNames = useFocusVisibleClassName({ focusVisible, mode: focusVisibleMode });\n\n const { stateClassName, setLockBubblingImmediate, ...stateEvents } = useState({\n activeClassName,\n hoverClassName,\n activeEffectDelay,\n hasHover,\n hasActive,\n hovered,\n activated,\n });\n\n const handlers = mergeCalls(\n focusEvents,\n stateEvents,\n { onKeyDown: clickByKeyboardHandler },\n {\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n },\n );\n\n return (\n <RootComponent\n baseClassName={classNames(\n baseClassName,\n styles['Clickable__realClickable'],\n focusVisibleClassNames,\n stateClassName,\n )}\n {...handlers}\n {...restProps}\n >\n <ClickableLockStateContext.Provider value={setLockBubblingImmediate}>\n {children}\n </ClickableLockStateContext.Provider>\n </RootComponent>\n );\n};\n\n/**\n * Проверяем, является ли компонент кликабельным\n */\nexport function checkClickable<T>(props: ClickableProps<T>): boolean {\n return (\n (props.href !== undefined ||\n props.onClick !== undefined ||\n props.onClickCapture !== undefined ||\n props.Component === 'label') &&\n !props.disabled\n );\n}\n\n/**\n * Определяет правильный компонент и его свойства\n *\n * - если передан Component, используем его\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n */\nfunction component<T>({\n Component,\n onClick,\n onClickCapture,\n href,\n disabled,\n}: RootComponentProps<T>): RootComponentProps<T> {\n if (Component !== undefined) {\n return { Component };\n } else if (href !== undefined) {\n return { 'Component': 'a', 'aria-disabled': disabled };\n } else if (onClick !== undefined || onClickCapture !== undefined) {\n return {\n 'Component': 'div',\n 'role': 'button',\n 'tabIndex': disabled ? undefined : 0,\n 'aria-disabled': disabled,\n };\n }\n\n return {};\n}\n\nconst getUserAgentResetClassName = (Component?: React.ElementType) => {\n if (Component === 'a') {\n return styles.Clickable__resetLinkStyle;\n }\n if (Component === 'button') {\n return styles.Clickable__resetButtonStyle;\n }\n return;\n};\n\n/**\n * Базовый кликабельный корневой компонент.\n *\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n *\n * Отвечает за:\n *\n * - стейты наведения и нажатия\n * - a11y компонентов\n */\nexport const Clickable = <T,>({\n focusVisibleMode = 'inside',\n baseClassName: baseClassNameProp,\n ...restProps\n}: ClickableProps<T>): React.ReactNode => {\n const commonProps = component(restProps);\n const isClickable = checkClickable(restProps);\n const baseClassName = classNames(\n baseClassNameProp,\n getUserAgentResetClassName(commonProps.Component),\n styles['Clickable__host'],\n );\n\n if (isClickable) {\n return (\n <RealClickable\n baseClassName={baseClassName}\n focusVisibleMode={focusVisibleMode}\n {...commonProps}\n {...restProps}\n />\n );\n }\n\n return <NonClickable baseClassName={baseClassName} {...commonProps} {...restProps} />;\n};\n"],"names":["Clickable","checkClickable","NonClickable","href","onClick","onClickCapture","activeClassName","hoverClassName","hasActive","hasHover","hovered","activated","activeEffectDelay","restProps","RootComponent","RealClickable","baseClassName","children","focusVisibleMode","DEFAULT_ACTIVE_EFFECT_DELAY","onPointerEnter","onPointerLeave","onPointerDown","onPointerCancel","onPointerUp","onBlur","onFocus","onKeyDown","useFocusVisible","focusVisible","focusEvents","focusVisibleClassNames","useFocusVisibleClassName","mode","useState","stateClassName","setLockBubblingImmediate","stateEvents","handlers","mergeCalls","clickByKeyboardHandler","classNames","ClickableLockStateContext","Provider","value","props","undefined","Component","disabled","component","getUserAgentResetClassName","baseClassNameProp","commonProps","isClickable"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/Clickable/Clickable.tsx"],"sourcesContent":["import { classNames } from '@vkontakte/vkjs';\nimport { useFocusVisible } from '../../hooks/useFocusVisible';\nimport {\n FocusVisibleModeProps,\n useFocusVisibleClassName,\n} from '../../hooks/useFocusVisibleClassName';\nimport { mergeCalls } from '../../lib/mergeCalls';\nimport { clickByKeyboardHandler } from '../../lib/utils';\nimport { RootComponent, RootComponentProps } from '../RootComponent/RootComponent';\nimport {\n ClickableLockStateContext,\n DEFAULT_ACTIVE_EFFECT_DELAY,\n StateProps,\n useState,\n} from './useState';\nimport styles from './Clickable.module.css';\n\nexport interface ClickableProps<T = HTMLElement>\n extends RootComponentProps<T>,\n FocusVisibleModeProps,\n StateProps {}\n\n/**\n * Некликабельный компонент. Отключаем возможность нажимать на компонент.\n */\nconst NonClickable = <T,>({\n href,\n onClick,\n onClickCapture,\n activeClassName,\n hoverClassName,\n hasActive,\n hasHover,\n hovered,\n activated,\n activeEffectDelay,\n ...restProps\n}: ClickableProps<T>) => <RootComponent {...restProps} />;\n\n/**\n * Кликабельный компонент. Добавляем кучу обвесов\n */\nconst RealClickable = <T,>({\n baseClassName,\n children,\n focusVisibleMode = 'inside',\n activeClassName,\n hoverClassName,\n activeEffectDelay = DEFAULT_ACTIVE_EFFECT_DELAY,\n hasHover = true,\n hasActive = true,\n hovered,\n activated,\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n ...restProps\n}: ClickableProps<T>) => {\n const { focusVisible, ...focusEvents } = useFocusVisible();\n const focusVisibleClassNames = useFocusVisibleClassName({ focusVisible, mode: focusVisibleMode });\n\n const { stateClassName, setLockBubblingImmediate, ...stateEvents } = useState({\n activeClassName,\n hoverClassName,\n activeEffectDelay,\n hasHover,\n hasActive,\n hovered,\n activated,\n });\n\n const handlers = mergeCalls(\n focusEvents,\n stateEvents,\n { onKeyDown: clickByKeyboardHandler },\n {\n onPointerEnter,\n onPointerLeave,\n onPointerDown,\n onPointerCancel,\n onPointerUp,\n onBlur,\n onFocus,\n onKeyDown,\n },\n );\n\n return (\n <RootComponent\n baseClassName={classNames(\n baseClassName,\n styles['Clickable__realClickable'],\n focusVisibleClassNames,\n stateClassName,\n )}\n {...handlers}\n {...restProps}\n >\n <ClickableLockStateContext.Provider value={setLockBubblingImmediate}>\n {children}\n </ClickableLockStateContext.Provider>\n </RootComponent>\n );\n};\n\n/**\n * Проверяем, является ли компонент кликабельным\n */\nexport function checkClickable<T>(props: ClickableProps<T>): boolean {\n return (\n (props.href !== undefined ||\n props.onClick !== undefined ||\n props.onClickCapture !== undefined ||\n props.Component === 'a' ||\n props.Component === 'button' ||\n props.Component === 'label' ||\n props.Component === 'input') &&\n !props.disabled\n );\n}\n\n/**\n * Определяет правильный компонент и его свойства\n *\n * - если передан Component, используем его\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n */\nfunction component<T>({\n Component,\n onClick,\n onClickCapture,\n href,\n disabled,\n}: RootComponentProps<T>): RootComponentProps<T> {\n if (Component !== undefined) {\n return { Component };\n } else if (href !== undefined) {\n return { 'Component': 'a', 'aria-disabled': disabled };\n } else if (onClick !== undefined || onClickCapture !== undefined) {\n return {\n 'Component': 'div',\n 'role': 'button',\n 'tabIndex': disabled ? undefined : 0,\n 'aria-disabled': disabled,\n };\n }\n\n return {};\n}\n\nconst getUserAgentResetClassName = (Component?: React.ElementType) => {\n if (Component === 'a') {\n return styles.Clickable__resetLinkStyle;\n }\n if (Component === 'button') {\n return styles.Clickable__resetButtonStyle;\n }\n return;\n};\n\n/**\n * Базовый кликабельный корневой компонент.\n *\n * - при передаче `href` превратится в `a`,\n * - при передаче `onClick` превратится в `div` c `role=\"button\"` и `tabIndex=\"0\"`.\n * - иначе используется `div`.\n *\n * Отвечает за:\n *\n * - стейты наведения и нажатия\n * - a11y компонентов\n */\nexport const Clickable = <T,>({\n focusVisibleMode = 'inside',\n baseClassName: baseClassNameProp,\n ...restProps\n}: ClickableProps<T>): React.ReactNode => {\n const commonProps = component(restProps);\n const isClickable = checkClickable(restProps);\n const baseClassName = classNames(\n baseClassNameProp,\n getUserAgentResetClassName(commonProps.Component),\n styles['Clickable__host'],\n );\n\n if (isClickable) {\n return (\n <RealClickable\n baseClassName={baseClassName}\n focusVisibleMode={focusVisibleMode}\n {...commonProps}\n {...restProps}\n />\n );\n }\n\n return <NonClickable baseClassName={baseClassName} {...commonProps} {...restProps} />;\n};\n"],"names":["Clickable","checkClickable","NonClickable","href","onClick","onClickCapture","activeClassName","hoverClassName","hasActive","hasHover","hovered","activated","activeEffectDelay","restProps","RootComponent","RealClickable","baseClassName","children","focusVisibleMode","DEFAULT_ACTIVE_EFFECT_DELAY","onPointerEnter","onPointerLeave","onPointerDown","onPointerCancel","onPointerUp","onBlur","onFocus","onKeyDown","useFocusVisible","focusVisible","focusEvents","focusVisibleClassNames","useFocusVisibleClassName","mode","useState","stateClassName","setLockBubblingImmediate","stateEvents","handlers","mergeCalls","clickByKeyboardHandler","classNames","ClickableLockStateContext","Provider","value","props","undefined","Component","disabled","component","getUserAgentResetClassName","baseClassNameProp","commonProps","isClickable"],"mappings":"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"}
@@ -2,23 +2,13 @@ import * as React from 'react';
2
2
  import { type FilterFn } from '../../lib/select';
3
3
  import { TrackerOptionsProps } from '../CustomScrollView/useTrackerVisibility';
4
4
  import { CustomSelectDropdownProps } from '../CustomSelectDropdown/CustomSelectDropdown';
5
- import { CustomSelectOptionProps } from '../CustomSelectOption/CustomSelectOption';
6
5
  import { FormFieldProps } from '../FormField/FormField';
7
6
  import { NativeSelectProps } from '../NativeSelect/NativeSelect';
8
7
  import { SelectType } from '../Select/Select';
9
8
  import { type CustomSelectClearButtonProps } from './CustomSelectClearButton';
10
- type SelectValue = React.SelectHTMLAttributes<HTMLSelectElement>['value'];
11
- export interface CustomSelectOptionInterface {
12
- value: SelectValue;
13
- label: React.ReactElement | string;
14
- disabled?: boolean;
15
- [index: string]: any;
16
- }
17
- export interface CustomSelectRenderOption<T extends CustomSelectOptionInterface> extends CustomSelectOptionProps {
18
- option: T;
19
- }
20
- export type { CustomSelectClearButtonProps };
21
- export interface SelectProps<OptionInterfaceT extends CustomSelectOptionInterface = CustomSelectOptionInterface> extends NativeSelectProps, FormFieldProps, TrackerOptionsProps, Pick<CustomSelectDropdownProps, 'overscrollBehavior' | 'autoHideScrollbar' | 'autoHideScrollbarDelay'> {
9
+ import type { CustomSelectOptionInterface, CustomSelectRenderOption } from './types';
10
+ export type { CustomSelectClearButtonProps, CustomSelectOptionInterface, CustomSelectRenderOption };
11
+ export interface SelectProps<OptionInterfaceT extends CustomSelectOptionInterface = CustomSelectOptionInterface> extends NativeSelectProps, Omit<FormFieldProps, 'maxHeight'>, TrackerOptionsProps, Pick<CustomSelectDropdownProps, 'overscrollBehavior' | 'autoHideScrollbar' | 'autoHideScrollbarDelay'> {
22
12
  /**
23
13
  * ref на внутрений компонент input
24
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"CustomSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CustomSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAmB,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAEL,yBAAyB,EAC1B,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,2BAA2B,CAAC;AASnC,OAAO,KAAK,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAiCrF,YAAY,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,CAAC;AAEpG,MAAM,WAAW,WAAW,CAC1B,gBAAgB,SAAS,2BAA2B,GAAG,2BAA2B,CAClF,SAAQ,iBAAiB,EACvB,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,EACjC,mBAAmB,EACnB,IAAI,CACF,yBAAyB,EACzB,oBAAoB,GAAG,mBAAmB,GAAG,wBAAwB,CACtE;IACH;;OAEG;IACH,iBAAiB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAChD;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC9C,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAClC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,wBAAwB,CAAC,gBAAgB,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACtF;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,EAChB,sBAAsB,GACvB,EAAE;QACD,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC;KACzC,KAAK,KAAK,CAAC,SAAS,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;IAChE;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,gBAAgB,SAAS,2BAA2B,EAC/E,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,GACnC,KAAK,CAAC,SAAS,CAisBjB"}