@skbkontur/react-ui 0.0.0-7feb61cdde → 0.0.0-80c5917afc

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 (379) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +5 -0
  3. package/cjs/components/Autocomplete/Autocomplete.js +18 -4
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.d.ts +1 -1
  6. package/cjs/components/Button/Button.js +7 -2
  7. package/cjs/components/Button/Button.js.map +1 -1
  8. package/cjs/components/Button/Button.styles.js +6 -4
  9. package/cjs/components/Button/Button.styles.js.map +1 -1
  10. package/cjs/components/Button/getInnerLinkTheme.js +2 -3
  11. package/cjs/components/Button/getInnerLinkTheme.js.map +1 -1
  12. package/cjs/components/Calendar/Calendar.styles.js +1 -2
  13. package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
  14. package/cjs/components/Calendar/DayCellView.js +1 -1
  15. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  16. package/cjs/components/Calendar/DayCellView.styles.d.ts +1 -1
  17. package/cjs/components/Calendar/DayCellView.styles.js +4 -4
  18. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  19. package/cjs/components/Checkbox/Checkbox.d.ts +10 -0
  20. package/cjs/components/Checkbox/Checkbox.js +70 -15
  21. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  22. package/cjs/components/Checkbox/Checkbox.md +18 -0
  23. package/cjs/components/Checkbox/Checkbox.mixins.d.ts +2 -0
  24. package/cjs/components/Checkbox/Checkbox.mixins.js +35 -0
  25. package/cjs/components/Checkbox/Checkbox.mixins.js.map +1 -0
  26. package/cjs/components/Checkbox/Checkbox.styles.d.ts +6 -0
  27. package/cjs/components/Checkbox/Checkbox.styles.js +95 -34
  28. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  29. package/cjs/components/ComboBox/ComboBox.md +5 -3
  30. package/cjs/components/CurrencyInput/CurrencyHelper.d.ts +2 -0
  31. package/cjs/components/CurrencyInput/CurrencyHelper.js +21 -6
  32. package/cjs/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  33. package/cjs/components/DateInput/DateInput.d.ts +3 -0
  34. package/cjs/components/DateInput/DateInput.js +11 -3
  35. package/cjs/components/DateInput/DateInput.js.map +1 -1
  36. package/cjs/components/Dropdown/getDropdownTheme.js +3 -1
  37. package/cjs/components/Dropdown/getDropdownTheme.js.map +1 -1
  38. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -1
  39. package/cjs/components/DropdownMenu/DropdownMenu.js +4 -1
  40. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  41. package/cjs/components/DropdownMenu/DropdownMenu.md +28 -0
  42. package/cjs/components/DropdownMenu/getDropdownMenuTheme.js +5 -1
  43. package/cjs/components/DropdownMenu/getDropdownMenuTheme.js.map +1 -1
  44. package/cjs/components/FileUploader/FileUploader.styles.js +3 -2
  45. package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -1
  46. package/cjs/components/GlobalLoader/GlobalLoader.js +6 -2
  47. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  48. package/cjs/components/GlobalLoader/GlobalLoaderView.d.ts +2 -1
  49. package/cjs/components/GlobalLoader/GlobalLoaderView.js +6 -4
  50. package/cjs/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
  51. package/cjs/components/Input/Input.d.ts +1 -5
  52. package/cjs/components/Input/Input.js +4 -5
  53. package/cjs/components/Input/Input.js.map +1 -1
  54. package/cjs/components/Input/Input.styles.js +3 -2
  55. package/cjs/components/Input/Input.styles.js.map +1 -1
  56. package/cjs/components/Kebab/Kebab.d.ts +1 -1
  57. package/cjs/components/Kebab/Kebab.js +6 -1
  58. package/cjs/components/Kebab/Kebab.js.map +1 -1
  59. package/cjs/components/Kebab/Kebab.md +28 -0
  60. package/cjs/components/Link/Link.js +4 -2
  61. package/cjs/components/Link/Link.js.map +1 -1
  62. package/cjs/components/Link/Link.mixins.d.ts +1 -2
  63. package/cjs/components/Link/Link.mixins.js +5 -16
  64. package/cjs/components/Link/Link.mixins.js.map +1 -1
  65. package/cjs/components/Link/Link.styles.d.ts +2 -0
  66. package/cjs/components/Link/Link.styles.js +58 -38
  67. package/cjs/components/Link/Link.styles.js.map +1 -1
  68. package/cjs/components/Modal/ModalFooter.js +1 -1
  69. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  70. package/cjs/components/Modal/ModalHeader.js +1 -1
  71. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  72. package/cjs/components/Radio/Radio.styles.js +6 -2
  73. package/cjs/components/Radio/Radio.styles.js.map +1 -1
  74. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +3 -2
  75. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -1
  76. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  77. package/cjs/components/Select/Select.d.ts +7 -5
  78. package/cjs/components/Select/Select.js +15 -6
  79. package/cjs/components/Select/Select.js.map +1 -1
  80. package/cjs/components/Select/Select.styles.js +3 -2
  81. package/cjs/components/Select/Select.styles.js.map +1 -1
  82. package/cjs/components/Select/selectTheme.js +4 -1
  83. package/cjs/components/Select/selectTheme.js.map +1 -1
  84. package/cjs/components/Tabs/Tab.d.ts +1 -0
  85. package/cjs/components/Tabs/Tab.js +15 -1
  86. package/cjs/components/Tabs/Tab.js.map +1 -1
  87. package/cjs/components/Tabs/Tab.styles.d.ts +9 -3
  88. package/cjs/components/Tabs/Tab.styles.js +106 -68
  89. package/cjs/components/Tabs/Tab.styles.js.map +1 -1
  90. package/cjs/components/Tabs/Tabs.d.ts +8 -2
  91. package/cjs/components/Tabs/Tabs.js +15 -1
  92. package/cjs/components/Tabs/Tabs.js.map +1 -1
  93. package/cjs/components/Tabs/Tabs.md +32 -0
  94. package/cjs/components/Tabs/Tabs.styles.d.ts +3 -1
  95. package/cjs/components/Tabs/Tabs.styles.js +23 -7
  96. package/cjs/components/Tabs/Tabs.styles.js.map +1 -1
  97. package/cjs/components/Tabs/TabsContext.d.ts +2 -1
  98. package/cjs/components/Tabs/TabsContext.js +2 -0
  99. package/cjs/components/Tabs/TabsContext.js.map +1 -1
  100. package/cjs/components/Tabs/helpers.d.ts +6 -0
  101. package/cjs/components/Tabs/helpers.js +30 -0
  102. package/cjs/components/Tabs/helpers.js.map +1 -0
  103. package/cjs/components/Textarea/Textarea.styles.js +2 -2
  104. package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
  105. package/cjs/components/Toast/ToastView.styles.js +2 -2
  106. package/cjs/components/Toast/ToastView.styles.js.map +1 -1
  107. package/cjs/components/Toggle/Toggle.d.ts +11 -1
  108. package/cjs/components/Toggle/Toggle.js +102 -2
  109. package/cjs/components/Toggle/Toggle.js.map +1 -1
  110. package/cjs/components/Toggle/Toggle.md +16 -2
  111. package/cjs/components/Toggle/Toggle.mixins.d.ts +7 -0
  112. package/cjs/components/Toggle/Toggle.mixins.js +90 -0
  113. package/cjs/components/Toggle/Toggle.mixins.js.map +1 -0
  114. package/cjs/components/Toggle/Toggle.styles.d.ts +21 -1
  115. package/cjs/components/Toggle/Toggle.styles.js +172 -56
  116. package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
  117. package/cjs/components/TokenInput/TokenInput.d.ts +2 -0
  118. package/cjs/components/TokenInput/TokenInput.js +8 -2
  119. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  120. package/cjs/components/TokenInput/TokenInput.md +26 -35
  121. package/cjs/components/TokenInput/TokenInput.styles.js +2 -1
  122. package/cjs/components/TokenInput/TokenInput.styles.js.map +1 -1
  123. package/cjs/components/TokenInput/TokenInputMenu.d.ts +7 -0
  124. package/cjs/components/TokenInput/TokenInputMenu.js +9 -1
  125. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  126. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +1 -1
  127. package/cjs/components/TooltipMenu/TooltipMenu.js +8 -2
  128. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  129. package/cjs/components/TooltipMenu/TooltipMenu.md +28 -0
  130. package/cjs/internal/CloseButtonIcon/CloseButtonIcon.styles.js +2 -1
  131. package/cjs/internal/CloseButtonIcon/CloseButtonIcon.styles.js.map +1 -1
  132. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
  133. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +10 -1
  134. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  135. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -0
  136. package/cjs/internal/CustomComboBox/ComboBoxView.js +11 -3
  137. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  138. package/cjs/internal/CustomComboBox/CustomComboBox.js +13 -11
  139. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  140. package/cjs/internal/DateSelect/DateSelect.js +1 -1
  141. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  142. package/cjs/internal/DateSelect/DateSelect.styles.d.ts +3 -0
  143. package/cjs/internal/DateSelect/DateSelect.styles.js +15 -3
  144. package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
  145. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +3 -2
  146. package/cjs/internal/DropdownContainer/DropdownContainer.js +6 -1
  147. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  148. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -4
  149. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +7 -5
  150. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  151. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  152. package/cjs/internal/InputLikeText/InputLikeText.js +16 -4
  153. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  154. package/cjs/internal/InternalMenu/InternalMenu.d.ts +13 -4
  155. package/cjs/internal/InternalMenu/InternalMenu.js +15 -5
  156. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  157. package/cjs/internal/InternalMenu/InternalMenu.styles.d.ts +1 -0
  158. package/cjs/internal/InternalMenu/InternalMenu.styles.js +13 -7
  159. package/cjs/internal/InternalMenu/InternalMenu.styles.js.map +1 -1
  160. package/cjs/internal/InternalMenu/isIconPaddingEnabled.d.ts +2 -0
  161. package/cjs/internal/InternalMenu/isIconPaddingEnabled.js +9 -0
  162. package/cjs/internal/InternalMenu/isIconPaddingEnabled.js.map +1 -0
  163. package/cjs/internal/Menu/Menu.d.ts +42 -8
  164. package/cjs/internal/Menu/Menu.js +272 -78
  165. package/cjs/internal/Menu/Menu.js.map +1 -1
  166. package/cjs/internal/Menu/Menu.styles.d.ts +6 -1
  167. package/cjs/internal/Menu/Menu.styles.js +42 -8
  168. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  169. package/cjs/internal/MobilePopup/MobilePopup.d.ts +2 -2
  170. package/cjs/internal/MobilePopup/MobilePopup.js +1 -1
  171. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  172. package/cjs/internal/Popup/Popup.d.ts +7 -2
  173. package/cjs/internal/Popup/Popup.js +13 -3
  174. package/cjs/internal/Popup/Popup.js.map +1 -1
  175. package/cjs/internal/PopupMenu/PopupMenu.d.ts +4 -1
  176. package/cjs/internal/PopupMenu/PopupMenu.js +29 -4
  177. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  178. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  179. package/cjs/internal/themes/DefaultTheme.d.ts +114 -17
  180. package/cjs/internal/themes/DefaultTheme.js +244 -68
  181. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  182. package/cjs/internal/themes/Theme2022.d.ts +19 -3
  183. package/cjs/internal/themes/Theme2022.js +33 -13
  184. package/cjs/internal/themes/Theme2022.js.map +1 -1
  185. package/cjs/internal/themes/Theme2022Dark.d.ts +0 -4
  186. package/cjs/internal/themes/Theme2022Dark.js +3 -14
  187. package/cjs/internal/themes/Theme2022Dark.js.map +1 -1
  188. package/cjs/typings/html.d.ts +0 -1
  189. package/components/Autocomplete/Autocomplete/Autocomplete.js +13 -3
  190. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  191. package/components/Autocomplete/Autocomplete.d.ts +5 -0
  192. package/components/Button/Button/Button.js +2 -0
  193. package/components/Button/Button/Button.js.map +1 -1
  194. package/components/Button/Button.d.ts +1 -1
  195. package/components/Button/Button.styles/Button.styles.js +2 -2
  196. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  197. package/components/Button/getInnerLinkTheme/getInnerLinkTheme.js +2 -3
  198. package/components/Button/getInnerLinkTheme/getInnerLinkTheme.js.map +1 -1
  199. package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
  200. package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
  201. package/components/Calendar/DayCellView/DayCellView.js +1 -1
  202. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  203. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +2 -2
  204. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  205. package/components/Calendar/DayCellView.styles.d.ts +1 -1
  206. package/components/Checkbox/Checkbox/Checkbox.js +56 -8
  207. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  208. package/components/Checkbox/Checkbox.d.ts +10 -0
  209. package/components/Checkbox/Checkbox.md +18 -0
  210. package/components/Checkbox/Checkbox.mixins/Checkbox.mixins.js +17 -0
  211. package/components/Checkbox/Checkbox.mixins/Checkbox.mixins.js.map +1 -0
  212. package/components/Checkbox/Checkbox.mixins/package.json +6 -0
  213. package/components/Checkbox/Checkbox.mixins.d.ts +2 -0
  214. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +39 -25
  215. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  216. package/components/Checkbox/Checkbox.styles.d.ts +6 -0
  217. package/components/ComboBox/ComboBox.md +5 -3
  218. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js +32 -4
  219. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js.map +1 -1
  220. package/components/CurrencyInput/CurrencyHelper.d.ts +2 -0
  221. package/components/DateInput/DateInput/DateInput.js +5 -1
  222. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  223. package/components/DateInput/DateInput.d.ts +3 -0
  224. package/components/Dropdown/getDropdownTheme/getDropdownTheme.js +3 -1
  225. package/components/Dropdown/getDropdownTheme/getDropdownTheme.js.map +1 -1
  226. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -0
  227. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  228. package/components/DropdownMenu/DropdownMenu.d.ts +1 -1
  229. package/components/DropdownMenu/DropdownMenu.md +28 -0
  230. package/components/DropdownMenu/getDropdownMenuTheme/getDropdownMenuTheme.js +5 -1
  231. package/components/DropdownMenu/getDropdownMenuTheme/getDropdownMenuTheme.js.map +1 -1
  232. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +1 -1
  233. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -1
  234. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +5 -1
  235. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  236. package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js +6 -2
  237. package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js.map +1 -1
  238. package/components/GlobalLoader/GlobalLoaderView.d.ts +2 -1
  239. package/components/Input/Input/Input.js +3 -1
  240. package/components/Input/Input/Input.js.map +1 -1
  241. package/components/Input/Input.d.ts +1 -5
  242. package/components/Input/Input.styles/Input.styles.js +2 -2
  243. package/components/Input/Input.styles/Input.styles.js.map +1 -1
  244. package/components/Kebab/Kebab/Kebab.js +4 -1
  245. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  246. package/components/Kebab/Kebab.d.ts +1 -1
  247. package/components/Kebab/Kebab.md +28 -0
  248. package/components/Link/Link/Link.js +4 -4
  249. package/components/Link/Link/Link.js.map +1 -1
  250. package/components/Link/Link.mixins/Link.mixins.js +2 -5
  251. package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
  252. package/components/Link/Link.mixins.d.ts +1 -2
  253. package/components/Link/Link.styles/Link.styles.js +29 -21
  254. package/components/Link/Link.styles/Link.styles.js.map +1 -1
  255. package/components/Link/Link.styles.d.ts +2 -0
  256. package/components/Modal/ModalFooter/ModalFooter.js +1 -1
  257. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  258. package/components/Modal/ModalHeader/ModalHeader.js +1 -1
  259. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  260. package/components/Radio/Radio.styles/Radio.styles.js +2 -2
  261. package/components/Radio/Radio.styles/Radio.styles.js.map +1 -1
  262. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  263. package/components/ScrollContainer/ScrollContainer.d.ts +3 -2
  264. package/components/Select/Select/Select.js +15 -7
  265. package/components/Select/Select/Select.js.map +1 -1
  266. package/components/Select/Select.d.ts +7 -5
  267. package/components/Select/Select.styles/Select.styles.js +1 -1
  268. package/components/Select/Select.styles/Select.styles.js.map +1 -1
  269. package/components/Select/selectTheme/selectTheme.js +3 -1
  270. package/components/Select/selectTheme/selectTheme.js.map +1 -1
  271. package/components/Tabs/Tab/Tab.js +3 -3
  272. package/components/Tabs/Tab/Tab.js.map +1 -1
  273. package/components/Tabs/Tab.d.ts +1 -0
  274. package/components/Tabs/Tab.styles/Tab.styles.js +52 -23
  275. package/components/Tabs/Tab.styles/Tab.styles.js.map +1 -1
  276. package/components/Tabs/Tab.styles.d.ts +9 -3
  277. package/components/Tabs/Tabs/Tabs.js +11 -3
  278. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  279. package/components/Tabs/Tabs.d.ts +8 -2
  280. package/components/Tabs/Tabs.md +32 -0
  281. package/components/Tabs/Tabs.styles/Tabs.styles.js +15 -4
  282. package/components/Tabs/Tabs.styles/Tabs.styles.js.map +1 -1
  283. package/components/Tabs/Tabs.styles.d.ts +3 -1
  284. package/components/Tabs/TabsContext/TabsContext.js +1 -0
  285. package/components/Tabs/TabsContext/TabsContext.js.map +1 -1
  286. package/components/Tabs/TabsContext.d.ts +2 -1
  287. package/components/Tabs/helpers/helpers.js +25 -0
  288. package/components/Tabs/helpers/helpers.js.map +1 -0
  289. package/components/Tabs/helpers/package.json +6 -0
  290. package/components/Tabs/helpers.d.ts +6 -0
  291. package/components/Textarea/Textarea.styles/Textarea.styles.js +1 -1
  292. package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
  293. package/components/Toast/ToastView.styles/ToastView.styles.js +1 -1
  294. package/components/Toast/ToastView.styles/ToastView.styles.js.map +1 -1
  295. package/components/Toggle/Toggle/Toggle.js +112 -9
  296. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  297. package/components/Toggle/Toggle.d.ts +11 -1
  298. package/components/Toggle/Toggle.md +16 -2
  299. package/components/Toggle/Toggle.mixins/Toggle.mixins.js +35 -0
  300. package/components/Toggle/Toggle.mixins/Toggle.mixins.js.map +1 -0
  301. package/components/Toggle/Toggle.mixins/package.json +6 -0
  302. package/components/Toggle/Toggle.mixins.d.ts +7 -0
  303. package/components/Toggle/Toggle.styles/Toggle.styles.js +85 -31
  304. package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
  305. package/components/Toggle/Toggle.styles.d.ts +21 -1
  306. package/components/TokenInput/TokenInput/TokenInput.js +9 -3
  307. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  308. package/components/TokenInput/TokenInput.d.ts +2 -0
  309. package/components/TokenInput/TokenInput.md +26 -35
  310. package/components/TokenInput/TokenInput.styles/TokenInput.styles.js +1 -1
  311. package/components/TokenInput/TokenInput.styles/TokenInput.styles.js.map +1 -1
  312. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +1 -0
  313. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  314. package/components/TokenInput/TokenInputMenu.d.ts +7 -0
  315. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +7 -2
  316. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  317. package/components/TooltipMenu/TooltipMenu.d.ts +1 -1
  318. package/components/TooltipMenu/TooltipMenu.md +28 -0
  319. package/internal/CloseButtonIcon/CloseButtonIcon.styles/CloseButtonIcon.styles.js +1 -1
  320. package/internal/CloseButtonIcon/CloseButtonIcon.styles/CloseButtonIcon.styles.js.map +1 -1
  321. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +5 -0
  322. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  323. package/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
  324. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +10 -3
  325. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  326. package/internal/CustomComboBox/ComboBoxView.d.ts +4 -0
  327. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +23 -20
  328. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  329. package/internal/DateSelect/DateSelect/DateSelect.js +2 -1
  330. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  331. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +5 -2
  332. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
  333. package/internal/DateSelect/DateSelect.styles.d.ts +3 -0
  334. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +2 -0
  335. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  336. package/internal/DropdownContainer/DropdownContainer.d.ts +3 -2
  337. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +5 -4
  338. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  339. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -4
  340. package/internal/InputLikeText/InputLikeText/InputLikeText.js +20 -8
  341. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  342. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  343. package/internal/InternalMenu/InternalMenu/InternalMenu.js +11 -6
  344. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  345. package/internal/InternalMenu/InternalMenu.d.ts +13 -4
  346. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js +10 -7
  347. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js.map +1 -1
  348. package/internal/InternalMenu/InternalMenu.styles.d.ts +1 -0
  349. package/internal/InternalMenu/isIconPaddingEnabled/isIconPaddingEnabled.js +6 -0
  350. package/internal/InternalMenu/isIconPaddingEnabled/isIconPaddingEnabled.js.map +1 -0
  351. package/internal/InternalMenu/isIconPaddingEnabled/package.json +6 -0
  352. package/internal/InternalMenu/isIconPaddingEnabled.d.ts +2 -0
  353. package/internal/Menu/Menu/Menu.js +197 -42
  354. package/internal/Menu/Menu/Menu.js.map +1 -1
  355. package/internal/Menu/Menu.d.ts +42 -8
  356. package/internal/Menu/Menu.styles/Menu.styles.js +20 -5
  357. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  358. package/internal/Menu/Menu.styles.d.ts +6 -1
  359. package/internal/MobilePopup/MobilePopup/MobilePopup.js +1 -0
  360. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  361. package/internal/MobilePopup/MobilePopup.d.ts +2 -2
  362. package/internal/Popup/Popup/Popup.js +9 -3
  363. package/internal/Popup/Popup/Popup.js.map +1 -1
  364. package/internal/Popup/Popup.d.ts +7 -2
  365. package/internal/PopupMenu/PopupMenu/PopupMenu.js +27 -5
  366. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  367. package/internal/PopupMenu/PopupMenu.d.ts +4 -1
  368. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  369. package/internal/themes/DefaultTheme/DefaultTheme.js +320 -88
  370. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  371. package/internal/themes/DefaultTheme.d.ts +114 -17
  372. package/internal/themes/Theme2022/Theme2022.js +59 -44
  373. package/internal/themes/Theme2022/Theme2022.js.map +1 -1
  374. package/internal/themes/Theme2022.d.ts +19 -3
  375. package/internal/themes/Theme2022Dark/Theme2022Dark.js +1 -18
  376. package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
  377. package/internal/themes/Theme2022Dark.d.ts +0 -4
  378. package/package.json +3 -3
  379. package/typings/html.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["TokenInputMenu.tsx"],"names":["TokenInputMenu","menu","getMenuRef","getPopupMargin","paddingY","parseInt","theme","tokenInputPaddingY","outlineWidth","controlOutlineWidth","marginY","tokenMarginY","menuRef","node","render","ThemeFactory","create","popupMargin","popupBackground","tokenInputMenuPopupBg","renderMain","props","loading","maxMenuHeight","renderTotalCount","totalCount","opened","items","renderNotFound","renderItem","onValueChange","renderAddButton","anchorElement","menuWidth","menuAlign","TokenInputDataTids","tokenInputMenu","undefined","React","Component","__KONTUR_REACT_UI__"],"mappings":"0PAAA;;AAEA;AACA;AACA;;;AAGA;;AAEA,0C;;;;;;;;AAQaA,c;;;;;AAKHC,IAAAA,I,GAAoB,I;;;;;;;;;;;;;;;;;;;;;;;;;AAyBrBC,IAAAA,U,GAAa,oBAAkB,MAAKD,IAAvB,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDZE,IAAAA,c,GAAiB,YAAc;AACrC,UAAMC,QAAQ,GAAGC,QAAQ,CAAC,MAAKC,KAAL,CAAWC,kBAAZ,EAAgC,EAAhC,CAAR,IAA+C,CAAhE;AACA,UAAMC,YAAY,GAAGH,QAAQ,CAAC,MAAKC,KAAL,CAAWG,mBAAZ,EAAiC,EAAjC,CAAR,IAAgD,CAArE;AACA,UAAMC,OAAO,GAAGL,QAAQ,CAAC,MAAKC,KAAL,CAAWK,YAAZ,EAA0B,EAA1B,CAAR,IAAyC,CAAzD;;AAEA,aAAOP,QAAQ,GAAGI,YAAX,GAA0BE,OAAjC;AACD,K;;AAEOE,IAAAA,O,GAAU,UAACC,IAAD,UAAgB,MAAKZ,IAAL,GAAYY,IAA5B,E,4DA/EXC,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACR,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,6BAAC,0BAAD,CAAc,QAAd,IACE,KAAK,EAAES,2BAAaC,MAAb,CACL,EACEC,WAAW,EAAE,MAAI,CAACd,cAAL,KAAwB,IADvC,EAEEe,eAAe,EAAE,MAAI,CAACZ,KAAL,CAAWa,qBAF9B,EADK,EAKLb,KALK,CADT,IASG,MAAI,CAACc,UAAL,EATH,CADF,CAaD,CAhBH,CADF,CAoBD,C,QAIOA,U,GAAR,sBAAqB,CACnB,kBAcI,KAAKC,KAdT,CACEC,OADF,eACEA,OADF,CAEEC,aAFF,eAEEA,aAFF,CAGEC,gBAHF,eAGEA,gBAHF,CAIEC,UAJF,eAIEA,UAJF,CAKEC,MALF,eAKEA,MALF,CAMEC,KANF,eAMEA,KANF,CAOEC,cAPF,eAOEA,cAPF,CAQEC,UARF,eAQEA,UARF,CASEC,aATF,eASEA,aATF,CAUEC,eAVF,eAUEA,eAVF,CAWEC,aAXF,eAWEA,aAXF,CAYEC,SAZF,eAYEA,SAZF,CAaEC,SAbF,eAaEA,SAbF,CAgBA,oBACE,6BAAC,YAAD,IACE,YAAUC,+BAAmBC,cAD/B,EAEE,MAAM,EAAE,CAAC,CAACV,MAFZ,EAGE,SAAS,EAAE,CAAC,aAAD,EAAgB,UAAhB,CAHb,EAIE,aAAa,EAAEM,aAJjB,EAKE,WAAW,EAAEE,SAAS,KAAK,MAAd,GAAuB,CAAvB,GAA2B,CAL1C,EAME,MAAM,EAAEA,SAAS,KAAK,MAAd,GAAuB,CAAvB,GAA2BG,SANrC,EAOE,SAAS,MAPX,EAQE,KAAK,EAAEH,SAAS,KAAK,QAAd,GAAyB,MAAzB,GAAkCD,SAR3C,EASE,aAAa,MATf,iBAWE,6BAAC,4BAAD,IACE,KAAK,EAAEN,KADT,EAEE,OAAO,EAAEL,OAFX,EAGE,aAAa,EAAEC,aAHjB,EAIE,aAAa,EAAEO,aAJjB,EAKE,MAAM,EAAEJ,MALV,EAME,OAAO,EAAE,KAAKd,OANhB,EAOE,gBAAgB,EAAEY,gBAPpB,EAQE,UAAU,EAAEK,UARd,EASE,cAAc,EAAED,cATlB,EAUE,UAAU,EAAEH,UAVd,EAWE,eAAe,EAAEM,eAXnB,GAXF,CADF,CA2BD,C,yBA5E6CO,eAAMC,S,0CAAzCvC,c,CACGwC,mB,GAAsB,gB","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Popup, PopupProps } from '../../internal/Popup';\nimport { ComboBoxMenu, ComboBoxMenuProps } from '../../internal/CustomComboBox';\nimport { Menu } from '../../internal/Menu';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { TokenInputDataTids, TokenInputMenuAlign, TokenInputProps } from './TokenInput';\n\nexport interface TokenInputMenuProps<T> extends ComboBoxMenuProps<T> {\n anchorElement: PopupProps['anchorElement'];\n menuWidth: TokenInputProps<string>['menuWidth'];\n menuAlign: TokenInputMenuAlign;\n}\n\nexport class TokenInputMenu<T = string> extends React.Component<TokenInputMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInputMenu';\n\n private theme!: Theme;\n\n private menu: Menu | null = null;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: this.getPopupMargin() + 'px',\n popupBackground: this.theme.tokenInputMenuPopupBg,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getMenuRef = (): any | null => this.menu;\n\n private renderMain() {\n const {\n loading,\n maxMenuHeight,\n renderTotalCount,\n totalCount,\n opened,\n items,\n renderNotFound,\n renderItem,\n onValueChange,\n renderAddButton,\n anchorElement,\n menuWidth,\n menuAlign,\n } = this.props;\n\n return (\n <Popup\n data-tid={TokenInputDataTids.tokenInputMenu}\n opened={!!opened}\n positions={['bottom left', 'top left']}\n anchorElement={anchorElement}\n popupOffset={menuAlign === 'left' ? 0 : 5}\n margin={menuAlign === 'left' ? 1 : undefined}\n hasShadow\n width={menuAlign === 'cursor' ? 'auto' : menuWidth}\n withoutMobile\n >\n <ComboBoxMenu\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={onValueChange}\n opened={opened}\n refMenu={this.menuRef}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n totalCount={totalCount}\n renderAddButton={renderAddButton}\n />\n </Popup>\n );\n }\n\n private getPopupMargin = (): number => {\n const paddingY = parseInt(this.theme.tokenInputPaddingY, 10) || 0;\n const outlineWidth = parseInt(this.theme.controlOutlineWidth, 10) || 0;\n const marginY = parseInt(this.theme.tokenMarginY, 10) || 0;\n\n return paddingY + outlineWidth + marginY;\n };\n\n private menuRef = (node: any) => (this.menu = node);\n}\n"]}
1
+ {"version":3,"sources":["TokenInputMenu.tsx"],"names":["TokenInputMenu","menu","getMenuRef","getPopupMargin","paddingY","parseInt","theme","tokenInputPaddingY","outlineWidth","controlOutlineWidth","marginY","tokenMarginY","menuRef","node","render","ThemeFactory","create","popupMargin","popupBackground","tokenInputMenuPopupBg","renderMain","props","loading","maxMenuHeight","renderTotalCount","totalCount","opened","items","renderNotFound","renderItem","onValueChange","renderAddButton","anchorElement","menuWidth","menuAlign","popupMenuId","TokenInputDataTids","tokenInputMenu","undefined","React","Component","__KONTUR_REACT_UI__"],"mappings":"0PAAA;;;AAGA;AACA;AACA;;;AAGA;;AAEA,0C;;;;;;;;;;;;;;AAcaA,c;;;;;AAKHC,IAAAA,I,GAAoB,I;;;;;;;;;;;;;;;;;;;;;;;;;AAyBrBC,IAAAA,U,GAAa,oBAAkB,MAAKD,IAAvB,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDZE,IAAAA,c,GAAiB,YAAc;AACrC,UAAMC,QAAQ,GAAGC,QAAQ,CAAC,MAAKC,KAAL,CAAWC,kBAAZ,EAAgC,EAAhC,CAAR,IAA+C,CAAhE;AACA,UAAMC,YAAY,GAAGH,QAAQ,CAAC,MAAKC,KAAL,CAAWG,mBAAZ,EAAiC,EAAjC,CAAR,IAAgD,CAArE;AACA,UAAMC,OAAO,GAAGL,QAAQ,CAAC,MAAKC,KAAL,CAAWK,YAAZ,EAA0B,EAA1B,CAAR,IAAyC,CAAzD;;AAEA,aAAOP,QAAQ,GAAGI,YAAX,GAA0BE,OAAjC;AACD,K;;AAEOE,IAAAA,O,GAAU,UAACC,IAAD,UAAgB,MAAKZ,IAAL,GAAYY,IAA5B,E,4DAhFXC,M,GAAP,kBAAgB,mBACd,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAACR,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,6BAAC,0BAAD,CAAc,QAAd,IACE,KAAK,EAAES,2BAAaC,MAAb,CACL,EACEC,WAAW,EAAE,MAAI,CAACd,cAAL,KAAwB,IADvC,EAEEe,eAAe,EAAE,MAAI,CAACZ,KAAL,CAAWa,qBAF9B,EADK,EAKLb,KALK,CADT,IASG,MAAI,CAACc,UAAL,EATH,CADF,CAaD,CAhBH,CADF,CAoBD,C,QAIOA,U,GAAR,sBAAqB,CACnB,kBAcI,KAAKC,KAdT,CACEC,OADF,eACEA,OADF,CAEEC,aAFF,eAEEA,aAFF,CAGEC,gBAHF,eAGEA,gBAHF,CAIEC,UAJF,eAIEA,UAJF,CAKEC,MALF,eAKEA,MALF,CAMEC,KANF,eAMEA,KANF,CAOEC,cAPF,eAOEA,cAPF,CAQEC,UARF,eAQEA,UARF,CASEC,aATF,eASEA,aATF,CAUEC,eAVF,eAUEA,eAVF,CAWEC,aAXF,eAWEA,aAXF,CAYEC,SAZF,eAYEA,SAZF,CAaEC,SAbF,eAaEA,SAbF,CAgBA,oBACE,6BAAC,YAAD,IACE,EAAE,EAAE,KAAKb,KAAL,CAAWc,WADjB,EAEE,YAAUC,+BAAmBC,cAF/B,EAGE,MAAM,EAAE,CAAC,CAACX,MAHZ,EAIE,SAAS,EAAE,CAAC,aAAD,EAAgB,UAAhB,CAJb,EAKE,aAAa,EAAEM,aALjB,EAME,WAAW,EAAEE,SAAS,KAAK,MAAd,GAAuB,CAAvB,GAA2B,CAN1C,EAOE,MAAM,EAAEA,SAAS,KAAK,MAAd,GAAuB,CAAvB,GAA2BI,SAPrC,EAQE,SAAS,MARX,EASE,KAAK,EAAEJ,SAAS,KAAK,QAAd,GAAyB,MAAzB,GAAkCD,SAT3C,EAUE,aAAa,MAVf,iBAYE,6BAAC,4BAAD,IACE,KAAK,EAAEN,KADT,EAEE,OAAO,EAAEL,OAFX,EAGE,aAAa,EAAEC,aAHjB,EAIE,aAAa,EAAEO,aAJjB,EAKE,MAAM,EAAEJ,MALV,EAME,OAAO,EAAE,KAAKd,OANhB,EAOE,gBAAgB,EAAEY,gBAPpB,EAQE,UAAU,EAAEK,UARd,EASE,cAAc,EAAED,cATlB,EAUE,UAAU,EAAEH,UAVd,EAWE,eAAe,EAAEM,eAXnB,GAZF,CADF,CA4BD,C,yBA7E6CQ,eAAMC,S,0CAAzCxC,c,CACGyC,mB,GAAsB,gB","sourcesContent":["import React from 'react';\n\nimport { HTMLProps } from '../../typings/html';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Popup, PopupProps } from '../../internal/Popup';\nimport { ComboBoxMenu, ComboBoxMenuProps } from '../../internal/CustomComboBox';\nimport { Menu } from '../../internal/Menu';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { TokenInputDataTids, TokenInputMenuAlign, TokenInputProps } from './TokenInput';\n\nexport interface TokenInputMenuProps<T> extends ComboBoxMenuProps<T> {\n anchorElement: PopupProps['anchorElement'];\n menuWidth: TokenInputProps<string>['menuWidth'];\n menuAlign: TokenInputMenuAlign;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n}\n\nexport class TokenInputMenu<T = string> extends React.Component<TokenInputMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'TokenInputMenu';\n\n private theme!: Theme;\n\n private menu: Menu | null = null;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupMargin: this.getPopupMargin() + 'px',\n popupBackground: this.theme.tokenInputMenuPopupBg,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getMenuRef = (): any | null => this.menu;\n\n private renderMain() {\n const {\n loading,\n maxMenuHeight,\n renderTotalCount,\n totalCount,\n opened,\n items,\n renderNotFound,\n renderItem,\n onValueChange,\n renderAddButton,\n anchorElement,\n menuWidth,\n menuAlign,\n } = this.props;\n\n return (\n <Popup\n id={this.props.popupMenuId}\n data-tid={TokenInputDataTids.tokenInputMenu}\n opened={!!opened}\n positions={['bottom left', 'top left']}\n anchorElement={anchorElement}\n popupOffset={menuAlign === 'left' ? 0 : 5}\n margin={menuAlign === 'left' ? 1 : undefined}\n hasShadow\n width={menuAlign === 'cursor' ? 'auto' : menuWidth}\n withoutMobile\n >\n <ComboBoxMenu\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={onValueChange}\n opened={opened}\n refMenu={this.menuRef}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n totalCount={totalCount}\n renderAddButton={renderAddButton}\n />\n </Popup>\n );\n }\n\n private getPopupMargin = (): number => {\n const paddingY = parseInt(this.theme.tokenInputPaddingY, 10) || 0;\n const outlineWidth = parseInt(this.theme.controlOutlineWidth, 10) || 0;\n const marginY = parseInt(this.theme.tokenMarginY, 10) || 0;\n\n return paddingY + outlineWidth + marginY;\n };\n\n private menuRef = (node: any) => (this.menu = node);\n}\n"]}
@@ -5,7 +5,7 @@ import { MenuHeaderProps } from '../MenuHeader';
5
5
  import { PopupPositionsType } from '../../internal/Popup';
6
6
  import { CommonProps } from '../../internal/CommonWrapper';
7
7
  export declare type TooltipMenuChildType = React.ReactElement<MenuItemProps | unknown | MenuHeaderProps>;
8
- export interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {
8
+ export interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'preventIconsOffset'> {
9
9
  children?: TooltipMenuChildType | TooltipMenuChildType[];
10
10
  /** Максимальная высота меню */
11
11
  menuMaxHeight?: number | string;
@@ -48,6 +48,8 @@ var _createPropsGetter = require("../../lib/createPropsGetter");var _class, _cla
48
48
 
49
49
 
50
50
 
51
+
52
+
51
53
 
52
54
 
53
55
 
@@ -97,7 +99,8 @@ TooltipMenu = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/f
97
99
  {
98
100
  popupPinOffset: theme.tooltipMenuPinOffset,
99
101
  popupMargin: theme.tooltipMenuMargin,
100
- popupPinSize: theme.tooltipMenuPinSize },
102
+ popupPinSize: theme.tooltipMenuPinSize,
103
+ menuScrollContainerContentWrapperPaddingY: theme.menuLegacyPaddingY },
101
104
 
102
105
  theme) },
103
106
 
@@ -115,6 +118,8 @@ TooltipMenu = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/f
115
118
  return null;
116
119
  }
117
120
 
121
+ var _this$getProps = this.getProps(),disableAnimations = _this$getProps.disableAnimations;
122
+
118
123
  return /*#__PURE__*/(
119
124
  _react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/
120
125
  _react.default.createElement(_PopupMenu.PopupMenu, {
@@ -124,11 +129,12 @@ TooltipMenu = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/f
124
129
  caption: this.props.caption,
125
130
  header: this.props.header,
126
131
  footer: this.props.footer,
132
+ preventIconsOffset: this.props.preventIconsOffset,
127
133
  positions: this.props.positions,
128
134
  onOpen: this.props.onOpen,
129
135
  onClose: this.props.onClose,
130
136
  popupHasPin: true,
131
- disableAnimations: this.getProps().disableAnimations },
137
+ disableAnimations: disableAnimations },
132
138
 
133
139
  this.props.children)));
134
140
 
@@ -1 +1 @@
1
- {"version":3,"sources":["TooltipMenu.tsx"],"names":["TooltipMenuDataTids","root","TooltipMenu","rootNode","props","getProps","defaultProps","caption","isProductionEnv","Error","render","theme","ThemeFactory","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","renderMain","setRootNode","menuMaxHeight","menuWidth","header","footer","positions","onOpen","onClose","disableAnimations","children","React","Component","__KONTUR_REACT_UI__","isTestEnv"],"mappings":"uWAAA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,gE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CO,IAAMA,mBAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,mBAD2B,EAA5B,C;;;;;AAMP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;AAEaC,W,OADZC,kB;;;;;;;;;;AAWC,uBAAYC,KAAZ,EAAqC;AACnC,wCAAMA,KAAN,UADmC,MAF7BC,QAE6B,GAFlB,0CAAkBH,WAAW,CAACI,YAA9B,CAEkB;;AAGnC,QAAI,CAACF,KAAK,CAACG,OAAP,IAAkB,CAACC,mCAAvB,EAAwC;AACtC,YAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd;AACE,mCAAC,0BAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,uCAAC,0BAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEC,2BAAaC,MAAb;AACL;AACEC,cAAAA,cAAc,EAAEH,KAAK,CAACI,oBADxB;AAEEC,cAAAA,WAAW,EAAEL,KAAK,CAACM,iBAFrB;AAGEC,cAAAA,YAAY,EAAEP,KAAK,CAACQ,kBAHtB,EADK;;AAMLR,YAAAA,KANK,CADT;;;AAUG,UAAA,MAAI,CAACS,UAAL,EAVH,CADF;;;AAcD,OAhBH,CADF;;;AAoBD,G;;AAEMA,EAAAA,U,GAAP,sBAAoB;AAClB,QAAI,CAAC,KAAKhB,KAAL,CAAWG,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED;AACE,mCAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKc,WAAjC,IAAkD,KAAKjB,KAAvD;AACE,mCAAC,oBAAD;AACE,oBAAUJ,mBAAmB,CAACC,IADhC;AAEE,QAAA,aAAa,EAAE,KAAKG,KAAL,CAAWkB,aAF5B;AAGE,QAAA,SAAS,EAAE,KAAKlB,KAAL,CAAWmB,SAHxB;AAIE,QAAA,OAAO,EAAE,KAAKnB,KAAL,CAAWG,OAJtB;AAKE,QAAA,MAAM,EAAE,KAAKH,KAAL,CAAWoB,MALrB;AAME,QAAA,MAAM,EAAE,KAAKpB,KAAL,CAAWqB,MANrB;AAOE,QAAA,SAAS,EAAE,KAAKrB,KAAL,CAAWsB,SAPxB;AAQE,QAAA,MAAM,EAAE,KAAKtB,KAAL,CAAWuB,MARrB;AASE,QAAA,OAAO,EAAE,KAAKvB,KAAL,CAAWwB,OATtB;AAUE,QAAA,WAAW,MAVb;AAWE,QAAA,iBAAiB,EAAE,KAAKvB,QAAL,GAAgBwB,iBAXrC;;AAaG,WAAKzB,KAAL,CAAW0B,QAbd,CADF,CADF;;;;AAmBD,G,sBAjE8BC,eAAMC,S,WACvBC,mB,GAAsB,a,UAGtB3B,Y,GAA6B,EACzCuB,iBAAiB,EAAEK,6BADsB,E","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { MenuItemProps } from '../MenuItem';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nexport type TooltipMenuChildType = React.ReactElement<MenuItemProps | unknown | MenuHeaderProps>;\n\nexport interface TooltipMenuProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n children?: TooltipMenuChildType | TooltipMenuChildType[];\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [MenuHeader](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [MenuSeparator](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /** Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n */\n positions?: PopupPositionsType[];\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\nexport const TooltipMenuDataTids = {\n root: 'TooltipMenu__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TooltipMenuProps, 'disableAnimations'>>;\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент.\n *\n * Положение меню задаётся с помощью массива `positions` и работает так:\n * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,\n * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.\n *\n * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.\n *\n * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.\n */\n@rootNode\nexport class TooltipMenu extends React.Component<TooltipMenuProps> {\n public static __KONTUR_REACT_UI__ = 'TooltipMenu';\n private setRootNode!: TSetRootNode;\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(TooltipMenu.defaultProps);\n\n constructor(props: TooltipMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipMenuPinOffset,\n popupMargin: theme.tooltipMenuMargin,\n popupPinSize: theme.tooltipMenuPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n data-tid={TooltipMenuDataTids.root}\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n caption={this.props.caption}\n header={this.props.header}\n footer={this.props.footer}\n positions={this.props.positions}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n popupHasPin\n disableAnimations={this.getProps().disableAnimations}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["TooltipMenu.tsx"],"names":["TooltipMenuDataTids","root","TooltipMenu","rootNode","props","getProps","defaultProps","caption","isProductionEnv","Error","render","theme","ThemeFactory","create","popupPinOffset","tooltipMenuPinOffset","popupMargin","tooltipMenuMargin","popupPinSize","tooltipMenuPinSize","menuScrollContainerContentWrapperPaddingY","menuLegacyPaddingY","renderMain","disableAnimations","setRootNode","menuMaxHeight","menuWidth","header","footer","preventIconsOffset","positions","onOpen","onClose","children","React","Component","__KONTUR_REACT_UI__","isTestEnv"],"mappings":"uWAAA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA,gE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CO,IAAMA,mBAAmB,GAAG;AACjCC,EAAAA,IAAI,EAAE,mBAD2B,EAA5B,C;;;;;AAMP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;AAEaC,W,OADZC,kB;;;;;;;;;;AAWC,uBAAYC,KAAZ,EAAqC;AACnC,wCAAMA,KAAN,UADmC,MAF7BC,QAE6B,GAFlB,0CAAkBH,WAAW,CAACI,YAA9B,CAEkB;;AAGnC,QAAI,CAACF,KAAK,CAACG,OAAP,IAAkB,CAACC,mCAAvB,EAAwC;AACtC,YAAM,IAAIC,KAAJ,CAAU,+BAAV,CAAN;AACD,KALkC;AAMpC,G;;AAEMC,EAAAA,M,GAAP,kBAAgB;AACd;AACE,mCAAC,0BAAD,CAAc,QAAd;AACG,gBAACC,KAAD,EAAW;AACV;AACE,uCAAC,0BAAD,CAAc,QAAd;AACE,YAAA,KAAK,EAAEC,2BAAaC,MAAb;AACL;AACEC,cAAAA,cAAc,EAAEH,KAAK,CAACI,oBADxB;AAEEC,cAAAA,WAAW,EAAEL,KAAK,CAACM,iBAFrB;AAGEC,cAAAA,YAAY,EAAEP,KAAK,CAACQ,kBAHtB;AAIEC,cAAAA,yCAAyC,EAAET,KAAK,CAACU,kBAJnD,EADK;;AAOLV,YAAAA,KAPK,CADT;;;AAWG,UAAA,MAAI,CAACW,UAAL,EAXH,CADF;;;AAeD,OAjBH,CADF;;;AAqBD,G;;AAEMA,EAAAA,U,GAAP,sBAAoB;AAClB,QAAI,CAAC,KAAKlB,KAAL,CAAWG,OAAhB,EAAyB;AACvB,aAAO,IAAP;AACD;;AAED,yBAA8B,KAAKF,QAAL,EAA9B,CAAQkB,iBAAR,kBAAQA,iBAAR;;AAEA;AACE,mCAAC,4BAAD,2BAAe,WAAW,EAAE,KAAKC,WAAjC,IAAkD,KAAKpB,KAAvD;AACE,mCAAC,oBAAD;AACE,oBAAUJ,mBAAmB,CAACC,IADhC;AAEE,QAAA,aAAa,EAAE,KAAKG,KAAL,CAAWqB,aAF5B;AAGE,QAAA,SAAS,EAAE,KAAKrB,KAAL,CAAWsB,SAHxB;AAIE,QAAA,OAAO,EAAE,KAAKtB,KAAL,CAAWG,OAJtB;AAKE,QAAA,MAAM,EAAE,KAAKH,KAAL,CAAWuB,MALrB;AAME,QAAA,MAAM,EAAE,KAAKvB,KAAL,CAAWwB,MANrB;AAOE,QAAA,kBAAkB,EAAE,KAAKxB,KAAL,CAAWyB,kBAPjC;AAQE,QAAA,SAAS,EAAE,KAAKzB,KAAL,CAAW0B,SARxB;AASE,QAAA,MAAM,EAAE,KAAK1B,KAAL,CAAW2B,MATrB;AAUE,QAAA,OAAO,EAAE,KAAK3B,KAAL,CAAW4B,OAVtB;AAWE,QAAA,WAAW,MAXb;AAYE,QAAA,iBAAiB,EAAET,iBAZrB;;AAcG,WAAKnB,KAAL,CAAW6B,QAdd,CADF,CADF;;;;AAoBD,G,sBArE8BC,eAAMC,S,WACvBC,mB,GAAsB,a,UAGtB9B,Y,GAA6B,EACzCiB,iBAAiB,EAAEc,6BADsB,E","sourcesContent":["import React from 'react';\n\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { PopupMenu, PopupMenuProps } from '../../internal/PopupMenu';\nimport { MenuItemProps } from '../MenuItem';\nimport { isProductionEnv, isTestEnv } from '../../lib/currentEnvironment';\nimport { MenuHeaderProps } from '../MenuHeader';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nexport type TooltipMenuChildType = React.ReactElement<MenuItemProps | unknown | MenuHeaderProps>;\n\nexport interface TooltipMenuProps\n extends CommonProps,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'preventIconsOffset'> {\n children?: TooltipMenuChildType | TooltipMenuChildType[];\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо `caption`,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: PopupMenuProps['caption'];\n /**\n * Произвольный элемент, который будет отрендерен в шапке меню.\n *\n * _Примечание_: контрол [MenuHeader](#/Components/MenuHeader) передаётся только в `children` меню-контролов. Не стоит передавать `MenuHeader` в `header`.\n */\n header?: React.ReactNode;\n /**\n * Произвольный элемент, который будет отрендерен в подвале меню.\n *\n * Перед элементом переданным в `footer` будет отрендерен [MenuSeparator](#/Components/MenuSeparator).\n */\n footer?: React.ReactNode;\n /** Список позиций доступных для расположения выпадашки относительно `caption`.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n */\n positions?: PopupPositionsType[];\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n}\n\nexport const TooltipMenuDataTids = {\n root: 'TooltipMenu__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TooltipMenuProps, 'disableAnimations'>>;\n\n/**\n * Меню, раскрывающееся по клику на переданный в `caption` элемент.\n *\n * Положение меню задаётся с помощью массива `positions` и работает так:\n * первое значение в массиве - дефолтная позиция, меню раскроется на этой позиции, если оно не будет выходить за пределы `viewport`,\n * если раскрыться в дефолтной позиции не получится - будет использована следующая позиция, и так далее, пока не будет достигнут конец массива. Если все положения из списка будут выходить за пределы `viewport`, в качестве положения будет использовано первое значение в массиве.\n *\n * Если меню должно раскрываться только в одну сторону - массив `positions` должен содержать только один элемент: сторону, в которую должно открываться меню.\n *\n * Если массив `positions` не передан (или передан пустой массив), будут использованы всевозможные значения.\n */\n@rootNode\nexport class TooltipMenu extends React.Component<TooltipMenuProps> {\n public static __KONTUR_REACT_UI__ = 'TooltipMenu';\n private setRootNode!: TSetRootNode;\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n };\n\n private getProps = createPropsGetter(TooltipMenu.defaultProps);\n\n constructor(props: TooltipMenuProps) {\n super(props);\n\n if (!props.caption && !isProductionEnv) {\n throw new Error('Prop \"caption\" is required!!!');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipMenuPinOffset,\n popupMargin: theme.tooltipMenuMargin,\n popupPinSize: theme.tooltipMenuPinSize,\n menuScrollContainerContentWrapperPaddingY: theme.menuLegacyPaddingY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n if (!this.props.caption) {\n return null;\n }\n\n const { disableAnimations } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n data-tid={TooltipMenuDataTids.root}\n menuMaxHeight={this.props.menuMaxHeight}\n menuWidth={this.props.menuWidth}\n caption={this.props.caption}\n header={this.props.header}\n footer={this.props.footer}\n preventIconsOffset={this.props.preventIconsOffset}\n positions={this.props.positions}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n popupHasPin\n disableAnimations={disableAnimations}\n >\n {this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n}\n"]}
@@ -180,6 +180,34 @@ import { Button, MenuHeader, MenuItem, MenuSeparator } from '@skbkontur/react-ui
180
180
  </TooltipMenu>;
181
181
  ```
182
182
 
183
+ С иконками и включенным по-умолчанию автоматическим выравниванием текста.
184
+
185
+ ```jsx harmony
186
+ import { Button, MenuHeader, MenuItem, MenuSeparator, TooltipMenu } from '@skbkontur/react-ui';
187
+ import OkIcon from '@skbkontur/react-icons/Ok';
188
+
189
+ <TooltipMenu caption={<Button use="primary">Открыть меню</Button>}>
190
+ <MenuHeader>MenuHeader</MenuHeader>
191
+ <MenuItem icon={<OkIcon />}>MenuItem1</MenuItem>
192
+ <MenuItem icon={<OkIcon />}>MenuItem2</MenuItem>
193
+ <MenuItem>MenuItem3</MenuItem>
194
+ </TooltipMenu>;
195
+ ```
196
+
197
+ С иконками и отключенным автоматическим выравниванием текста.
198
+
199
+ ```jsx harmony
200
+ import { Button, MenuHeader, MenuItem, MenuSeparator, TooltipMenu } from '@skbkontur/react-ui';
201
+ import OkIcon from '@skbkontur/react-icons/Ok';
202
+
203
+ <TooltipMenu preventIconsOffset caption={<Button use="primary">Открыть меню</Button>}>
204
+ <MenuHeader>MenuHeader</MenuHeader>
205
+ <MenuItem icon={<OkIcon />}>MenuItem1</MenuItem>
206
+ <MenuItem icon={<OkIcon />}>MenuItem2</MenuItem>
207
+ <MenuItem>MenuItem3</MenuItem>
208
+ </TooltipMenu>
209
+ ```
210
+
183
211
  Условный рендер элементов тултип-меню (с сохранением поведения [MenuItem](#/Components/MenuItem)).
184
212
 
185
213
  ```jsx harmony
@@ -4,13 +4,14 @@ var _Mixins = require("../../lib/styles/Mixins");var _templateObject, _templateO
4
4
 
5
5
  var styles = (0, _Emotion.memoizeStyle)({
6
6
  root: function root(t) {
7
- return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n ", "\n display: inline-block;\n position: relative;\n border-radius: ", ";\n color: ", ";\n cursor: pointer;\n\n &:enabled:focus,\n &:enabled:hover {\n color: ", ";\n }\n "])),
7
+ return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n ", "\n display: inline-block;\n position: relative;\n border-radius: ", ";\n color: ", ";\n cursor: pointer;\n transition: color ", " ", ";\n\n &:enabled:focus,\n &:enabled:hover {\n color: ", ";\n }\n "])),
8
8
  (0, _Mixins.resetButton)(),
9
9
 
10
10
 
11
11
  t.closeBtnIconBorderRadius,
12
12
  t.closeBtnIconColor,
13
13
 
14
+ t.transitionDuration, t.transitionTimingFunction,
14
15
 
15
16
 
16
17
 
@@ -1 +1 @@
1
- {"version":3,"sources":["CloseButtonIcon.styles.tsx"],"names":["styles","root","t","css","closeBtnIconBorderRadius","closeBtnIconColor","closeBtnIconHoverColor","rootDisabled","closeBtnIconDisabledColor","focus","closeBtnIconFocusShadow","wrapper"],"mappings":"4QAAA;;AAEA,iD;;AAEO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,eAAOC,YAAP;AACI,8BADJ;;;AAImBD,IAAAA,CAAC,CAACE,wBAJrB;AAKWF,IAAAA,CAAC,CAACG,iBALb;;;;;AAUaH,IAAAA,CAAC,CAACI,sBAVf;;;AAaD,GAfgC;AAgBjCC,EAAAA,YAhBiC,wBAgBpBL,CAhBoB,EAgBV;AACrB,eAAOC,YAAP;AACWD,IAAAA,CAAC,CAACM,yBADb;;AAGD,GApBgC;AAqBjCC,EAAAA,KArBiC,iBAqB3BP,CArB2B,EAqBjB;AACd,eAAOC,YAAP;AACgBD,IAAAA,CAAC,CAACQ,uBADlB;;AAGD,GAzBgC;AA0BjCC,EAAAA,OA1BiC,qBA0BvB;AACR,eAAOR,YAAP;;;;;;;;;AASD,GApCgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n ${resetButton()}\n display: inline-block;\n position: relative;\n border-radius: ${t.closeBtnIconBorderRadius};\n color: ${t.closeBtnIconColor};\n cursor: pointer;\n\n &:enabled:focus,\n &:enabled:hover {\n color: ${t.closeBtnIconHoverColor};\n }\n `;\n },\n rootDisabled(t: Theme) {\n return css`\n color: ${t.closeBtnIconDisabledColor};\n `;\n },\n focus(t: Theme) {\n return css`\n box-shadow: ${t.closeBtnIconFocusShadow};\n `;\n },\n wrapper() {\n return css`\n box-sizing: content-box;\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["CloseButtonIcon.styles.tsx"],"names":["styles","root","t","css","closeBtnIconBorderRadius","closeBtnIconColor","transitionDuration","transitionTimingFunction","closeBtnIconHoverColor","rootDisabled","closeBtnIconDisabledColor","focus","closeBtnIconFocusShadow","wrapper"],"mappings":"4QAAA;;AAEA,iD;;AAEO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,IADiC,gBAC5BC,CAD4B,EAClB;AACb,eAAOC,YAAP;AACI,8BADJ;;;AAImBD,IAAAA,CAAC,CAACE,wBAJrB;AAKWF,IAAAA,CAAC,CAACG,iBALb;;AAOsBH,IAAAA,CAAC,CAACI,kBAPxB,EAO8CJ,CAAC,CAACK,wBAPhD;;;;AAWaL,IAAAA,CAAC,CAACM,sBAXf;;;AAcD,GAhBgC;AAiBjCC,EAAAA,YAjBiC,wBAiBpBP,CAjBoB,EAiBV;AACrB,eAAOC,YAAP;AACWD,IAAAA,CAAC,CAACQ,yBADb;;AAGD,GArBgC;AAsBjCC,EAAAA,KAtBiC,iBAsB3BT,CAtB2B,EAsBjB;AACd,eAAOC,YAAP;AACgBD,IAAAA,CAAC,CAACU,uBADlB;;AAGD,GA1BgC;AA2BjCC,EAAAA,OA3BiC,qBA2BvB;AACR,eAAOV,YAAP;;;;;;;;;AASD,GArCgC,EAAb,CAAf,C","sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\nimport { resetButton } from '../../lib/styles/Mixins';\n\nexport const styles = memoizeStyle({\n root(t: Theme) {\n return css`\n ${resetButton()}\n display: inline-block;\n position: relative;\n border-radius: ${t.closeBtnIconBorderRadius};\n color: ${t.closeBtnIconColor};\n cursor: pointer;\n transition: color ${t.transitionDuration} ${t.transitionTimingFunction};\n\n &:enabled:focus,\n &:enabled:hover {\n color: ${t.closeBtnIconHoverColor};\n }\n `;\n },\n rootDisabled(t: Theme) {\n return css`\n color: ${t.closeBtnIconDisabledColor};\n `;\n },\n focus(t: Theme) {\n return css`\n box-shadow: ${t.closeBtnIconFocusShadow};\n `;\n },\n wrapper() {\n return css`\n box-sizing: content-box;\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n `;\n },\n});\n"]}
@@ -20,6 +20,7 @@ export interface ComboBoxMenuProps<T> {
20
20
  repeatRequest?: () => void;
21
21
  requestStatus?: ComboBoxRequestStatus;
22
22
  isMobile?: boolean;
23
+ menuId?: string;
23
24
  }
24
25
  export declare const ComboBoxMenuDataTids: {
25
26
  readonly loading: "ComboBoxMenu__loading";
@@ -31,6 +31,7 @@ var _locale = require("./locale");var _dec, _class, _class2, _temp;
31
31
 
32
32
 
33
33
 
34
+
34
35
 
35
36
  var ComboBoxMenuDataTids = {
36
37
  loading: 'ComboBoxMenu__loading',
@@ -152,6 +153,14 @@ ComboBoxMenu = (_dec = (0, _decorators.locale)('ComboBox', _locale.CustomComboBo
152
153
 
153
154
 
154
155
 
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
155
164
 
156
165
 
157
166
 
@@ -188,4 +197,4 @@ ComboBoxMenu = (_dec = (0, _decorators.locale)('ComboBox', _locale.CustomComboBo
188
197
  function (state) {return renderItem(item, state);}));
189
198
 
190
199
 
191
- };return _this;}var _proto = ComboBoxMenu.prototype;_proto.render = function render() {var _this$props2 = this.props,opened = _this$props2.opened,items = _this$props2.items,totalCount = _this$props2.totalCount,loading = _this$props2.loading,refMenu = _this$props2.refMenu,_this$props2$renderNo = _this$props2.renderNotFound,renderNotFound = _this$props2$renderNo === void 0 ? function () {return notFound;} : _this$props2$renderNo,renderTotalCount = _this$props2.renderTotalCount,maxMenuHeight = _this$props2.maxMenuHeight,isMobile = _this$props2.isMobile;var requestStatus = this.getProps().requestStatus;var _this$locale = this.locale,notFound = _this$locale.notFound,errorNetworkButton = _this$locale.errorNetworkButton,errorNetworkMessage = _this$locale.errorNetworkMessage;if (!opened) {return null;}var renderAddButton = null;if (this.props.renderAddButton) {renderAddButton = this.props.renderAddButton();}var maxHeight = isMobile ? 'auto' : maxMenuHeight;if (loading && (!items || !items.length)) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile, "data-tid": ComboBoxMenuDataTids.loading }, /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { as: "div" }, /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: "mini", dimmed: true })));}if (items === null && requestStatus === _CustomComboBoxTypes.ComboBoxRequestStatus.Failed) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile, "data-tid": ComboBoxMenuDataTids.failed }, /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { key: "message" }, /*#__PURE__*/_react.default.createElement("div", { style: { maxWidth: 300, whiteSpace: 'normal' } }, errorNetworkMessage)), /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { link: true, onClick: this.getProps().repeatRequest, key: "retry", isMobile: isMobile }, errorNetworkButton));}if (((0, _utils.isNullable)(items) || items.length === 0) && renderNotFound) {var notFoundValue = renderNotFound();if (renderAddButton) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, renderAddButton);}if (notFoundValue) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { "data-tid": ComboBoxMenuDataTids.notFound }, notFoundValue));}return null;}var total = null;var renderedItems = items && items.map(this.renderItem);var menuItems = renderedItems == null ? void 0 : renderedItems.filter(function (item) {return (0, _MenuItem.isMenuItem)(item);});var countItems = menuItems == null ? void 0 : menuItems.length;if (countItems && renderTotalCount && totalCount && countItems < totalCount) {total = /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { key: "total", as: "div" }, /*#__PURE__*/_react.default.createElement("div", { style: { fontSize: 12 } }, renderTotalCount(countItems, totalCount)));}return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { "data-tid": ComboBoxMenuDataTids.items, ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile }, renderedItems, total, renderAddButton && [/*#__PURE__*/_react.default.createElement(_MenuSeparator.MenuSeparator, { key: "separator" }), renderAddButton]);};return ComboBoxMenu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'ComboBoxMenu', _class2.defaultProps = { repeatRequest: function repeatRequest() {return undefined;}, requestStatus: _CustomComboBoxTypes.ComboBoxRequestStatus.Unknown }, _temp)) || _class);exports.ComboBoxMenu = ComboBoxMenu;
200
+ };return _this;}var _proto = ComboBoxMenu.prototype;_proto.render = function render() {var _this$props2 = this.props,opened = _this$props2.opened,items = _this$props2.items,totalCount = _this$props2.totalCount,loading = _this$props2.loading,refMenu = _this$props2.refMenu,_this$props2$renderNo = _this$props2.renderNotFound,renderNotFound = _this$props2$renderNo === void 0 ? function () {return notFound;} : _this$props2$renderNo,renderTotalCount = _this$props2.renderTotalCount,maxMenuHeight = _this$props2.maxMenuHeight,isMobile = _this$props2.isMobile;var requestStatus = this.getProps().requestStatus;var _this$locale = this.locale,notFound = _this$locale.notFound,errorNetworkButton = _this$locale.errorNetworkButton,errorNetworkMessage = _this$locale.errorNetworkMessage;if (!opened) {return null;}var renderAddButton = null;if (this.props.renderAddButton) {renderAddButton = this.props.renderAddButton();}var maxHeight = isMobile ? 'auto' : maxMenuHeight;if (loading && (!items || !items.length)) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile, id: this.props.menuId, "data-tid": ComboBoxMenuDataTids.loading }, /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { as: "div" }, /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: "mini", dimmed: true })));}if (items === null && requestStatus === _CustomComboBoxTypes.ComboBoxRequestStatus.Failed) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile, id: this.props.menuId, "data-tid": ComboBoxMenuDataTids.failed }, /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { key: "message" }, /*#__PURE__*/_react.default.createElement("div", { style: { maxWidth: 300, whiteSpace: 'normal' } }, errorNetworkMessage)), /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { link: true, onClick: this.getProps().repeatRequest, key: "retry", isMobile: isMobile }, errorNetworkButton));}if (((0, _utils.isNullable)(items) || items.length === 0) && renderNotFound) {var notFoundValue = renderNotFound();if (renderAddButton) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { id: this.props.menuId, maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, renderAddButton);}if (notFoundValue) {return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { id: this.props.menuId, maxHeight: maxHeight, ref: refMenu, disableScrollContainer: isMobile }, /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { "data-tid": ComboBoxMenuDataTids.notFound }, notFoundValue));}return null;}var total = null;var renderedItems = items && items.map(this.renderItem);var menuItems = renderedItems == null ? void 0 : renderedItems.filter(function (item) {return (0, _MenuItem.isMenuItem)(item);});var countItems = menuItems == null ? void 0 : menuItems.length;if (countItems && renderTotalCount && totalCount && countItems < totalCount) {total = /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, { key: "total", as: "div" }, /*#__PURE__*/_react.default.createElement("div", { style: { fontSize: 12 } }, renderTotalCount(countItems, totalCount)));}return /*#__PURE__*/_react.default.createElement(_Menu.Menu, { id: this.props.menuId, "data-tid": ComboBoxMenuDataTids.items, ref: refMenu, maxHeight: maxHeight, disableScrollContainer: isMobile }, renderedItems, total, renderAddButton && [/*#__PURE__*/_react.default.createElement(_MenuSeparator.MenuSeparator, { key: "separator" }), renderAddButton]);};return ComboBoxMenu;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'ComboBoxMenu', _class2.defaultProps = { repeatRequest: function repeatRequest() {return undefined;}, requestStatus: _CustomComboBoxTypes.ComboBoxRequestStatus.Unknown }, _temp)) || _class);exports.ComboBoxMenu = ComboBoxMenu;
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBoxMenu.tsx"],"names":["ComboBoxMenuDataTids","loading","failed","notFound","items","item","ComboBoxMenu","CustomComboBoxLocaleHelper","getProps","defaultProps","renderItem","index","props","onValueChange","itemWrapper","React","isValidElement","element","Object","assign","key","onClick","cloneElement","isMobile","state","render","opened","totalCount","refMenu","renderNotFound","renderTotalCount","maxMenuHeight","requestStatus","locale","errorNetworkButton","errorNetworkMessage","renderAddButton","maxHeight","length","ComboBoxRequestStatus","Failed","maxWidth","whiteSpace","repeatRequest","notFoundValue","total","renderedItems","map","menuItems","filter","countItems","fontSize","Component","__KONTUR_REACT_UI__","undefined","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isFunction, isNullable } from '../../lib/utils';\nimport { locale } from '../../lib/locale/decorators';\nimport { Menu } from '../Menu';\nimport { isMenuItem, MenuItem, MenuItemState } from '../../components/MenuItem';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { MenuMessage } from '../MenuMessage';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { ComboBoxLocale, CustomComboBoxLocaleHelper } from './locale';\n\nexport interface ComboBoxMenuProps<T> {\n opened?: boolean;\n items?: Nullable<T[]>;\n totalCount?: number;\n loading?: boolean;\n maxMenuHeight?: number | string;\n refMenu?: (menu: Nullable<Menu>) => void;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n onValueChange: (value: T) => any;\n renderAddButton?: () => React.ReactNode;\n caption?: React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n isMobile?: boolean;\n}\n\nexport const ComboBoxMenuDataTids = {\n loading: 'ComboBoxMenu__loading',\n failed: 'ComboBoxMenu__failed',\n notFound: 'ComboBoxMenu__notFound',\n items: 'ComboBoxMenu__items',\n item: 'ComboBoxMenu__item',\n} as const;\n\ntype DefaultProps<T> = Required<Pick<ComboBoxMenuProps<T>, 'repeatRequest' | 'requestStatus'>>;\n\n@locale('ComboBox', CustomComboBoxLocaleHelper)\nexport class ComboBoxMenu<T> extends React.Component<ComboBoxMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxMenu';\n\n public static defaultProps: DefaultProps<unknown> = {\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n };\n\n private getProps = createPropsGetter(ComboBoxMenu.defaultProps);\n\n private readonly locale!: ComboBoxLocale;\n\n public render() {\n const {\n opened,\n items,\n totalCount,\n loading,\n refMenu,\n renderNotFound = () => notFound,\n renderTotalCount,\n maxMenuHeight,\n isMobile,\n } = this.props;\n\n const requestStatus = this.getProps().requestStatus;\n\n const { notFound, errorNetworkButton, errorNetworkMessage } = this.locale;\n\n if (!opened) {\n return null;\n }\n\n let renderAddButton = null;\n if (this.props.renderAddButton) {\n renderAddButton = this.props.renderAddButton();\n }\n\n const maxHeight = isMobile ? 'auto' : maxMenuHeight;\n\n if (loading && (!items || !items.length)) {\n return (\n <Menu\n maxHeight={maxHeight}\n ref={refMenu}\n disableScrollContainer={isMobile}\n data-tid={ComboBoxMenuDataTids.loading}\n >\n <MenuMessage as=\"div\">\n <Spinner type=\"mini\" dimmed />\n </MenuMessage>\n </Menu>\n );\n }\n\n if (items === null && requestStatus === ComboBoxRequestStatus.Failed) {\n return (\n <Menu\n ref={refMenu}\n maxHeight={maxHeight}\n disableScrollContainer={isMobile}\n data-tid={ComboBoxMenuDataTids.failed}\n >\n <MenuMessage key=\"message\">\n <div style={{ maxWidth: 300, whiteSpace: 'normal' }}>{errorNetworkMessage}</div>\n </MenuMessage>\n <MenuItem link onClick={this.getProps().repeatRequest} key=\"retry\" isMobile={isMobile}>\n {errorNetworkButton}\n </MenuItem>\n </Menu>\n );\n }\n\n if ((isNullable(items) || items.length === 0) && renderNotFound) {\n const notFoundValue = renderNotFound();\n if (renderAddButton) {\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n {renderAddButton}\n </Menu>\n );\n }\n\n if (notFoundValue) {\n return (\n <Menu maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n <MenuMessage data-tid={ComboBoxMenuDataTids.notFound}>{notFoundValue}</MenuMessage>\n </Menu>\n );\n }\n\n return null;\n }\n\n let total = null;\n const renderedItems = items && items.map(this.renderItem);\n const menuItems = renderedItems?.filter((item) => {\n return isMenuItem(item);\n });\n const countItems = menuItems?.length;\n\n if (countItems && renderTotalCount && totalCount && countItems < totalCount) {\n total = (\n <MenuMessage key=\"total\" as=\"div\">\n <div style={{ fontSize: 12 }}>{renderTotalCount(countItems, totalCount)}</div>\n </MenuMessage>\n );\n }\n\n return (\n <Menu data-tid={ComboBoxMenuDataTids.items} ref={refMenu} maxHeight={maxHeight} disableScrollContainer={isMobile}>\n {renderedItems}\n {total}\n {renderAddButton && [<MenuSeparator key=\"separator\" />, renderAddButton]}\n </Menu>\n );\n }\n\n private renderItem = (item: T, index: number): React.ReactNode => {\n // NOTE this is undesireable feature, better\n // to remove it from further versions\n const { renderItem, onValueChange, itemWrapper } = this.props;\n if (isFunction(item) || React.isValidElement(item)) {\n const element = isFunction(item) ? item() : item;\n const props = Object.assign(\n {\n key: index,\n onClick: () => onValueChange(element.props),\n },\n element.props,\n );\n return React.cloneElement(element, props);\n }\n\n return (\n <MenuItem\n component={itemWrapper?.(item)}\n data-tid={ComboBoxMenuDataTids.item}\n onClick={() => onValueChange(item)}\n key={index}\n isMobile={this.props.isMobile}\n >\n {(state) => renderItem(item, state)}\n </MenuItem>\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["ComboBoxMenu.tsx"],"names":["ComboBoxMenuDataTids","loading","failed","notFound","items","item","ComboBoxMenu","CustomComboBoxLocaleHelper","getProps","defaultProps","renderItem","index","props","onValueChange","itemWrapper","React","isValidElement","element","Object","assign","key","onClick","cloneElement","isMobile","state","render","opened","totalCount","refMenu","renderNotFound","renderTotalCount","maxMenuHeight","requestStatus","locale","errorNetworkButton","errorNetworkMessage","renderAddButton","maxHeight","length","menuId","ComboBoxRequestStatus","Failed","maxWidth","whiteSpace","repeatRequest","notFoundValue","total","renderedItems","map","menuItems","filter","countItems","fontSize","Component","__KONTUR_REACT_UI__","undefined","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isFunction, isNullable } from '../../lib/utils';\nimport { locale } from '../../lib/locale/decorators';\nimport { Menu } from '../Menu';\nimport { isMenuItem, MenuItem, MenuItemState } from '../../components/MenuItem';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuSeparator } from '../../components/MenuSeparator';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { MenuMessage } from '../MenuMessage';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { ComboBoxLocale, CustomComboBoxLocaleHelper } from './locale';\n\nexport interface ComboBoxMenuProps<T> {\n opened?: boolean;\n items?: Nullable<T[]>;\n totalCount?: number;\n loading?: boolean;\n maxMenuHeight?: number | string;\n refMenu?: (menu: Nullable<Menu>) => void;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n onValueChange: (value: T) => any;\n renderAddButton?: () => React.ReactNode;\n caption?: React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n isMobile?: boolean;\n menuId?: string;\n}\n\nexport const ComboBoxMenuDataTids = {\n loading: 'ComboBoxMenu__loading',\n failed: 'ComboBoxMenu__failed',\n notFound: 'ComboBoxMenu__notFound',\n items: 'ComboBoxMenu__items',\n item: 'ComboBoxMenu__item',\n} as const;\n\ntype DefaultProps<T> = Required<Pick<ComboBoxMenuProps<T>, 'repeatRequest' | 'requestStatus'>>;\n\n@locale('ComboBox', CustomComboBoxLocaleHelper)\nexport class ComboBoxMenu<T> extends React.Component<ComboBoxMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxMenu';\n\n public static defaultProps: DefaultProps<unknown> = {\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n };\n\n private getProps = createPropsGetter(ComboBoxMenu.defaultProps);\n\n private readonly locale!: ComboBoxLocale;\n\n public render() {\n const {\n opened,\n items,\n totalCount,\n loading,\n refMenu,\n renderNotFound = () => notFound,\n renderTotalCount,\n maxMenuHeight,\n isMobile,\n } = this.props;\n\n const requestStatus = this.getProps().requestStatus;\n\n const { notFound, errorNetworkButton, errorNetworkMessage } = this.locale;\n\n if (!opened) {\n return null;\n }\n\n let renderAddButton = null;\n if (this.props.renderAddButton) {\n renderAddButton = this.props.renderAddButton();\n }\n\n const maxHeight = isMobile ? 'auto' : maxMenuHeight;\n\n if (loading && (!items || !items.length)) {\n return (\n <Menu\n maxHeight={maxHeight}\n ref={refMenu}\n disableScrollContainer={isMobile}\n id={this.props.menuId}\n data-tid={ComboBoxMenuDataTids.loading}\n >\n <MenuMessage as=\"div\">\n <Spinner type=\"mini\" dimmed />\n </MenuMessage>\n </Menu>\n );\n }\n\n if (items === null && requestStatus === ComboBoxRequestStatus.Failed) {\n return (\n <Menu\n ref={refMenu}\n maxHeight={maxHeight}\n disableScrollContainer={isMobile}\n id={this.props.menuId}\n data-tid={ComboBoxMenuDataTids.failed}\n >\n <MenuMessage key=\"message\">\n <div style={{ maxWidth: 300, whiteSpace: 'normal' }}>{errorNetworkMessage}</div>\n </MenuMessage>\n <MenuItem link onClick={this.getProps().repeatRequest} key=\"retry\" isMobile={isMobile}>\n {errorNetworkButton}\n </MenuItem>\n </Menu>\n );\n }\n\n if ((isNullable(items) || items.length === 0) && renderNotFound) {\n const notFoundValue = renderNotFound();\n if (renderAddButton) {\n return (\n <Menu id={this.props.menuId} maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n {renderAddButton}\n </Menu>\n );\n }\n\n if (notFoundValue) {\n return (\n <Menu id={this.props.menuId} maxHeight={maxHeight} ref={refMenu} disableScrollContainer={isMobile}>\n <MenuMessage data-tid={ComboBoxMenuDataTids.notFound}>{notFoundValue}</MenuMessage>\n </Menu>\n );\n }\n\n return null;\n }\n\n let total = null;\n const renderedItems = items && items.map(this.renderItem);\n const menuItems = renderedItems?.filter((item) => {\n return isMenuItem(item);\n });\n const countItems = menuItems?.length;\n\n if (countItems && renderTotalCount && totalCount && countItems < totalCount) {\n total = (\n <MenuMessage key=\"total\" as=\"div\">\n <div style={{ fontSize: 12 }}>{renderTotalCount(countItems, totalCount)}</div>\n </MenuMessage>\n );\n }\n\n return (\n <Menu\n id={this.props.menuId}\n data-tid={ComboBoxMenuDataTids.items}\n ref={refMenu}\n maxHeight={maxHeight}\n disableScrollContainer={isMobile}\n >\n {renderedItems}\n {total}\n {renderAddButton && [<MenuSeparator key=\"separator\" />, renderAddButton]}\n </Menu>\n );\n }\n\n private renderItem = (item: T, index: number): React.ReactNode => {\n // NOTE this is undesireable feature, better\n // to remove it from further versions\n const { renderItem, onValueChange, itemWrapper } = this.props;\n if (isFunction(item) || React.isValidElement(item)) {\n const element = isFunction(item) ? item() : item;\n const props = Object.assign(\n {\n key: index,\n onClick: () => onValueChange(element.props),\n },\n element.props,\n );\n return React.cloneElement(element, props);\n }\n\n return (\n <MenuItem\n component={itemWrapper?.(item)}\n data-tid={ComboBoxMenuDataTids.item}\n onClick={() => onValueChange(item)}\n key={index}\n isMobile={this.props.isMobile}\n >\n {(state) => renderItem(item, state)}\n </MenuItem>\n );\n };\n}\n"]}
@@ -67,6 +67,9 @@ interface ComboBoxViewState {
67
67
  isMobileOpened: boolean;
68
68
  }
69
69
  declare type DefaultProps<T> = Required<Pick<ComboBoxViewProps<T>, 'renderItem' | 'renderValue' | 'renderAddButton' | 'repeatRequest' | 'requestStatus' | 'onClickOutside' | 'onFocusOutside' | 'size' | 'width'>>;
70
+ export declare const ComboBoxViewIds: {
71
+ menu: string;
72
+ };
70
73
  export declare class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, ComboBoxViewState> {
71
74
  static __KONTUR_REACT_UI__: string;
72
75
  static defaultProps: DefaultProps<unknown>;
@@ -77,6 +80,7 @@ export declare class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T
77
80
  private isMobileLayout;
78
81
  private dropdownContainerRef;
79
82
  private theme;
83
+ private menuId;
80
84
  componentDidMount(): void;
81
85
  state: ComboBoxViewState;
82
86
  componentDidUpdate(prevProps: ComboBoxViewProps<T>): void;
@@ -1,4 +1,4 @@
1
- "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.ComboBoxView = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.ComboBoxViewIds = exports.ComboBoxView = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
 
3
3
  var _utils = require("../../lib/utils");
4
4
  var _DropdownContainer = require("../DropdownContainer");
@@ -25,7 +25,7 @@ var _ComboBoxMenu = require("./ComboBoxMenu");
25
25
  var _CustomComboBoxTypes = require("./CustomComboBoxTypes");
26
26
  var _CustomComboBox = require("./CustomComboBox.styles");
27
27
  var _CustomComboBox2 = require("./CustomComboBox");
28
- var _getComboBoxTheme = require("./getComboBoxTheme");var _class, _class2, _temp;var
28
+ var _getComboBoxTheme = require("./getComboBoxTheme");var _class, _class2, _temp;
29
29
 
30
30
 
31
31
 
@@ -102,6 +102,10 @@ var _getComboBoxTheme = require("./getComboBoxTheme");var _class, _class2, _temp
102
102
 
103
103
 
104
104
 
105
+
106
+
107
+ var ComboBoxViewIds = {
108
+ menu: 'ComboBoxView__menu' };exports.ComboBoxViewIds = ComboBoxViewIds;var
105
109
 
106
110
 
107
111
 
@@ -133,6 +137,7 @@ ComboBoxView = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNode)
133
137
 
134
138
  dropdownContainerRef = /*#__PURE__*/_react.default.createRef();_this.
135
139
 
140
+ menuId = ComboBoxViewIds.menu + (0, _utils.getRandomID)();_this.
136
141
 
137
142
 
138
143
 
@@ -198,6 +203,7 @@ ComboBoxView = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNode)
198
203
  var _this$getProps = _this.getProps(),repeatRequest = _this$getProps.repeatRequest,requestStatus = _this$getProps.requestStatus,renderItem = _this$getProps.renderItem,itemWrapper = _this$getProps.itemWrapper;
199
204
  return /*#__PURE__*/(
200
205
  _react.default.createElement(_ComboBoxMenu.ComboBoxMenu, {
206
+ menuId: _this.menuId,
201
207
  items: items,
202
208
  loading: loading,
203
209
  maxMenuHeight: maxMenuHeight,
@@ -356,6 +362,8 @@ ComboBoxView = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNode)
356
362
 
357
363
 
358
364
 
365
+
366
+
359
367
 
360
368
 
361
369
 
@@ -414,4 +422,4 @@ ComboBoxView = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNode)
414
422
 
415
423
  refMobileInput = function (input) {
416
424
  _this.mobileInput = input;
417
- };return _this;}var _proto = ComboBoxView.prototype;_proto.componentDidMount = function componentDidMount() {var _this$dropdownContain;if (this.props.autoFocus && this.props.onFocus) {this.props.onFocus();}this.props.opened && ((_this$dropdownContain = this.dropdownContainerRef.current) == null ? void 0 : _this$dropdownContain.position());};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {var input = this.input,props = this.props;if (props.editing && !prevProps.editing && input) {input.focus();}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = (0, _getComboBoxTheme.getComboBoxTheme)(theme);return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _this2.theme }, _this2.renderMain());});};_proto.renderMain = function renderMain() {var _this$props5 = this.props,onMouseEnter = _this$props5.onMouseEnter,onMouseLeave = _this$props5.onMouseLeave,onMouseOver = _this$props5.onMouseOver,opened = _this$props5.opened;var _this$getProps2 = this.getProps(),onClickOutside = _this$getProps2.onClickOutside,onFocusOutside = _this$getProps2.onFocusOutside,width = _this$getProps2.width;var isMobile = this.isMobileLayout;var input = this.renderInput();return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: onClickOutside, onFocusOutside: onFocusOutside, active: opened }, /*#__PURE__*/_react.default.createElement("span", { "data-tid": _CustomComboBox2.CustomComboBoxDataTids.comboBoxView, style: { width: width }, className: _CustomComboBox.styles.root(), onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseOver: onMouseOver, ref: this.setRootNode }, input, isMobile ? this.renderMobileMenu() : this.renderMenu())));};_proto.renderInput = function renderInput() {var isMobile = this.isMobileLayout;var _this$props6 = this.props,align = _this$props6.align,borderless = _this$props6.borderless,disabled = _this$props6.disabled,editing = _this$props6.editing,error = _this$props6.error,onFocus = _this$props6.onFocus,onInputBlur = _this$props6.onInputBlur,onInputValueChange = _this$props6.onInputValueChange,onInputFocus = _this$props6.onInputFocus,onInputClick = _this$props6.onInputClick,onInputKeyDown = _this$props6.onInputKeyDown,placeholder = _this$props6.placeholder,textValue = _this$props6.textValue,value = _this$props6.value,warning = _this$props6.warning,refInputLikeText = _this$props6.refInputLikeText,leftIcon = _this$props6.leftIcon,inputMode = _this$props6.inputMode,ariaDescribedby = _this$props6['aria-describedby'];var _this$getProps3 = this.getProps(),renderValue = _this$getProps3.renderValue,size = _this$getProps3.size;var rightIcon = this.getRightIcon();if (editing) {return /*#__PURE__*/_react.default.createElement(_Input.Input, { align: align, borderless: borderless, disabled: disabled, error: error, maxLength: this.props.maxLength, onBlur: isMobile ? undefined : onInputBlur, onValueChange: onInputValueChange, onFocus: isMobile ? this.handleFocusMobile : onInputFocus, onClick: isMobile ? this.handleFocusMobile : onInputClick, leftIcon: leftIcon, rightIcon: rightIcon, value: textValue || '', onKeyDown: onInputKeyDown, placeholder: placeholder, width: "100%", size: size, ref: this.refInput, warning: warning, inputMode: inputMode, "aria-describedby": ariaDescribedby });}return /*#__PURE__*/_react.default.createElement(_InputLikeText.InputLikeText, { align: align, borderless: borderless, error: error, onFocus: onFocus, leftIcon: leftIcon, rightIcon: rightIcon, disabled: disabled, warning: warning, placeholder: placeholder, size: size, width: "100%", ref: refInputLikeText, "aria-describedby": ariaDescribedby }, (0, _utils.isNonNullable)(value) && renderValue ? renderValue(value) : null);};return ComboBoxView;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'ComboBoxView', _class2.defaultProps = { renderItem: function renderItem(item) {return item;}, renderValue: function renderValue(item) {return item;}, renderAddButton: function renderAddButton() {return null;}, repeatRequest: function repeatRequest() {return undefined;}, requestStatus: _CustomComboBoxTypes.ComboBoxRequestStatus.Unknown, onClickOutside: function onClickOutside() {/**/}, onFocusOutside: function onFocusOutside() {/**/}, size: 'small', width: 250 }, _temp)) || _class) || _class;exports.ComboBoxView = ComboBoxView;
425
+ };return _this;}var _proto = ComboBoxView.prototype;_proto.componentDidMount = function componentDidMount() {var _this$dropdownContain;if (this.props.autoFocus && this.props.onFocus) {this.props.onFocus();}this.props.opened && ((_this$dropdownContain = this.dropdownContainerRef.current) == null ? void 0 : _this$dropdownContain.position());};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {var input = this.input,props = this.props;if (props.editing && !prevProps.editing && input) {input.focus();}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = (0, _getComboBoxTheme.getComboBoxTheme)(theme);return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _this2.theme }, _this2.renderMain());});};_proto.renderMain = function renderMain() {var _this$props5 = this.props,onMouseEnter = _this$props5.onMouseEnter,onMouseLeave = _this$props5.onMouseLeave,onMouseOver = _this$props5.onMouseOver,opened = _this$props5.opened;var _this$getProps2 = this.getProps(),onClickOutside = _this$getProps2.onClickOutside,onFocusOutside = _this$getProps2.onFocusOutside,width = _this$getProps2.width;var isMobile = this.isMobileLayout;var input = this.renderInput();return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, /*#__PURE__*/_react.default.createElement(_RenderLayer.RenderLayer, { onClickOutside: onClickOutside, onFocusOutside: onFocusOutside, active: opened }, /*#__PURE__*/_react.default.createElement("span", { "data-tid": _CustomComboBox2.CustomComboBoxDataTids.comboBoxView, style: { width: width }, className: _CustomComboBox.styles.root(), onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseOver: onMouseOver, ref: this.setRootNode }, input, isMobile ? this.renderMobileMenu() : this.renderMenu())));};_proto.renderInput = function renderInput() {var isMobile = this.isMobileLayout;var _this$props6 = this.props,align = _this$props6.align,borderless = _this$props6.borderless,disabled = _this$props6.disabled,editing = _this$props6.editing,error = _this$props6.error,onFocus = _this$props6.onFocus,onInputBlur = _this$props6.onInputBlur,onInputValueChange = _this$props6.onInputValueChange,onInputFocus = _this$props6.onInputFocus,onInputClick = _this$props6.onInputClick,onInputKeyDown = _this$props6.onInputKeyDown,placeholder = _this$props6.placeholder,textValue = _this$props6.textValue,value = _this$props6.value,warning = _this$props6.warning,refInputLikeText = _this$props6.refInputLikeText,leftIcon = _this$props6.leftIcon,inputMode = _this$props6.inputMode,ariaDescribedby = _this$props6['aria-describedby'];var _this$getProps3 = this.getProps(),renderValue = _this$getProps3.renderValue,size = _this$getProps3.size;var rightIcon = this.getRightIcon();if (editing) {return /*#__PURE__*/_react.default.createElement(_Input.Input, { align: align, borderless: borderless, disabled: disabled, error: error, maxLength: this.props.maxLength, onBlur: isMobile ? undefined : onInputBlur, onValueChange: onInputValueChange, onFocus: isMobile ? this.handleFocusMobile : onInputFocus, onClick: isMobile ? this.handleFocusMobile : onInputClick, leftIcon: leftIcon, rightIcon: rightIcon, value: textValue || '', onKeyDown: onInputKeyDown, placeholder: placeholder, width: "100%", size: size, ref: this.refInput, warning: warning, inputMode: inputMode, "aria-describedby": ariaDescribedby, "aria-controls": this.menuId });}return /*#__PURE__*/_react.default.createElement(_InputLikeText.InputLikeText, { align: align, borderless: borderless, error: error, onFocus: onFocus, leftIcon: leftIcon, rightIcon: rightIcon, disabled: disabled, warning: warning, placeholder: placeholder, size: size, width: "100%", ref: refInputLikeText, "aria-describedby": ariaDescribedby, "aria-controls": this.menuId }, (0, _utils.isNonNullable)(value) && renderValue ? renderValue(value) : null);};return ComboBoxView;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'ComboBoxView', _class2.defaultProps = { renderItem: function renderItem(item) {return item;}, renderValue: function renderValue(item) {return item;}, renderAddButton: function renderAddButton() {return null;}, repeatRequest: function repeatRequest() {return undefined;}, requestStatus: _CustomComboBoxTypes.ComboBoxRequestStatus.Unknown, onClickOutside: function onClickOutside() {/**/}, onFocusOutside: function onFocusOutside() {/**/}, size: 'small', width: 250 }, _temp)) || _class) || _class;exports.ComboBoxView = ComboBoxView;
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBoxView.tsx"],"names":["ComboBoxView","responsiveLayout","rootNode","getProps","defaultProps","mobileInput","dropdownContainerRef","React","createRef","state","isMobileOpened","getComboBoxMenu","props","items","loading","opened","refMenu","maxMenuHeight","renderTotalCount","renderNotFound","totalCount","repeatRequest","requestStatus","renderItem","itemWrapper","handleItemSelect","renderAddButton","isMobileLayout","renderMenu","menuAlign","menuPos","getParent","disablePortal","renderMobileMenu","rightIcon","length","renderSpinner","inputProps","autoFocus","width","onFocus","onValueChange","onInputValueChange","value","textValue","placeholder","refMobileInput","handleCloseMobile","setState","onInputBlur","handleFocusMobile","focus","item","refInput","input","styles","spinnerWrapper","getRightIcon","drawArrow","size","theme","rightIconWrapper","componentDidMount","current","position","componentDidUpdate","prevProps","editing","render","renderMain","onMouseEnter","onMouseLeave","onMouseOver","onClickOutside","onFocusOutside","isMobile","renderInput","CustomComboBoxDataTids","comboBoxView","root","setRootNode","align","borderless","disabled","error","onInputFocus","onInputClick","onInputKeyDown","warning","refInputLikeText","leftIcon","inputMode","ariaDescribedby","renderValue","maxLength","undefined","Component","__KONTUR_REACT_UI__","ComboBoxRequestStatus","Unknown"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { DropdownContainer, DropdownContainerProps } from '../DropdownContainer';\nimport { Input, InputIconType, InputProps } from '../../components/Input';\nimport { InputLikeText } from '../InputLikeText';\nimport { Menu } from '../Menu';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { RenderLayer } from '../RenderLayer';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ArrowChevronDownIcon } from '../icons/16px';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../MobilePopup';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, getRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { LoadingIcon } from '../icons2022/LoadingIcon';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\nimport { CustomComboBoxDataTids } from './CustomComboBox';\nimport { getComboBoxTheme } from './getComboBoxTheme';\n\ninterface ComboBoxViewProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n editing?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n items?: Nullable<T[]>;\n loading?: boolean;\n menuAlign?: 'left' | 'right';\n opened?: boolean;\n drawArrow?: boolean;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n textValue?: string;\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n width?: string | number;\n maxLength?: number;\n maxMenuHeight?: number | string;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n\n onValueChange?: (value: T) => void;\n onClickOutside?: (e: Event) => void;\n onFocus?: () => void;\n onFocusOutside?: () => void;\n onInputBlur?: () => void;\n onInputValueChange?: (value: string) => void;\n onInputFocus?: () => void;\n onInputClick?: () => void;\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderValue?: (item: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n refInput?: (input: Nullable<Input>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\n}\n\ninterface ComboBoxViewState {\n isMobileOpened: boolean;\n}\n\ntype DefaultProps<T> = Required<\n Pick<\n ComboBoxViewProps<T>,\n | 'renderItem'\n | 'renderValue'\n | 'renderAddButton'\n | 'repeatRequest'\n | 'requestStatus'\n | 'onClickOutside'\n | 'onFocusOutside'\n | 'size'\n | 'width'\n >\n>;\n\n@responsiveLayout\n@rootNode\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, ComboBoxViewState> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n\n public static defaultProps: DefaultProps<unknown> = {\n renderItem: (item: any) => item,\n renderValue: (item: any) => item,\n renderAddButton: () => null,\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n onClickOutside: () => {\n /**/\n },\n onFocusOutside: () => {\n /**/\n },\n size: 'small',\n width: 250,\n };\n\n private getProps = createPropsGetter(ComboBoxView.defaultProps);\n\n private input: Nullable<Input>;\n private setRootNode!: TSetRootNode;\n private mobileInput: Nullable<Input> = null;\n private isMobileLayout!: boolean;\n private dropdownContainerRef = React.createRef<DropdownContainer>();\n private theme!: Theme;\n\n public componentDidMount() {\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n this.props.opened && this.dropdownContainerRef.current?.position();\n }\n\n public state: ComboBoxViewState = {\n isMobileOpened: false,\n };\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getComboBoxTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { onMouseEnter, onMouseLeave, onMouseOver, opened } = this.props;\n const { onClickOutside, onFocusOutside, width } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n const input = this.renderInput();\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n data-tid={CustomComboBoxDataTids.comboBoxView}\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n ref={this.setRootNode}\n >\n {input}\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getComboBoxMenu = () => {\n const { items, loading, opened, refMenu, maxMenuHeight, renderTotalCount, renderNotFound, totalCount } = this.props;\n\n const { repeatRequest, requestStatus, renderItem, itemWrapper } = this.getProps();\n return (\n <ComboBoxMenu\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={this.handleItemSelect}\n opened={opened}\n refMenu={refMenu}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n itemWrapper={itemWrapper}\n renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n isMobile={this.isMobileLayout}\n />\n );\n };\n\n private renderMenu = () => {\n const { menuAlign, opened, menuPos } = this.props;\n\n return (\n opened && (\n <DropdownContainer\n menuPos={menuPos}\n align={menuAlign}\n getParent={this.getParent}\n disablePortal={this.props.disablePortal}\n ref={this.dropdownContainerRef}\n >\n {this.getComboBoxMenu()}\n </DropdownContainer>\n )\n );\n };\n\n private renderMobileMenu = () => {\n let rightIcon = null;\n\n const { loading, items } = this.props;\n if (loading && items && !!items.length) {\n rightIcon = this.renderSpinner();\n }\n\n const inputProps: InputProps = {\n autoFocus: true,\n width: '100%',\n onFocus: this.props.onFocus,\n onValueChange: this.props.onInputValueChange,\n value: this.props.textValue,\n placeholder: this.props.placeholder,\n rightIcon,\n };\n\n return (\n <MobilePopup\n headerChildComponent={<Input ref={this.refMobileInput} {...inputProps} />}\n onCloseRequest={this.handleCloseMobile}\n opened={this.state.isMobileOpened}\n >\n {this.getComboBoxMenu()}\n </MobilePopup>\n );\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n if (this.props.onInputBlur) {\n this.props.onInputBlur();\n }\n };\n\n private getParent = () => {\n return getRootNode(this);\n };\n\n private renderAddButton = (): React.ReactNode => {\n return this.getProps().renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\n const isMobile = this.isMobileLayout;\n\n const {\n align,\n borderless,\n disabled,\n editing,\n error,\n onFocus,\n onInputBlur,\n onInputValueChange,\n onInputFocus,\n onInputClick,\n onInputKeyDown,\n placeholder,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n 'aria-describedby': ariaDescribedby,\n } = this.props;\n\n const { renderValue, size } = this.getProps();\n\n const rightIcon = this.getRightIcon();\n\n if (editing) {\n return (\n <Input\n align={align}\n borderless={borderless}\n disabled={disabled}\n error={error}\n maxLength={this.props.maxLength}\n onBlur={isMobile ? undefined : onInputBlur}\n onValueChange={onInputValueChange}\n onFocus={isMobile ? this.handleFocusMobile : onInputFocus}\n onClick={isMobile ? this.handleFocusMobile : onInputClick}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n value={textValue || ''}\n onKeyDown={onInputKeyDown}\n placeholder={placeholder}\n width=\"100%\"\n size={size}\n ref={this.refInput}\n warning={warning}\n inputMode={inputMode}\n aria-describedby={ariaDescribedby}\n />\n );\n }\n\n return (\n <InputLikeText\n align={align}\n borderless={borderless}\n error={error}\n onFocus={onFocus}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n disabled={disabled}\n warning={warning}\n placeholder={placeholder}\n size={size}\n width=\"100%\"\n ref={refInputLikeText}\n aria-describedby={ariaDescribedby}\n >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleFocusMobile = () => {\n this.setState({\n isMobileOpened: true,\n });\n\n if (this.mobileInput) {\n this.mobileInput.focus();\n }\n };\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\n }\n\n if (this.isMobileLayout) {\n this.handleCloseMobile();\n }\n };\n\n private refInput = (input: Nullable<Input>) => {\n if (this.props.refInput) {\n this.props.refInput(input);\n }\n this.input = input;\n };\n\n private renderSpinner = () => (\n <span className={styles.spinnerWrapper()}>\n <Spinner type=\"mini\" caption=\"\" dimmed />\n </span>\n );\n\n private getRightIcon = () => {\n const { loading, items, drawArrow, rightIcon, size } = this.props;\n\n if (loading && items && !!items.length) {\n if (isTheme2022(this.theme)) {\n return <LoadingIcon size={size} />;\n }\n return this.renderSpinner();\n }\n\n if (rightIcon || drawArrow) {\n if (isTheme2022(this.theme)) {\n return rightIcon || <ArrowDownIcon size={size} />;\n }\n return <span className={styles.rightIconWrapper()}>{rightIcon ?? <ArrowChevronDownIcon />}</span>;\n }\n\n return null;\n };\n\n private refMobileInput = (input: Nullable<Input>) => {\n this.mobileInput = input;\n };\n}\n"]}
1
+ {"version":3,"sources":["ComboBoxView.tsx"],"names":["ComboBoxViewIds","menu","ComboBoxView","responsiveLayout","rootNode","getProps","defaultProps","mobileInput","dropdownContainerRef","React","createRef","menuId","state","isMobileOpened","getComboBoxMenu","props","items","loading","opened","refMenu","maxMenuHeight","renderTotalCount","renderNotFound","totalCount","repeatRequest","requestStatus","renderItem","itemWrapper","handleItemSelect","renderAddButton","isMobileLayout","renderMenu","menuAlign","menuPos","getParent","disablePortal","renderMobileMenu","rightIcon","length","renderSpinner","inputProps","autoFocus","width","onFocus","onValueChange","onInputValueChange","value","textValue","placeholder","refMobileInput","handleCloseMobile","setState","onInputBlur","handleFocusMobile","focus","item","refInput","input","styles","spinnerWrapper","getRightIcon","drawArrow","size","theme","rightIconWrapper","componentDidMount","current","position","componentDidUpdate","prevProps","editing","render","renderMain","onMouseEnter","onMouseLeave","onMouseOver","onClickOutside","onFocusOutside","isMobile","renderInput","CustomComboBoxDataTids","comboBoxView","root","setRootNode","align","borderless","disabled","error","onInputFocus","onInputClick","onInputKeyDown","warning","refInputLikeText","leftIcon","inputMode","ariaDescribedby","renderValue","maxLength","undefined","Component","__KONTUR_REACT_UI__","ComboBoxRequestStatus","Unknown"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport { DropdownContainer, DropdownContainerProps } from '../DropdownContainer';\nimport { Input, InputIconType, InputProps } from '../../components/Input';\nimport { InputLikeText } from '../InputLikeText';\nimport { Menu } from '../Menu';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { RenderLayer } from '../RenderLayer';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ArrowChevronDownIcon } from '../icons/16px';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../MobilePopup';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport { rootNode, getRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { LoadingIcon } from '../icons2022/LoadingIcon';\n\nimport { ArrowDownIcon } from './ArrowDownIcon';\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\nimport { CustomComboBoxDataTids } from './CustomComboBox';\nimport { getComboBoxTheme } from './getComboBoxTheme';\n\ninterface ComboBoxViewProps<T> extends Pick<DropdownContainerProps, 'menuPos'>, CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n editing?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n items?: Nullable<T[]>;\n loading?: boolean;\n menuAlign?: 'left' | 'right';\n opened?: boolean;\n drawArrow?: boolean;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n textValue?: string;\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n width?: string | number;\n maxLength?: number;\n maxMenuHeight?: number | string;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n\n onValueChange?: (value: T) => void;\n onClickOutside?: (e: Event) => void;\n onFocus?: () => void;\n onFocusOutside?: () => void;\n onInputBlur?: () => void;\n onInputValueChange?: (value: string) => void;\n onInputFocus?: () => void;\n onInputClick?: () => void;\n onInputKeyDown?: (e: React.KeyboardEvent) => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n renderItem?: (item: T, state: MenuItemState) => React.ReactNode;\n itemWrapper?: (item?: T) => React.ComponentType<unknown>;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderValue?: (item: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n refInput?: (input: Nullable<Input>) => void;\n refMenu?: (menu: Nullable<Menu>) => void;\n refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;\n}\n\ninterface ComboBoxViewState {\n isMobileOpened: boolean;\n}\n\ntype DefaultProps<T> = Required<\n Pick<\n ComboBoxViewProps<T>,\n | 'renderItem'\n | 'renderValue'\n | 'renderAddButton'\n | 'repeatRequest'\n | 'requestStatus'\n | 'onClickOutside'\n | 'onFocusOutside'\n | 'size'\n | 'width'\n >\n>;\n\nexport const ComboBoxViewIds = {\n menu: 'ComboBoxView__menu',\n};\n\n@responsiveLayout\n@rootNode\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, ComboBoxViewState> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n\n public static defaultProps: DefaultProps<unknown> = {\n renderItem: (item: any) => item,\n renderValue: (item: any) => item,\n renderAddButton: () => null,\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n onClickOutside: () => {\n /**/\n },\n onFocusOutside: () => {\n /**/\n },\n size: 'small',\n width: 250,\n };\n\n private getProps = createPropsGetter(ComboBoxView.defaultProps);\n\n private input: Nullable<Input>;\n private setRootNode!: TSetRootNode;\n private mobileInput: Nullable<Input> = null;\n private isMobileLayout!: boolean;\n private dropdownContainerRef = React.createRef<DropdownContainer>();\n private theme!: Theme;\n private menuId = ComboBoxViewIds.menu + getRandomID();\n\n public componentDidMount() {\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n this.props.opened && this.dropdownContainerRef.current?.position();\n }\n\n public state: ComboBoxViewState = {\n isMobileOpened: false,\n };\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getComboBoxTheme(theme);\n return <ThemeContext.Provider value={this.theme}>{this.renderMain()}</ThemeContext.Provider>;\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { onMouseEnter, onMouseLeave, onMouseOver, opened } = this.props;\n const { onClickOutside, onFocusOutside, width } = this.getProps();\n\n const isMobile = this.isMobileLayout;\n\n const input = this.renderInput();\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n data-tid={CustomComboBoxDataTids.comboBoxView}\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n ref={this.setRootNode}\n >\n {input}\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getComboBoxMenu = () => {\n const { items, loading, opened, refMenu, maxMenuHeight, renderTotalCount, renderNotFound, totalCount } = this.props;\n\n const { repeatRequest, requestStatus, renderItem, itemWrapper } = this.getProps();\n return (\n <ComboBoxMenu\n menuId={this.menuId}\n items={items}\n loading={loading}\n maxMenuHeight={maxMenuHeight}\n onValueChange={this.handleItemSelect}\n opened={opened}\n refMenu={refMenu}\n renderTotalCount={renderTotalCount}\n renderItem={renderItem}\n renderNotFound={renderNotFound}\n itemWrapper={itemWrapper}\n renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n isMobile={this.isMobileLayout}\n />\n );\n };\n\n private renderMenu = () => {\n const { menuAlign, opened, menuPos } = this.props;\n\n return (\n opened && (\n <DropdownContainer\n menuPos={menuPos}\n align={menuAlign}\n getParent={this.getParent}\n disablePortal={this.props.disablePortal}\n ref={this.dropdownContainerRef}\n >\n {this.getComboBoxMenu()}\n </DropdownContainer>\n )\n );\n };\n\n private renderMobileMenu = () => {\n let rightIcon = null;\n\n const { loading, items } = this.props;\n if (loading && items && !!items.length) {\n rightIcon = this.renderSpinner();\n }\n\n const inputProps: InputProps = {\n autoFocus: true,\n width: '100%',\n onFocus: this.props.onFocus,\n onValueChange: this.props.onInputValueChange,\n value: this.props.textValue,\n placeholder: this.props.placeholder,\n rightIcon,\n };\n\n return (\n <MobilePopup\n headerChildComponent={<Input ref={this.refMobileInput} {...inputProps} />}\n onCloseRequest={this.handleCloseMobile}\n opened={this.state.isMobileOpened}\n >\n {this.getComboBoxMenu()}\n </MobilePopup>\n );\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n if (this.props.onInputBlur) {\n this.props.onInputBlur();\n }\n };\n\n private getParent = () => {\n return getRootNode(this);\n };\n\n private renderAddButton = (): React.ReactNode => {\n return this.getProps().renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\n const isMobile = this.isMobileLayout;\n\n const {\n align,\n borderless,\n disabled,\n editing,\n error,\n onFocus,\n onInputBlur,\n onInputValueChange,\n onInputFocus,\n onInputClick,\n onInputKeyDown,\n placeholder,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n 'aria-describedby': ariaDescribedby,\n } = this.props;\n\n const { renderValue, size } = this.getProps();\n\n const rightIcon = this.getRightIcon();\n\n if (editing) {\n return (\n <Input\n align={align}\n borderless={borderless}\n disabled={disabled}\n error={error}\n maxLength={this.props.maxLength}\n onBlur={isMobile ? undefined : onInputBlur}\n onValueChange={onInputValueChange}\n onFocus={isMobile ? this.handleFocusMobile : onInputFocus}\n onClick={isMobile ? this.handleFocusMobile : onInputClick}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n value={textValue || ''}\n onKeyDown={onInputKeyDown}\n placeholder={placeholder}\n width=\"100%\"\n size={size}\n ref={this.refInput}\n warning={warning}\n inputMode={inputMode}\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n />\n );\n }\n\n return (\n <InputLikeText\n align={align}\n borderless={borderless}\n error={error}\n onFocus={onFocus}\n leftIcon={leftIcon}\n rightIcon={rightIcon}\n disabled={disabled}\n warning={warning}\n placeholder={placeholder}\n size={size}\n width=\"100%\"\n ref={refInputLikeText}\n aria-describedby={ariaDescribedby}\n aria-controls={this.menuId}\n >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleFocusMobile = () => {\n this.setState({\n isMobileOpened: true,\n });\n\n if (this.mobileInput) {\n this.mobileInput.focus();\n }\n };\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\n }\n\n if (this.isMobileLayout) {\n this.handleCloseMobile();\n }\n };\n\n private refInput = (input: Nullable<Input>) => {\n if (this.props.refInput) {\n this.props.refInput(input);\n }\n this.input = input;\n };\n\n private renderSpinner = () => (\n <span className={styles.spinnerWrapper()}>\n <Spinner type=\"mini\" caption=\"\" dimmed />\n </span>\n );\n\n private getRightIcon = () => {\n const { loading, items, drawArrow, rightIcon, size } = this.props;\n\n if (loading && items && !!items.length) {\n if (isTheme2022(this.theme)) {\n return <LoadingIcon size={size} />;\n }\n return this.renderSpinner();\n }\n\n if (rightIcon || drawArrow) {\n if (isTheme2022(this.theme)) {\n return rightIcon || <ArrowDownIcon size={size} />;\n }\n return <span className={styles.rightIconWrapper()}>{rightIcon ?? <ArrowChevronDownIcon />}</span>;\n }\n\n return null;\n };\n\n private refMobileInput = (input: Nullable<Input>) => {\n this.mobileInput = input;\n };\n}\n"]}
@@ -324,33 +324,35 @@ CustomComboBox = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
324
324
 
325
325
 
326
326
 
327
-
328
-
329
-
330
-
331
327
 
332
328
 
333
329
 
334
330
 
335
331
 
336
332
  dispatch = function (action) {
337
- var effects;
338
- var nextState;
333
+ var updateState = function updateState(action) {
334
+ var effects;
335
+ var nextState;
339
336
 
340
- _reactDom.default.flushSync(function () {
341
337
  _this.setState(
342
338
  function (state) {
343
339
  var stateAndEffect = _this.reducer(state, _this.props, action);var _ref =
344
-
345
340
  stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];nextState = _ref[0];effects = _ref[1];
346
-
347
341
  return nextState;
348
342
  },
349
343
  function () {
350
344
  effects.forEach(_this.handleEffect);
351
345
  });
352
346
 
353
- });
347
+ };
348
+
349
+ // Auto-batching React@18 creates problems that are fixed with flushSync
350
+ // https://github.com/skbkontur/retail-ui/pull/3144#issuecomment-1535235366
351
+ if (_react.default.version.search('18') === 0) {
352
+ _reactDom.default.flushSync(function () {return updateState(action);});
353
+ } else {
354
+ updateState(action);
355
+ }
354
356
  };_this.
355
357
 
356
358
  handleEffect = function (effect) {
@@ -424,6 +426,6 @@ CustomComboBox = (0, _decorator.responsiveLayout)(_class = (0, _rootNode.rootNod
424
426
  * @public
425
427
  */;_proto.open = function open() {this.dispatch({ type: 'Open' });} /**
426
428
  * @public
427
- */;_proto.close = function close() {this.dispatch({ type: 'Close' });};_proto.render = function render() {var _this3 = this;var viewProps = { align: this.props.align, borderless: this.props.borderless, disabled: this.props.disabled, disablePortal: this.props.disablePortal, editing: this.state.editing, error: this.props.error, items: this.state.items, loading: this.state.loading, menuAlign: this.props.menuAlign, opened: this.state.opened, drawArrow: this.props.drawArrow, menuPos: this.props.menuPos, placeholder: this.props.placeholder, size: this.props.size, textValue: this.state.textValue, totalCount: this.props.totalCount, value: this.props.value, warning: this.props.warning, 'aria-describedby': this.props['aria-describedby'], width: this.props.width, maxLength: this.props.maxLength, maxMenuHeight: this.props.maxMenuHeight, leftIcon: this.props.leftIcon, rightIcon: this.props.rightIcon, inputMode: this.props.inputMode, onValueChange: this.handleValueChange, onClickOutside: this.handleClickOutside, onFocus: this.handleFocus, onFocusOutside: this.handleBlur, onInputBlur: this.handleInputBlur, onInputValueChange: function onInputValueChange(value) {return _this3.dispatch({ type: 'TextChange', value: value });}, onInputFocus: this.handleFocus, onInputClick: this.handleInputClick, onInputKeyDown: function onInputKeyDown(event) {event.persist();_this3.dispatch({ type: 'KeyPress', event: event });}, onMouseEnter: this.props.onMouseEnter, onMouseOver: this.props.onMouseOver, onMouseLeave: this.props.onMouseLeave, renderItem: this.props.renderItem, renderNotFound: this.props.renderNotFound, itemWrapper: this.props.itemWrapper, renderValue: this.props.renderValue, renderTotalCount: this.props.renderTotalCount, renderAddButton: this.props.renderAddButton, repeatRequest: this.state.repeatRequest, requestStatus: this.state.requestStatus, refInput: function refInput(input) {_this3.input = input;}, refMenu: function refMenu(menu) {_this3.menu = menu;}, refInputLikeText: function refInputLikeText(inputLikeText) {_this3.inputLikeText = inputLikeText;} };return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, /*#__PURE__*/_react.default.createElement(_ComboBoxView.ComboBoxView, (0, _extends2.default)({}, viewProps, { ref: this.setRootNode })));};_proto.componentDidMount = function componentDidMount() {var _this4 = this;setTimeout(function () {_this4.dispatch({ type: 'Mount' });}, 0);if (this.props.autoFocus) {this.focus();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var _this5 = this;if (prevState.editing && !this.state.editing) {this.handleBlur();}setTimeout(function () {_this5.dispatch({ type: 'DidUpdate', prevProps: prevProps, prevState: prevState });}, 0);} /**
429
+ */;_proto.close = function close() {this.dispatch({ type: 'Close' });};_proto.render = function render() {var _this3 = this;var viewProps = { align: this.props.align, borderless: this.props.borderless, disabled: this.props.disabled, disablePortal: this.props.disablePortal, editing: this.state.editing, error: this.props.error, items: this.state.items, loading: this.state.loading, menuAlign: this.props.menuAlign, opened: this.state.opened, drawArrow: this.props.drawArrow, menuPos: this.props.menuPos, placeholder: this.props.placeholder, size: this.props.size, textValue: this.state.textValue, totalCount: this.props.totalCount, value: this.props.value, warning: this.props.warning, 'aria-describedby': this.props['aria-describedby'], width: this.props.width, maxLength: this.props.maxLength, maxMenuHeight: this.props.maxMenuHeight, leftIcon: this.props.leftIcon, rightIcon: this.props.rightIcon, inputMode: this.props.inputMode, onValueChange: this.handleValueChange, onClickOutside: this.handleClickOutside, onFocus: this.handleFocus, onFocusOutside: this.handleBlur, onInputBlur: this.handleInputBlur, onInputValueChange: function onInputValueChange(value) {return _this3.dispatch({ type: 'TextChange', value: value });}, onInputFocus: this.handleFocus, onInputClick: this.handleInputClick, onInputKeyDown: function onInputKeyDown(event) {event.persist();_this3.dispatch({ type: 'KeyPress', event: event });}, onMouseEnter: this.props.onMouseEnter, onMouseOver: this.props.onMouseOver, onMouseLeave: this.props.onMouseLeave, renderItem: this.props.renderItem, renderNotFound: this.props.renderNotFound, itemWrapper: this.props.itemWrapper, renderValue: this.props.renderValue, renderTotalCount: this.props.renderTotalCount, renderAddButton: this.props.renderAddButton, repeatRequest: this.state.repeatRequest, requestStatus: this.state.requestStatus, refInput: function refInput(input) {_this3.input = input;}, refMenu: function refMenu(menu) {_this3.menu = menu;}, refInputLikeText: function refInputLikeText(inputLikeText) {_this3.inputLikeText = inputLikeText;} };return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, /*#__PURE__*/_react.default.createElement(_ComboBoxView.ComboBoxView, (0, _extends2.default)({}, viewProps, { ref: this.setRootNode })));};_proto.componentDidMount = function componentDidMount() {this.dispatch({ type: 'Mount' });if (this.props.autoFocus) {this.focus();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {if (prevState.editing && !this.state.editing) {this.handleBlur();}this.dispatch({ type: 'DidUpdate', prevProps: prevProps, prevState: prevState });} /**
428
430
  * @public
429
431
  */;_proto.reset = function reset() {this.dispatch({ type: 'Reset' });};return CustomComboBox;}(_react.default.PureComponent), _class2.__KONTUR_REACT_UI__ = 'CustomComboBox', _temp)) || _class) || _class;exports.CustomComboBox = CustomComboBox;