@skbkontur/react-ui 3.10.0-fileuploader.1 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (736) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +57 -0
  3. package/cjs/components/Autocomplete/Autocomplete.d.ts +1 -0
  4. package/cjs/components/Autocomplete/Autocomplete.js +11 -5
  5. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/cjs/components/Button/Button.d.ts +5 -1
  7. package/cjs/components/Button/Button.js +17 -5
  8. package/cjs/components/Button/Button.js.map +1 -1
  9. package/cjs/components/Button/Button.styles.d.ts +1 -0
  10. package/cjs/components/Button/Button.styles.js +38 -28
  11. package/cjs/components/Button/Button.styles.js.map +1 -1
  12. package/cjs/components/Center/Center.d.ts +1 -0
  13. package/cjs/components/Center/Center.js +10 -3
  14. package/cjs/components/Center/Center.js.map +1 -1
  15. package/cjs/components/Checkbox/Checkbox.d.ts +3 -3
  16. package/cjs/components/Checkbox/Checkbox.js +31 -22
  17. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  18. package/cjs/components/ComboBox/ComboBox.d.ts +2 -0
  19. package/cjs/components/ComboBox/ComboBox.js +100 -70
  20. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  21. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +4 -3
  22. package/cjs/components/CurrencyInput/CurrencyInput.js +35 -4
  23. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  24. package/cjs/components/DateInput/DateInput.d.ts +1 -0
  25. package/cjs/components/DateInput/DateInput.js +6 -3
  26. package/cjs/components/DateInput/DateInput.js.map +1 -1
  27. package/cjs/components/DatePicker/DatePicker.d.ts +4 -2
  28. package/cjs/components/DatePicker/DatePicker.js +17 -7
  29. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  30. package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
  31. package/cjs/components/Dropdown/Dropdown.js +11 -4
  32. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  33. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +3 -2
  34. package/cjs/components/DropdownMenu/DropdownMenu.js +7 -4
  35. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  36. package/cjs/components/FxInput/FxInput.d.ts +1 -0
  37. package/cjs/components/FxInput/FxInput.js +9 -2
  38. package/cjs/components/FxInput/FxInput.js.map +1 -1
  39. package/cjs/components/Gapped/Gapped.d.ts +2 -0
  40. package/cjs/components/Gapped/Gapped.js +22 -14
  41. package/cjs/components/Gapped/Gapped.js.map +1 -1
  42. package/cjs/components/Group/Group.d.ts +1 -0
  43. package/cjs/components/Group/Group.js +10 -7
  44. package/cjs/components/Group/Group.js.map +1 -1
  45. package/cjs/components/Hint/Hint.d.ts +5 -3
  46. package/cjs/components/Hint/Hint.js +7 -20
  47. package/cjs/components/Hint/Hint.js.map +1 -1
  48. package/cjs/components/Input/Input.d.ts +8 -1
  49. package/cjs/components/Input/Input.js +22 -5
  50. package/cjs/components/Input/Input.js.map +1 -1
  51. package/cjs/components/Kebab/Kebab.d.ts +3 -2
  52. package/cjs/components/Kebab/Kebab.js +8 -5
  53. package/cjs/components/Kebab/Kebab.js.map +1 -1
  54. package/cjs/components/Link/Link.d.ts +1 -0
  55. package/cjs/components/Link/Link.js +11 -3
  56. package/cjs/components/Link/Link.js.map +1 -1
  57. package/cjs/components/Loader/Loader.d.ts +1 -0
  58. package/cjs/components/Loader/Loader.js +11 -7
  59. package/cjs/components/Loader/Loader.js.map +1 -1
  60. package/cjs/components/MenuItem/MenuItem.d.ts +2 -1
  61. package/cjs/components/MenuItem/MenuItem.js +11 -8
  62. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  63. package/cjs/components/Modal/Modal.js +1 -1
  64. package/cjs/components/Modal/Modal.js.map +1 -1
  65. package/cjs/components/Modal/ModalBody.d.ts +1 -0
  66. package/cjs/components/Modal/ModalBody.js +9 -6
  67. package/cjs/components/Modal/ModalBody.js.map +1 -1
  68. package/cjs/components/Paging/Paging.d.ts +2 -2
  69. package/cjs/components/Paging/Paging.js +6 -5
  70. package/cjs/components/Paging/Paging.js.map +1 -1
  71. package/cjs/components/PasswordInput/PasswordInput.d.ts +3 -2
  72. package/cjs/components/PasswordInput/PasswordInput.js +13 -6
  73. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  74. package/cjs/components/Radio/Radio.d.ts +5 -10
  75. package/cjs/components/Radio/Radio.js +15 -11
  76. package/cjs/components/Radio/Radio.js.map +1 -1
  77. package/cjs/components/RadioGroup/RadioGroup.d.ts +11 -26
  78. package/cjs/components/RadioGroup/RadioGroup.js +25 -29
  79. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  80. package/cjs/components/RadioGroup/RadioGroupContext.d.ts +10 -0
  81. package/cjs/components/RadioGroup/RadioGroupContext.js +21 -0
  82. package/cjs/components/RadioGroup/RadioGroupContext.js.map +1 -0
  83. package/cjs/components/ScrollContainer/ScrollBar.js +4 -2
  84. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  85. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  86. package/cjs/components/ScrollContainer/ScrollContainer.js +10 -6
  87. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  88. package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
  89. package/cjs/components/ScrollContainer/ScrollContainer.styles.js +12 -8
  90. package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  91. package/cjs/components/Select/Select.d.ts +1 -0
  92. package/cjs/components/Select/Select.js +8 -5
  93. package/cjs/components/Select/Select.js.map +1 -1
  94. package/cjs/components/SidePage/SidePage.d.ts +3 -0
  95. package/cjs/components/SidePage/SidePage.js +20 -2
  96. package/cjs/components/SidePage/SidePage.js.map +1 -1
  97. package/cjs/components/SidePage/SidePageBody.d.ts +1 -0
  98. package/cjs/components/SidePage/SidePageBody.js +9 -6
  99. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  100. package/cjs/components/SidePage/SidePageContainer.d.ts +1 -0
  101. package/cjs/components/SidePage/SidePageContainer.js +9 -6
  102. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  103. package/cjs/components/SidePage/SidePageFooter.d.ts +1 -2
  104. package/cjs/components/SidePage/SidePageFooter.js +11 -12
  105. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  106. package/cjs/components/SidePage/SidePageHeader.d.ts +1 -0
  107. package/cjs/components/SidePage/SidePageHeader.js +6 -3
  108. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  109. package/cjs/components/Spinner/Spinner.d.ts +9 -0
  110. package/cjs/components/Spinner/Spinner.js +29 -8
  111. package/cjs/components/Spinner/Spinner.js.map +1 -1
  112. package/cjs/components/Spinner/Spinner.md +1 -0
  113. package/cjs/components/Spinner/Spinner.styles.d.ts +2 -1
  114. package/cjs/components/Spinner/Spinner.styles.js +13 -10
  115. package/cjs/components/Spinner/Spinner.styles.js.map +1 -1
  116. package/cjs/components/Sticky/Sticky.d.ts +1 -0
  117. package/cjs/components/Sticky/Sticky.js +8 -5
  118. package/cjs/components/Sticky/Sticky.js.map +1 -1
  119. package/cjs/components/Switcher/Switcher.d.ts +1 -0
  120. package/cjs/components/Switcher/Switcher.js +6 -3
  121. package/cjs/components/Switcher/Switcher.js.map +1 -1
  122. package/cjs/components/Switcher/Switcher.styles.js +4 -2
  123. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  124. package/cjs/components/Tabs/Indicator.d.ts +1 -0
  125. package/cjs/components/Tabs/Indicator.js +16 -15
  126. package/cjs/components/Tabs/Indicator.js.map +1 -1
  127. package/cjs/components/Tabs/Tab.d.ts +2 -1
  128. package/cjs/components/Tabs/Tab.js +13 -9
  129. package/cjs/components/Tabs/Tab.js.map +1 -1
  130. package/cjs/components/Tabs/Tabs.d.ts +1 -0
  131. package/cjs/components/Tabs/Tabs.js +9 -9
  132. package/cjs/components/Tabs/Tabs.js.map +1 -1
  133. package/cjs/components/Textarea/Textarea.d.ts +1 -0
  134. package/cjs/components/Textarea/Textarea.js +12 -5
  135. package/cjs/components/Textarea/Textarea.js.map +1 -1
  136. package/cjs/components/Toast/Toast.d.ts +3 -0
  137. package/cjs/components/Toast/Toast.js +15 -4
  138. package/cjs/components/Toast/Toast.js.map +1 -1
  139. package/cjs/components/Toast/ToastView.d.ts +1 -0
  140. package/cjs/components/Toast/ToastView.js +8 -5
  141. package/cjs/components/Toast/ToastView.js.map +1 -1
  142. package/cjs/components/Toggle/Toggle.d.ts +1 -0
  143. package/cjs/components/Toggle/Toggle.js +9 -6
  144. package/cjs/components/Toggle/Toggle.js.map +1 -1
  145. package/cjs/components/Token/Token.d.ts +1 -0
  146. package/cjs/components/Token/Token.js +7 -4
  147. package/cjs/components/Token/Token.js.map +1 -1
  148. package/cjs/components/TokenInput/TokenInput.d.ts +1 -0
  149. package/cjs/components/TokenInput/TokenInput.js +11 -8
  150. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  151. package/cjs/components/Tooltip/Tooltip.d.ts +11 -22
  152. package/cjs/components/Tooltip/Tooltip.js +28 -30
  153. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  154. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +3 -2
  155. package/cjs/components/TooltipMenu/TooltipMenu.js +8 -5
  156. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  157. package/cjs/index.d.ts +1 -1
  158. package/cjs/index.js +2 -2
  159. package/cjs/index.js.map +1 -1
  160. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  161. package/cjs/internal/CommonWrapper/CommonWrapper.js +38 -15
  162. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  163. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +3 -2
  164. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  165. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -1
  166. package/cjs/internal/CustomComboBox/ComboBoxView.js +15 -5
  167. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  168. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  169. package/cjs/internal/CustomComboBox/CustomComboBox.js +8 -5
  170. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  171. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -2
  172. package/cjs/internal/DateSelect/DateSelect.js +3 -3
  173. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  174. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  175. package/cjs/internal/DropdownContainer/DropdownContainer.js +8 -13
  176. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  177. package/cjs/internal/FocusTrap/FocusTrap.d.ts +1 -0
  178. package/cjs/internal/FocusTrap/FocusTrap.js +12 -9
  179. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  180. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +12 -4
  181. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  182. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  183. package/cjs/internal/InputLikeText/InputLikeText.js +10 -3
  184. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  185. package/cjs/internal/InternalMenu/InternalMenu.d.ts +2 -3
  186. package/cjs/internal/InternalMenu/InternalMenu.js +16 -22
  187. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  188. package/cjs/internal/MaskedInput/MaskedInput.d.ts +2 -2
  189. package/cjs/internal/MaskedInput/MaskedInput.js +3 -3
  190. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  191. package/cjs/internal/Menu/Menu.d.ts +1 -0
  192. package/cjs/internal/Menu/Menu.js +9 -6
  193. package/cjs/internal/Menu/Menu.js.map +1 -1
  194. package/cjs/internal/Popup/Popup.d.ts +9 -8
  195. package/cjs/internal/Popup/Popup.js +64 -48
  196. package/cjs/internal/Popup/Popup.js.map +1 -1
  197. package/cjs/internal/Popup/PopupHelper.d.ts +2 -2
  198. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  199. package/cjs/internal/Popup/types.d.ts +1 -0
  200. package/cjs/{components/FileUploader/locale → internal/Popup}/types.js +0 -0
  201. package/cjs/{components/FileUploader/locale → internal/Popup}/types.js.map +0 -0
  202. package/cjs/internal/PopupMenu/PopupMenu.d.ts +4 -3
  203. package/cjs/internal/PopupMenu/PopupMenu.js +23 -6
  204. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  205. package/cjs/internal/PopupMenu/validatePositions.d.ts +2 -2
  206. package/cjs/internal/PopupMenu/validatePositions.js +2 -4
  207. package/cjs/internal/PopupMenu/validatePositions.js.map +1 -1
  208. package/cjs/internal/RenderContainer/RenderContainer.d.ts +1 -1
  209. package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
  210. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  211. package/cjs/internal/RenderContainer/RenderInnerContainer.js +2 -3
  212. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  213. package/cjs/internal/RenderLayer/RenderLayer.d.ts +3 -1
  214. package/cjs/internal/RenderLayer/RenderLayer.js +13 -7
  215. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  216. package/cjs/internal/ThemePlayground/Playground.d.ts +0 -1
  217. package/cjs/internal/ThemePlayground/Playground.js +1 -11
  218. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  219. package/cjs/internal/ThemePlayground/darkTheme.d.ts +0 -15
  220. package/cjs/internal/ThemePlayground/darkTheme.js +1 -25
  221. package/cjs/internal/ThemePlayground/darkTheme.js.map +1 -1
  222. package/cjs/internal/ThemeShowcase/ThemeShowcase.d.ts +1 -1
  223. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +20 -19
  224. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  225. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  226. package/cjs/internal/ZIndex/ZIndex.d.ts +2 -0
  227. package/cjs/internal/ZIndex/ZIndex.js +45 -34
  228. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  229. package/cjs/internal/icons/16px/index.d.ts +17 -19
  230. package/cjs/internal/icons/16px/index.js +105 -84
  231. package/cjs/internal/icons/16px/index.js.map +1 -1
  232. package/cjs/internal/icons/SpinnerIcon.d.ts +4 -1
  233. package/cjs/internal/icons/SpinnerIcon.js +5 -2
  234. package/cjs/internal/icons/SpinnerIcon.js.map +1 -1
  235. package/cjs/internal/themes/DefaultTheme.d.ts +0 -23
  236. package/cjs/internal/themes/DefaultTheme.js +1 -64
  237. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  238. package/cjs/lib/ModalStack.js +16 -17
  239. package/cjs/lib/ModalStack.js.map +1 -1
  240. package/cjs/lib/callChildRef/callChildRef.d.ts +3 -0
  241. package/cjs/lib/callChildRef/callChildRef.js +19 -0
  242. package/cjs/lib/callChildRef/callChildRef.js.map +1 -0
  243. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +2 -0
  244. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js +20 -0
  245. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js.map +1 -0
  246. package/cjs/lib/getDisplayName.d.ts +3 -0
  247. package/cjs/lib/getDisplayName.js +9 -0
  248. package/cjs/lib/getDisplayName.js.map +1 -0
  249. package/cjs/lib/locale/types.d.ts +0 -2
  250. package/cjs/lib/locale/types.js +0 -2
  251. package/cjs/lib/locale/types.js.map +1 -1
  252. package/cjs/lib/rootNode/getRootNode.d.ts +3 -0
  253. package/cjs/lib/rootNode/getRootNode.js +27 -0
  254. package/cjs/lib/rootNode/getRootNode.js.map +1 -0
  255. package/cjs/lib/rootNode/index.d.ts +2 -0
  256. package/cjs/lib/rootNode/index.js +2 -0
  257. package/cjs/lib/rootNode/index.js.map +1 -0
  258. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +33 -0
  259. package/cjs/lib/rootNode/rootNodeDecorator.js +31 -0
  260. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -0
  261. package/cjs/lib/theming/AnimationKeyframes.js +1 -1
  262. package/cjs/lib/theming/AnimationKeyframes.js.map +1 -1
  263. package/cjs/lib/theming/Emotion.js +1 -0
  264. package/cjs/lib/theming/Emotion.js.map +1 -1
  265. package/cjs/lib/theming/useTheme.d.ts +1 -0
  266. package/cjs/lib/theming/useTheme.js +7 -0
  267. package/cjs/lib/theming/useTheme.js.map +1 -0
  268. package/cjs/lib/utils.d.ts +35 -1
  269. package/cjs/lib/utils.js +77 -22
  270. package/cjs/lib/utils.js.map +1 -1
  271. package/cjs/lib/withClassWrapper.d.ts +71 -0
  272. package/cjs/lib/withClassWrapper.js +59 -0
  273. package/cjs/lib/withClassWrapper.js.map +1 -0
  274. package/cjs/typings/html-props.d.ts +123 -0
  275. package/components/Autocomplete/Autocomplete/Autocomplete.js +19 -16
  276. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  277. package/components/Autocomplete/Autocomplete.d.ts +1 -0
  278. package/components/Button/Button/Button.js +24 -15
  279. package/components/Button/Button/Button.js.map +1 -1
  280. package/components/Button/Button.d.ts +5 -1
  281. package/components/Button/Button.styles/Button.styles.js +31 -28
  282. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  283. package/components/Button/Button.styles.d.ts +1 -0
  284. package/components/Center/Center/Center.js +14 -9
  285. package/components/Center/Center/Center.js.map +1 -1
  286. package/components/Center/Center.d.ts +1 -0
  287. package/components/Checkbox/Checkbox/Checkbox.js +34 -30
  288. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  289. package/components/Checkbox/Checkbox.d.ts +3 -3
  290. package/components/ComboBox/ComboBox/ComboBox.js +38 -32
  291. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  292. package/components/ComboBox/ComboBox.d.ts +2 -0
  293. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +62 -27
  294. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  295. package/components/CurrencyInput/CurrencyInput.d.ts +4 -3
  296. package/components/DateInput/DateInput/DateInput.js +7 -3
  297. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  298. package/components/DateInput/DateInput.d.ts +1 -0
  299. package/components/DatePicker/DatePicker/DatePicker.js +29 -22
  300. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  301. package/components/DatePicker/DatePicker.d.ts +4 -2
  302. package/components/Dropdown/Dropdown/Dropdown.js +15 -13
  303. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  304. package/components/Dropdown/Dropdown.d.ts +1 -0
  305. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +15 -9
  306. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  307. package/components/DropdownMenu/DropdownMenu.d.ts +3 -2
  308. package/components/FxInput/FxInput/FxInput.js +13 -9
  309. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  310. package/components/FxInput/FxInput.d.ts +1 -0
  311. package/components/Gapped/Gapped/Gapped.js +24 -21
  312. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  313. package/components/Gapped/Gapped.d.ts +2 -0
  314. package/components/Group/Group/Group.js +22 -9
  315. package/components/Group/Group/Group.js.map +1 -1
  316. package/components/Group/Group.d.ts +1 -0
  317. package/components/Hint/Hint/Hint.js +18 -12
  318. package/components/Hint/Hint/Hint.js.map +1 -1
  319. package/components/Hint/Hint.d.ts +5 -3
  320. package/components/Input/Input/Input.js +29 -14
  321. package/components/Input/Input/Input.js.map +1 -1
  322. package/components/Input/Input.d.ts +8 -1
  323. package/components/Kebab/Kebab/Kebab.js +12 -7
  324. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  325. package/components/Kebab/Kebab.d.ts +3 -2
  326. package/components/Link/Link/Link.js +15 -11
  327. package/components/Link/Link/Link.js.map +1 -1
  328. package/components/Link/Link.d.ts +1 -0
  329. package/components/Loader/Loader/Loader.js +19 -13
  330. package/components/Loader/Loader/Loader.js.map +1 -1
  331. package/components/Loader/Loader.d.ts +1 -0
  332. package/components/MenuItem/MenuItem/MenuItem.js +19 -17
  333. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  334. package/components/MenuItem/MenuItem.d.ts +2 -1
  335. package/components/Modal/Modal/Modal.js +1 -1
  336. package/components/Modal/Modal/Modal.js.map +1 -1
  337. package/components/Modal/ModalBody/ModalBody.js +16 -10
  338. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  339. package/components/Modal/ModalBody.d.ts +1 -0
  340. package/components/Paging/Paging/Paging.js +17 -14
  341. package/components/Paging/Paging/Paging.js.map +1 -1
  342. package/components/Paging/Paging.d.ts +2 -2
  343. package/components/PasswordInput/PasswordInput/PasswordInput.js +18 -14
  344. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  345. package/components/PasswordInput/PasswordInput.d.ts +3 -2
  346. package/components/Radio/Radio/Radio.js +21 -20
  347. package/components/Radio/Radio/Radio.js.map +1 -1
  348. package/components/Radio/Radio.d.ts +5 -10
  349. package/components/RadioGroup/RadioGroup/RadioGroup.js +36 -29
  350. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  351. package/components/RadioGroup/RadioGroup.d.ts +11 -26
  352. package/components/RadioGroup/RadioGroupContext/RadioGroupContext.js +12 -0
  353. package/components/RadioGroup/RadioGroupContext/RadioGroupContext.js.map +1 -0
  354. package/components/RadioGroup/RadioGroupContext/package.json +6 -0
  355. package/components/RadioGroup/RadioGroupContext.d.ts +10 -0
  356. package/components/ScrollContainer/ScrollBar/ScrollBar.js +6 -2
  357. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  358. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +15 -9
  359. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  360. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  361. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +11 -8
  362. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
  363. package/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
  364. package/components/Select/Select/Select.js +14 -6
  365. package/components/Select/Select/Select.js.map +1 -1
  366. package/components/Select/Select.d.ts +1 -0
  367. package/components/SidePage/SidePage/SidePage.js +27 -3
  368. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  369. package/components/SidePage/SidePage.d.ts +3 -0
  370. package/components/SidePage/SidePageBody/SidePageBody.js +16 -10
  371. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  372. package/components/SidePage/SidePageBody.d.ts +1 -0
  373. package/components/SidePage/SidePageContainer/SidePageContainer.js +16 -9
  374. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  375. package/components/SidePage/SidePageContainer.d.ts +1 -0
  376. package/components/SidePage/SidePageFooter/SidePageFooter.js +22 -19
  377. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  378. package/components/SidePage/SidePageFooter.d.ts +1 -2
  379. package/components/SidePage/SidePageHeader/SidePageHeader.js +15 -10
  380. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  381. package/components/SidePage/SidePageHeader.d.ts +1 -0
  382. package/components/Spinner/Spinner/Spinner.js +14 -6
  383. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  384. package/components/Spinner/Spinner.d.ts +9 -0
  385. package/components/Spinner/Spinner.md +1 -0
  386. package/components/Spinner/Spinner.styles/Spinner.styles.js +12 -9
  387. package/components/Spinner/Spinner.styles/Spinner.styles.js.map +1 -1
  388. package/components/Spinner/Spinner.styles.d.ts +2 -1
  389. package/components/Sticky/Sticky/Sticky.js +13 -8
  390. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  391. package/components/Sticky/Sticky.d.ts +1 -0
  392. package/components/Switcher/Switcher/Switcher.js +11 -6
  393. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  394. package/components/Switcher/Switcher.d.ts +1 -0
  395. package/components/Switcher/Switcher.styles/Switcher.styles.js +3 -1
  396. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  397. package/components/Tabs/Indicator/Indicator.js +16 -14
  398. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  399. package/components/Tabs/Indicator.d.ts +1 -0
  400. package/components/Tabs/Tab/Tab.js +31 -34
  401. package/components/Tabs/Tab/Tab.js.map +1 -1
  402. package/components/Tabs/Tab.d.ts +2 -1
  403. package/components/Tabs/Tabs/Tabs.js +20 -20
  404. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  405. package/components/Tabs/Tabs.d.ts +1 -0
  406. package/components/Textarea/Textarea/Textarea.js +21 -17
  407. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  408. package/components/Textarea/Textarea.d.ts +1 -0
  409. package/components/Toast/Toast/Toast.js +29 -14
  410. package/components/Toast/Toast/Toast.js.map +1 -1
  411. package/components/Toast/Toast.d.ts +3 -0
  412. package/components/Toast/ToastView/ToastView.js +10 -5
  413. package/components/Toast/ToastView/ToastView.js.map +1 -1
  414. package/components/Toast/ToastView.d.ts +1 -0
  415. package/components/Toggle/Toggle/Toggle.js +16 -11
  416. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  417. package/components/Toggle/Toggle.d.ts +1 -0
  418. package/components/Token/Token/Token.js +11 -4
  419. package/components/Token/Token/Token.js.map +1 -1
  420. package/components/Token/Token.d.ts +1 -0
  421. package/components/TokenInput/TokenInput/TokenInput.js +12 -6
  422. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  423. package/components/TokenInput/TokenInput.d.ts +1 -0
  424. package/components/Tooltip/Tooltip/Tooltip.js +26 -17
  425. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  426. package/components/Tooltip/Tooltip.d.ts +11 -22
  427. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +23 -17
  428. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  429. package/components/TooltipMenu/TooltipMenu.d.ts +3 -2
  430. package/index.d.ts +1 -1
  431. package/index.js +2 -2
  432. package/index.js.map +1 -1
  433. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +37 -10
  434. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  435. package/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  436. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +5 -3
  437. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  438. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +23 -13
  439. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  440. package/internal/CustomComboBox/ComboBoxView.d.ts +4 -1
  441. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +12 -4
  442. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  443. package/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  444. package/internal/DateSelect/DateSelect/DateSelect.js +5 -5
  445. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  446. package/internal/DateSelect/DateSelect.d.ts +2 -2
  447. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +11 -15
  448. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  449. package/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  450. package/internal/FocusTrap/FocusTrap/FocusTrap.js +17 -9
  451. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  452. package/internal/FocusTrap/FocusTrap.d.ts +1 -0
  453. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js +13 -7
  454. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  455. package/internal/InputLikeText/InputLikeText/InputLikeText.js +11 -6
  456. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  457. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  458. package/internal/InternalMenu/InternalMenu/InternalMenu.js +24 -25
  459. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  460. package/internal/InternalMenu/InternalMenu.d.ts +2 -3
  461. package/internal/MaskedInput/MaskedInput/MaskedInput.js +7 -7
  462. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  463. package/internal/MaskedInput/MaskedInput.d.ts +2 -2
  464. package/internal/Menu/Menu/Menu.js +11 -8
  465. package/internal/Menu/Menu/Menu.js.map +1 -1
  466. package/internal/Menu/Menu.d.ts +1 -0
  467. package/internal/Popup/Popup/Popup.js +85 -68
  468. package/internal/Popup/Popup/Popup.js.map +1 -1
  469. package/internal/Popup/Popup.d.ts +9 -8
  470. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  471. package/internal/Popup/PopupHelper.d.ts +2 -2
  472. package/{components/FileUploader/locale → internal/Popup}/types/package.json +1 -1
  473. package/{components/FileUploader/locale → internal/Popup}/types/types.js +0 -0
  474. package/{components/FileUploader/locale → internal/Popup}/types/types.js.map +0 -0
  475. package/internal/Popup/types.d.ts +1 -0
  476. package/internal/PopupMenu/PopupMenu/PopupMenu.js +15 -10
  477. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  478. package/internal/PopupMenu/PopupMenu.d.ts +4 -3
  479. package/internal/PopupMenu/validatePositions/validatePositions.js +2 -2
  480. package/internal/PopupMenu/validatePositions/validatePositions.js.map +1 -1
  481. package/internal/PopupMenu/validatePositions.d.ts +2 -2
  482. package/internal/RenderContainer/RenderContainer/RenderContainer.js +3 -1
  483. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  484. package/internal/RenderContainer/RenderContainer.d.ts +1 -1
  485. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +2 -3
  486. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  487. package/internal/RenderLayer/RenderLayer/RenderLayer.js +20 -18
  488. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  489. package/internal/RenderLayer/RenderLayer.d.ts +3 -1
  490. package/internal/ThemePlayground/Playground/Playground.js +1 -11
  491. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  492. package/internal/ThemePlayground/Playground.d.ts +0 -1
  493. package/internal/ThemePlayground/darkTheme/darkTheme.js +1 -26
  494. package/internal/ThemePlayground/darkTheme/darkTheme.js.map +1 -1
  495. package/internal/ThemePlayground/darkTheme.d.ts +0 -15
  496. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +35 -43
  497. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  498. package/internal/ThemeShowcase/ThemeShowcase.d.ts +1 -1
  499. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  500. package/internal/ZIndex/ZIndex/ZIndex.js +20 -8
  501. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  502. package/internal/ZIndex/ZIndex.d.ts +2 -0
  503. package/internal/icons/16px/index/index.js +83 -78
  504. package/internal/icons/16px/index/index.js.map +1 -1
  505. package/internal/icons/16px/index.d.ts +17 -19
  506. package/internal/icons/SpinnerIcon/SpinnerIcon.js +5 -2
  507. package/internal/icons/SpinnerIcon/SpinnerIcon.js.map +1 -1
  508. package/internal/icons/SpinnerIcon.d.ts +4 -1
  509. package/internal/themes/DefaultTheme/DefaultTheme.js +0 -67
  510. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  511. package/internal/themes/DefaultTheme.d.ts +0 -23
  512. package/lib/ModalStack/ModalStack.js +9 -13
  513. package/lib/ModalStack/ModalStack.js.map +1 -1
  514. package/lib/callChildRef/callChildRef/callChildRef.js +14 -0
  515. package/lib/callChildRef/callChildRef/callChildRef.js.map +1 -0
  516. package/lib/callChildRef/callChildRef/package.json +6 -0
  517. package/lib/callChildRef/callChildRef.d.ts +3 -0
  518. package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js +19 -0
  519. package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js.map +1 -0
  520. package/lib/events/fixFirefoxModifiedClickOnLabel/package.json +6 -0
  521. package/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +2 -0
  522. package/lib/getDisplayName/getDisplayName.js +3 -0
  523. package/lib/getDisplayName/getDisplayName.js.map +1 -0
  524. package/lib/getDisplayName/package.json +6 -0
  525. package/lib/getDisplayName.d.ts +3 -0
  526. package/lib/locale/types/types.js.map +1 -1
  527. package/lib/locale/types.d.ts +0 -2
  528. package/lib/rootNode/getRootNode/getRootNode.js +25 -0
  529. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -0
  530. package/lib/rootNode/getRootNode/package.json +6 -0
  531. package/lib/rootNode/getRootNode.d.ts +3 -0
  532. package/lib/rootNode/index/index.js +2 -0
  533. package/lib/rootNode/index/index.js.map +1 -0
  534. package/{components/FileUploader → lib/rootNode}/index/package.json +1 -1
  535. package/lib/rootNode/index.d.ts +2 -0
  536. package/{components/FileUploader → lib/rootNode}/package.json +1 -1
  537. package/lib/rootNode/rootNodeDecorator/package.json +6 -0
  538. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +37 -0
  539. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -0
  540. package/lib/rootNode/rootNodeDecorator.d.ts +33 -0
  541. package/lib/theming/AnimationKeyframes/AnimationKeyframes.js +1 -1
  542. package/lib/theming/AnimationKeyframes/AnimationKeyframes.js.map +1 -1
  543. package/lib/theming/Emotion/Emotion.js +1 -0
  544. package/lib/theming/Emotion/Emotion.js.map +1 -1
  545. package/lib/theming/useTheme/package.json +6 -0
  546. package/lib/theming/useTheme/useTheme.js +5 -0
  547. package/lib/theming/useTheme/useTheme.js.map +1 -0
  548. package/lib/theming/useTheme.d.ts +1 -0
  549. package/lib/utils/utils.js +77 -19
  550. package/lib/utils/utils.js.map +1 -1
  551. package/lib/utils.d.ts +35 -1
  552. package/lib/withClassWrapper/package.json +6 -0
  553. package/lib/withClassWrapper/withClassWrapper.js +70 -0
  554. package/lib/withClassWrapper/withClassWrapper.js.map +1 -0
  555. package/lib/withClassWrapper.d.ts +71 -0
  556. package/package.json +14 -3
  557. package/typings/html-props.d.ts +123 -0
  558. package/cjs/components/FileUploader/FileUploader.d.ts +0 -31
  559. package/cjs/components/FileUploader/FileUploader.js +0 -270
  560. package/cjs/components/FileUploader/FileUploader.js.map +0 -1
  561. package/cjs/components/FileUploader/FileUploader.md +0 -67
  562. package/cjs/components/FileUploader/FileUploader.styles.d.ts +0 -19
  563. package/cjs/components/FileUploader/FileUploader.styles.js +0 -159
  564. package/cjs/components/FileUploader/FileUploader.styles.js.map +0 -1
  565. package/cjs/components/FileUploader/index.d.ts +0 -4
  566. package/cjs/components/FileUploader/index.js +0 -4
  567. package/cjs/components/FileUploader/index.js.map +0 -1
  568. package/cjs/components/FileUploader/locale/index.d.ts +0 -4
  569. package/cjs/components/FileUploader/locale/index.js +0 -11
  570. package/cjs/components/FileUploader/locale/index.js.map +0 -1
  571. package/cjs/components/FileUploader/locale/locales/en.d.ts +0 -2
  572. package/cjs/components/FileUploader/locale/locales/en.js +0 -7
  573. package/cjs/components/FileUploader/locale/locales/en.js.map +0 -1
  574. package/cjs/components/FileUploader/locale/locales/ru.d.ts +0 -2
  575. package/cjs/components/FileUploader/locale/locales/ru.js +0 -7
  576. package/cjs/components/FileUploader/locale/locales/ru.js.map +0 -1
  577. package/cjs/components/FileUploader/locale/types.d.ts +0 -6
  578. package/cjs/hooks/useDrop.d.ts +0 -11
  579. package/cjs/hooks/useDrop.js +0 -75
  580. package/cjs/hooks/useDrop.js.map +0 -1
  581. package/cjs/hooks/useMemoObject.d.ts +0 -1
  582. package/cjs/hooks/useMemoObject.js +0 -5
  583. package/cjs/hooks/useMemoObject.js.map +0 -1
  584. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.d.ts +0 -11
  585. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js +0 -15
  586. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js.map +0 -1
  587. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +0 -14
  588. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +0 -107
  589. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +0 -1
  590. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +0 -10
  591. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +0 -187
  592. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +0 -1
  593. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +0 -11
  594. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js +0 -66
  595. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js.map +0 -1
  596. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +0 -4
  597. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +0 -24
  598. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +0 -1
  599. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +0 -4
  600. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js +0 -17
  601. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js.map +0 -1
  602. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +0 -7
  603. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js +0 -16
  604. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js.map +0 -1
  605. package/cjs/internal/FileUploaderControl/fileUtils.d.ts +0 -18
  606. package/cjs/internal/FileUploaderControl/fileUtils.js +0 -55
  607. package/cjs/internal/FileUploaderControl/fileUtils.js.map +0 -1
  608. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.d.ts +0 -1
  609. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js +0 -4
  610. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js.map +0 -1
  611. package/cjs/internal/FileUploaderControl/hooks/useUpload.d.ts +0 -3
  612. package/cjs/internal/FileUploaderControl/hooks/useUpload.js +0 -51
  613. package/cjs/internal/FileUploaderControl/hooks/useUpload.js.map +0 -1
  614. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +0 -3
  615. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +0 -18
  616. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +0 -1
  617. package/cjs/internal/PopupMenu/PopupMenuPositions.d.ts +0 -2
  618. package/cjs/internal/PopupMenu/PopupMenuPositions.js +0 -15
  619. package/cjs/internal/PopupMenu/PopupMenuPositions.js.map +0 -1
  620. package/cjs/internal/TextWidthHelper/TextWidthHelper.d.ts +0 -15
  621. package/cjs/internal/TextWidthHelper/TextWidthHelper.js +0 -34
  622. package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +0 -1
  623. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +0 -4
  624. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js +0 -23
  625. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js.map +0 -1
  626. package/cjs/lib/guidUtils.d.ts +0 -1
  627. package/cjs/lib/guidUtils.js +0 -5
  628. package/cjs/lib/guidUtils.js.map +0 -1
  629. package/cjs/lib/locale/useLocaleForControl.d.ts +0 -3
  630. package/cjs/lib/locale/useLocaleForControl.js +0 -14
  631. package/cjs/lib/locale/useLocaleForControl.js.map +0 -1
  632. package/cjs/lib/stringUtils.d.ts +0 -1
  633. package/cjs/lib/stringUtils.js +0 -13
  634. package/cjs/lib/stringUtils.js.map +0 -1
  635. package/components/FileUploader/FileUploader/FileUploader.js +0 -277
  636. package/components/FileUploader/FileUploader/FileUploader.js.map +0 -1
  637. package/components/FileUploader/FileUploader/package.json +0 -6
  638. package/components/FileUploader/FileUploader.d.ts +0 -31
  639. package/components/FileUploader/FileUploader.md +0 -67
  640. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +0 -56
  641. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +0 -1
  642. package/components/FileUploader/FileUploader.styles/package.json +0 -6
  643. package/components/FileUploader/FileUploader.styles.d.ts +0 -19
  644. package/components/FileUploader/index/index.js +0 -3
  645. package/components/FileUploader/index/index.js.map +0 -1
  646. package/components/FileUploader/index.d.ts +0 -4
  647. package/components/FileUploader/locale/index/index.js +0 -8
  648. package/components/FileUploader/locale/index/index.js.map +0 -1
  649. package/components/FileUploader/locale/index/package.json +0 -6
  650. package/components/FileUploader/locale/index.d.ts +0 -4
  651. package/components/FileUploader/locale/locales/en/en.js +0 -6
  652. package/components/FileUploader/locale/locales/en/en.js.map +0 -1
  653. package/components/FileUploader/locale/locales/en/package.json +0 -6
  654. package/components/FileUploader/locale/locales/en.d.ts +0 -2
  655. package/components/FileUploader/locale/locales/ru/package.json +0 -6
  656. package/components/FileUploader/locale/locales/ru/ru.js +0 -6
  657. package/components/FileUploader/locale/locales/ru/ru.js.map +0 -1
  658. package/components/FileUploader/locale/locales/ru.d.ts +0 -2
  659. package/components/FileUploader/locale/package.json +0 -6
  660. package/components/FileUploader/locale/types.d.ts +0 -6
  661. package/hooks/useDrop/package.json +0 -6
  662. package/hooks/useDrop/useDrop.js +0 -57
  663. package/hooks/useDrop/useDrop.js.map +0 -1
  664. package/hooks/useDrop.d.ts +0 -11
  665. package/hooks/useMemoObject/package.json +0 -6
  666. package/hooks/useMemoObject/useMemoObject.js +0 -6
  667. package/hooks/useMemoObject/useMemoObject.js.map +0 -1
  668. package/hooks/useMemoObject.d.ts +0 -1
  669. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js +0 -2
  670. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js.map +0 -1
  671. package/internal/FileUploaderControl/FileUploaderControlContext/package.json +0 -6
  672. package/internal/FileUploaderControl/FileUploaderControlContext.d.ts +0 -11
  673. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +0 -79
  674. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +0 -1
  675. package/internal/FileUploaderControl/FileUploaderControlProvider/package.json +0 -6
  676. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +0 -14
  677. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +0 -176
  678. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +0 -1
  679. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/package.json +0 -6
  680. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +0 -10
  681. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js +0 -32
  682. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js.map +0 -1
  683. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/package.json +0 -6
  684. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +0 -11
  685. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +0 -23
  686. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +0 -1
  687. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/package.json +0 -6
  688. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +0 -4
  689. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js +0 -11
  690. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js.map +0 -1
  691. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/package.json +0 -6
  692. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +0 -4
  693. package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js +0 -18
  694. package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js.map +0 -1
  695. package/internal/FileUploaderControl/FileUploaderFileValidationResult/package.json +0 -6
  696. package/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +0 -7
  697. package/internal/FileUploaderControl/fileUtils/fileUtils.js +0 -85
  698. package/internal/FileUploaderControl/fileUtils/fileUtils.js.map +0 -1
  699. package/internal/FileUploaderControl/fileUtils/package.json +0 -6
  700. package/internal/FileUploaderControl/fileUtils.d.ts +0 -18
  701. package/internal/FileUploaderControl/hooks/useControlLocale/package.json +0 -6
  702. package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js +0 -5
  703. package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js.map +0 -1
  704. package/internal/FileUploaderControl/hooks/useControlLocale.d.ts +0 -1
  705. package/internal/FileUploaderControl/hooks/useUpload/package.json +0 -6
  706. package/internal/FileUploaderControl/hooks/useUpload/useUpload.js +0 -56
  707. package/internal/FileUploaderControl/hooks/useUpload/useUpload.js.map +0 -1
  708. package/internal/FileUploaderControl/hooks/useUpload.d.ts +0 -3
  709. package/internal/FileUploaderControl/withFileUploaderControlProvider/package.json +0 -6
  710. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +0 -16
  711. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +0 -1
  712. package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +0 -3
  713. package/internal/PopupMenu/PopupMenuPositions/PopupMenuPositions.js +0 -1
  714. package/internal/PopupMenu/PopupMenuPositions/PopupMenuPositions.js.map +0 -1
  715. package/internal/PopupMenu/PopupMenuPositions/package.json +0 -6
  716. package/internal/PopupMenu/PopupMenuPositions.d.ts +0 -2
  717. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +0 -49
  718. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +0 -1
  719. package/internal/TextWidthHelper/TextWidthHelper/package.json +0 -6
  720. package/internal/TextWidthHelper/TextWidthHelper.d.ts +0 -15
  721. package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js +0 -14
  722. package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js.map +0 -1
  723. package/internal/TextWidthHelper/TextWidthHelper.styles/package.json +0 -6
  724. package/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +0 -4
  725. package/lib/guidUtils/guidUtils.js +0 -4
  726. package/lib/guidUtils/guidUtils.js.map +0 -1
  727. package/lib/guidUtils/package.json +0 -6
  728. package/lib/guidUtils.d.ts +0 -1
  729. package/lib/locale/useLocaleForControl/package.json +0 -6
  730. package/lib/locale/useLocaleForControl/useLocaleForControl.js +0 -12
  731. package/lib/locale/useLocaleForControl/useLocaleForControl.js.map +0 -1
  732. package/lib/locale/useLocaleForControl.d.ts +0 -3
  733. package/lib/stringUtils/package.json +0 -6
  734. package/lib/stringUtils/stringUtils.js +0 -12
  735. package/lib/stringUtils/stringUtils.js.map +0 -1
  736. package/lib/stringUtils.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBoxMenu.tsx"],"names":["React","Component","locale","isReactUINode","Menu","MenuItem","Spinner","MenuSeparator","ComboBoxRequestStatus","CustomComboBoxLocaleHelper","ComboBoxMenu","renderItem","item","index","props","onValueChange","isValidElement","element","Object","assign","key","onClick","cloneElement","state","render","opened","items","totalCount","loading","refMenu","renderNotFound","notFound","renderTotalCount","maxMenuHeight","requestStatus","errorNetworkButton","errorNetworkMessage","renderAddButton","length","Failed","maxWidth","whiteSpace","repeatRequest","notFoundValue","total","renderedItems","map","countItems","filter","fontSize","__KONTUR_REACT_UI__","defaultProps","undefined","Unknown"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { isReactUINode } from '../../lib/utils';\nimport { Menu } from '../Menu';\nimport { MenuItem, MenuItemState } from '../../components/MenuItem';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuSeparator } from '../../components/MenuSeparator';\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 onValueChange: (value: T) => any;\n renderAddButton?: () => React.ReactNode;\n caption?: React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n}\n\n@locale('ComboBox', CustomComboBoxLocaleHelper)\nexport class ComboBoxMenu<T> extends Component<ComboBoxMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxMenu';\n\n public static defaultProps = {\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n };\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 requestStatus,\n } = this.props;\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 if (loading && (!items || !items.length)) {\n return (\n <Menu ref={refMenu} data-tid=\"ComboBoxMenu__loading\">\n <MenuItem disabled>\n <Spinner type=\"mini\" dimmed />\n </MenuItem>\n </Menu>\n );\n }\n\n if (items === null && requestStatus === ComboBoxRequestStatus.Failed) {\n return (\n <Menu ref={refMenu} maxHeight={maxMenuHeight} data-tid=\"ComboBoxMenu__failed\">\n <MenuItem disabled key=\"message\">\n <div style={{ maxWidth: 300, whiteSpace: 'normal' }}>{errorNetworkMessage}</div>\n </MenuItem>\n <MenuItem link onClick={this.props.repeatRequest} key=\"retry\">\n {errorNetworkButton}\n </MenuItem>\n </Menu>\n );\n }\n\n if ((items == null || items.length === 0) && renderNotFound) {\n const notFoundValue = renderNotFound();\n if (renderAddButton) return <Menu ref={refMenu}>{renderAddButton}</Menu>;\n if (notFoundValue)\n return (\n <Menu ref={refMenu}>\n <MenuItem data-tid=\"ComboBoxMenu__notFound\" disabled>\n {notFoundValue}\n </MenuItem>\n </Menu>\n );\n return null;\n }\n\n let total = null;\n const renderedItems = items && items.map(this.renderItem);\n const countItems = renderedItems?.filter((item) => isReactUINode('MenuItem', item)).length;\n\n if (countItems && renderTotalCount && totalCount && countItems < totalCount) {\n total = (\n <MenuItem disabled key=\"total\">\n <div style={{ fontSize: 12 }}>{renderTotalCount(countItems, totalCount)}</div>\n </MenuItem>\n );\n }\n\n return (\n <Menu data-tid=\"ComboBoxMenu__items\" ref={refMenu} maxHeight={maxMenuHeight}>\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 } = this.props;\n if (typeof item === 'function' || React.isValidElement(item)) {\n // @ts-ignore\n const element = typeof item === 'function' ? 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 data-tid=\"ComboBoxMenu__item\" onClick={() => onValueChange(item)} key={index}>\n {(state) => renderItem(item, state)}\n </MenuItem>\n );\n };\n}\n"]}
1
+ {"version":3,"sources":["ComboBoxMenu.tsx"],"names":["React","Component","locale","Menu","MenuItem","Spinner","MenuSeparator","ComboBoxRequestStatus","CustomComboBoxLocaleHelper","ComboBoxMenu","renderItem","item","index","props","onValueChange","isValidElement","element","Object","assign","key","onClick","cloneElement","state","render","opened","items","totalCount","loading","refMenu","renderNotFound","notFound","renderTotalCount","maxMenuHeight","requestStatus","errorNetworkButton","errorNetworkMessage","renderAddButton","length","Failed","maxWidth","whiteSpace","repeatRequest","notFoundValue","total","renderedItems","map","countItems","filter","type","__KONTUR_REACT_UI__","fontSize","defaultProps","undefined","Unknown"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\n\nimport { locale } from '../../lib/locale/decorators';\nimport { Menu } from '../Menu';\nimport { MenuItem, MenuItemState } from '../../components/MenuItem';\nimport { Spinner } from '../../components/Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { MenuSeparator } from '../../components/MenuSeparator';\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 onValueChange: (value: T) => any;\n renderAddButton?: () => React.ReactNode;\n caption?: React.ReactNode;\n repeatRequest?: () => void;\n requestStatus?: ComboBoxRequestStatus;\n}\n\n@locale('ComboBox', CustomComboBoxLocaleHelper)\nexport class ComboBoxMenu<T> extends Component<ComboBoxMenuProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxMenu';\n\n public static defaultProps = {\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n };\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 requestStatus,\n } = this.props;\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 if (loading && (!items || !items.length)) {\n return (\n <Menu ref={refMenu} data-tid=\"ComboBoxMenu__loading\">\n <MenuItem disabled>\n <Spinner type=\"mini\" dimmed />\n </MenuItem>\n </Menu>\n );\n }\n\n if (items === null && requestStatus === ComboBoxRequestStatus.Failed) {\n return (\n <Menu ref={refMenu} maxHeight={maxMenuHeight} data-tid=\"ComboBoxMenu__failed\">\n <MenuItem disabled key=\"message\">\n <div style={{ maxWidth: 300, whiteSpace: 'normal' }}>{errorNetworkMessage}</div>\n </MenuItem>\n <MenuItem link onClick={this.props.repeatRequest} key=\"retry\">\n {errorNetworkButton}\n </MenuItem>\n </Menu>\n );\n }\n\n if ((items == null || items.length === 0) && renderNotFound) {\n const notFoundValue = renderNotFound();\n if (renderAddButton) return <Menu ref={refMenu}>{renderAddButton}</Menu>;\n if (notFoundValue)\n return (\n <Menu ref={refMenu}>\n <MenuItem data-tid=\"ComboBoxMenu__notFound\" disabled>\n {notFoundValue}\n </MenuItem>\n </Menu>\n );\n return null;\n }\n\n let total = null;\n const renderedItems = items && items.map(this.renderItem);\n // @ts-ignore // todo fix checking\n const countItems = renderedItems?.filter((item) => item?.type?.__KONTUR_REACT_UI__ === 'MenuItem').length;\n\n if (countItems && renderTotalCount && totalCount && countItems < totalCount) {\n total = (\n <MenuItem disabled key=\"total\">\n <div style={{ fontSize: 12 }}>{renderTotalCount(countItems, totalCount)}</div>\n </MenuItem>\n );\n }\n\n return (\n <Menu data-tid=\"ComboBoxMenu__items\" ref={refMenu} maxHeight={maxMenuHeight}>\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 } = this.props;\n if (typeof item === 'function' || React.isValidElement(item)) {\n // @ts-ignore\n const element = typeof item === 'function' ? 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 data-tid=\"ComboBoxMenu__item\" onClick={() => onValueChange(item)} key={index}>\n {(state) => renderItem(item, state)}\n </MenuItem>\n );\n };\n}\n"]}
@@ -1,6 +1,9 @@
1
+ import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
1
2
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
3
+
4
+ var _class, _class2, _temp;
5
+
2
6
  import React from 'react';
3
- import { findDOMNode } from 'react-dom';
4
7
  import { isNonNullable } from "../../../lib/utils";
5
8
  import { DropdownContainer } from "../../DropdownContainer";
6
9
  import { Input } from "../../../components/Input";
@@ -9,10 +12,11 @@ import { RenderLayer } from "../../RenderLayer";
9
12
  import { Spinner } from "../../../components/Spinner";
10
13
  import { ArrowChevronDownIcon } from "../../icons/16px";
11
14
  import { CommonWrapper } from "../../../internal/CommonWrapper";
15
+ import { rootNode, getRootNode } from "../../../lib/rootNode";
12
16
  import { ComboBoxMenu } from "../ComboBoxMenu";
13
17
  import { ComboBoxRequestStatus } from "../CustomComboBoxTypes";
14
18
  import { styles } from "../CustomComboBox.styles";
15
- export var ComboBoxView = /*#__PURE__*/function (_React$Component) {
19
+ export var ComboBoxView = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
16
20
  _inheritsLoose(ComboBoxView, _React$Component);
17
21
 
18
22
  function ComboBoxView() {
@@ -24,6 +28,12 @@ export var ComboBoxView = /*#__PURE__*/function (_React$Component) {
24
28
 
25
29
  _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
26
30
  _this.input = void 0;
31
+ _this.setRootNode = void 0;
32
+ _this.dropdownContainerRef = /*#__PURE__*/React.createRef();
33
+
34
+ _this.getParent = function () {
35
+ return getRootNode(_assertThisInitialized(_this));
36
+ };
27
37
 
28
38
  _this.renderAddButton = function () {
29
39
  return _this.props.renderAddButton(_this.props.textValue);
@@ -79,9 +89,13 @@ export var ComboBoxView = /*#__PURE__*/function (_React$Component) {
79
89
  var _proto = ComboBoxView.prototype;
80
90
 
81
91
  _proto.componentDidMount = function componentDidMount() {
92
+ var _this$dropdownContain;
93
+
82
94
  if (this.props.autoFocus && this.props.onFocus) {
83
95
  this.props.onFocus();
84
96
  }
97
+
98
+ this.props.opened && ((_this$dropdownContain = this.dropdownContainerRef.current) == null ? void 0 : _this$dropdownContain.position());
85
99
  };
86
100
 
87
101
  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
@@ -94,8 +108,6 @@ export var ComboBoxView = /*#__PURE__*/function (_React$Component) {
94
108
  };
95
109
 
96
110
  _proto.render = function render() {
97
- var _this2 = this;
98
-
99
111
  var _this$props2 = this.props,
100
112
  items = _this$props2.items,
101
113
  loading = _this$props2.loading,
@@ -143,14 +155,14 @@ export var ComboBoxView = /*#__PURE__*/function (_React$Component) {
143
155
  className: styles.root(),
144
156
  onMouseEnter: onMouseEnter,
145
157
  onMouseLeave: onMouseLeave,
146
- onMouseOver: onMouseOver
158
+ onMouseOver: onMouseOver,
159
+ ref: this.setRootNode
147
160
  }, input, opened && /*#__PURE__*/React.createElement(DropdownContainer, {
148
161
  align: menuAlign,
149
- getParent: function getParent() {
150
- return findDOMNode(_this2);
151
- },
162
+ getParent: this.getParent,
152
163
  offsetY: 1,
153
- disablePortal: this.props.disablePortal
164
+ disablePortal: this.props.disablePortal,
165
+ ref: this.dropdownContainerRef
154
166
  }, /*#__PURE__*/React.createElement(ComboBoxMenu, {
155
167
  items: items,
156
168
  loading: loading,
@@ -233,9 +245,7 @@ export var ComboBoxView = /*#__PURE__*/function (_React$Component) {
233
245
  };
234
246
 
235
247
  return ComboBoxView;
236
- }(React.Component);
237
- ComboBoxView.__KONTUR_REACT_UI__ = 'ComboBoxView';
238
- ComboBoxView.defaultProps = {
248
+ }(React.Component), _class2.__KONTUR_REACT_UI__ = 'ComboBoxView', _class2.defaultProps = {
239
249
  renderItem: function renderItem(item) {
240
250
  return item;
241
251
  },
@@ -257,4 +267,4 @@ ComboBoxView.defaultProps = {
257
267
  },
258
268
  size: 'small',
259
269
  width: 250
260
- };
270
+ }, _temp)) || _class;
@@ -1 +1 @@
1
- {"version":3,"sources":["ComboBoxView.tsx"],"names":["React","findDOMNode","isNonNullable","DropdownContainer","Input","InputLikeText","RenderLayer","Spinner","ArrowChevronDownIcon","CommonWrapper","ComboBoxMenu","ComboBoxRequestStatus","styles","ComboBoxView","input","renderAddButton","props","textValue","handleItemSelect","item","onValueChange","refInput","renderSpinner","spinnerWrapper","getRightIcon","loading","items","drawArrow","rightIcon","length","rightIconWrapper","componentDidMount","autoFocus","onFocus","componentDidUpdate","prevProps","editing","focus","render","menuAlign","onClickOutside","onFocusOutside","onMouseEnter","onMouseLeave","onMouseOver","opened","refMenu","maxMenuHeight","renderTotalCount","renderItem","renderNotFound","repeatRequest","requestStatus","totalCount","size","width","renderInput","topOffsets","spinner","arrow","root","disablePortal","align","borderless","disabled","error","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","placeholder","renderValue","value","warning","refInputLikeText","leftIcon","inputMode","maxLength","Component","__KONTUR_REACT_UI__","defaultProps","undefined","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { findDOMNode } from 'react-dom';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { DropdownContainer } from '../DropdownContainer';\nimport { Input, InputIconType } 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';\n\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\n\ninterface ComboBoxViewProps<T> extends 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 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 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\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n\n public static defaultProps = {\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 input: Nullable<Input>;\n\n public componentDidMount() {\n if (this.props.autoFocus && this.props.onFocus) {\n this.props.onFocus();\n }\n }\n\n public componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n const {\n items,\n loading,\n menuAlign,\n onClickOutside,\n onFocusOutside,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n opened,\n refMenu,\n maxMenuHeight,\n renderTotalCount,\n renderItem,\n renderNotFound,\n repeatRequest,\n requestStatus,\n totalCount,\n size,\n width,\n } = this.props;\n\n const input = this.renderInput();\n\n const topOffsets = {\n spinner: 6,\n arrow: 15,\n };\n if (size === 'medium') {\n topOffsets.spinner += 4;\n topOffsets.arrow += 4;\n }\n if (size === 'large') {\n topOffsets.spinner += 6;\n topOffsets.arrow += 6;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n >\n {input}\n {opened && (\n <DropdownContainer\n align={menuAlign}\n getParent={() => findDOMNode(this)}\n offsetY={1}\n disablePortal={this.props.disablePortal}\n >\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 renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n />\n </DropdownContainer>\n )}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private renderAddButton = (): React.ReactNode => {\n return this.props.renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\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 renderValue,\n size,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n } = this.props;\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={onInputBlur}\n onValueChange={onInputValueChange}\n onFocus={onInputFocus}\n onClick={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 />\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 >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\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 } = this.props;\n\n if (loading && items && !!items.length) {\n return this.renderSpinner();\n }\n\n if (rightIcon || drawArrow) {\n return <span className={styles.rightIconWrapper()}>{rightIcon ?? <ArrowChevronDownIcon />}</span>;\n }\n\n return null;\n };\n}\n"]}
1
+ {"version":3,"sources":["ComboBoxView.tsx"],"names":["React","isNonNullable","DropdownContainer","Input","InputLikeText","RenderLayer","Spinner","ArrowChevronDownIcon","CommonWrapper","rootNode","getRootNode","ComboBoxMenu","ComboBoxRequestStatus","styles","ComboBoxView","input","setRootNode","dropdownContainerRef","createRef","getParent","renderAddButton","props","textValue","handleItemSelect","item","onValueChange","refInput","renderSpinner","spinnerWrapper","getRightIcon","loading","items","drawArrow","rightIcon","length","rightIconWrapper","componentDidMount","autoFocus","onFocus","opened","current","position","componentDidUpdate","prevProps","editing","focus","render","menuAlign","onClickOutside","onFocusOutside","onMouseEnter","onMouseLeave","onMouseOver","refMenu","maxMenuHeight","renderTotalCount","renderItem","renderNotFound","repeatRequest","requestStatus","totalCount","size","width","renderInput","topOffsets","spinner","arrow","root","disablePortal","align","borderless","disabled","error","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","placeholder","renderValue","value","warning","refInputLikeText","leftIcon","inputMode","maxLength","Component","__KONTUR_REACT_UI__","defaultProps","undefined","Unknown"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isNonNullable } from '../../lib/utils';\nimport { DropdownContainer } from '../DropdownContainer';\nimport { Input, InputIconType } 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 { rootNode, getRootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { ComboBoxMenu } from './ComboBoxMenu';\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { styles } from './CustomComboBox.styles';\n\ninterface ComboBoxViewProps<T> extends 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 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 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\n@rootNode\nexport class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, {}> {\n public static __KONTUR_REACT_UI__ = 'ComboBoxView';\n\n public static defaultProps = {\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 input: Nullable<Input>;\n private setRootNode!: TSetRootNode;\n private dropdownContainerRef = React.createRef<DropdownContainer>();\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 componentDidUpdate(prevProps: ComboBoxViewProps<T>) {\n const { input, props } = this;\n if (props.editing && !prevProps.editing && input) {\n input.focus();\n }\n }\n\n public render() {\n const {\n items,\n loading,\n menuAlign,\n onClickOutside,\n onFocusOutside,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n opened,\n refMenu,\n maxMenuHeight,\n renderTotalCount,\n renderItem,\n renderNotFound,\n repeatRequest,\n requestStatus,\n totalCount,\n size,\n width,\n } = this.props;\n\n const input = this.renderInput();\n\n const topOffsets = {\n spinner: 6,\n arrow: 15,\n };\n if (size === 'medium') {\n topOffsets.spinner += 4;\n topOffsets.arrow += 4;\n }\n if (size === 'large') {\n topOffsets.spinner += 6;\n topOffsets.arrow += 6;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <RenderLayer onClickOutside={onClickOutside} onFocusOutside={onFocusOutside} active={opened}>\n <span\n style={{ width }}\n className={styles.root()}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n onMouseOver={onMouseOver}\n ref={this.setRootNode}\n >\n {input}\n {opened && (\n <DropdownContainer\n align={menuAlign}\n getParent={this.getParent}\n offsetY={1}\n disablePortal={this.props.disablePortal}\n ref={this.dropdownContainerRef}\n >\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 renderAddButton={this.renderAddButton}\n repeatRequest={repeatRequest}\n requestStatus={requestStatus}\n totalCount={totalCount}\n />\n </DropdownContainer>\n )}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private getParent = () => {\n return getRootNode(this);\n };\n\n private renderAddButton = (): React.ReactNode => {\n return this.props.renderAddButton(this.props.textValue);\n };\n\n private renderInput(): React.ReactNode {\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 renderValue,\n size,\n textValue,\n value,\n warning,\n refInputLikeText,\n leftIcon,\n inputMode,\n } = this.props;\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={onInputBlur}\n onValueChange={onInputValueChange}\n onFocus={onInputFocus}\n onClick={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 />\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 >\n {isNonNullable(value) && renderValue ? renderValue(value) : null}\n </InputLikeText>\n );\n }\n\n private handleItemSelect = (item: T) => {\n if (this.props.onValueChange) {\n this.props.onValueChange(item);\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 } = this.props;\n\n if (loading && items && !!items.length) {\n return this.renderSpinner();\n }\n\n if (rightIcon || drawArrow) {\n return <span className={styles.rightIconWrapper()}>{rightIcon ?? <ArrowChevronDownIcon />}</span>;\n }\n\n return null;\n };\n}\n"]}
@@ -60,7 +60,7 @@ interface ComboBoxViewProps<T> extends CommonProps {
60
60
  refMenu?: (menu: Nullable<Menu>) => void;
61
61
  refInputLikeText?: (inputLikeText: Nullable<InputLikeText>) => void;
62
62
  }
63
- export declare class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>> {
63
+ export declare class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T>, {}> {
64
64
  static __KONTUR_REACT_UI__: string;
65
65
  static defaultProps: {
66
66
  renderItem: (item: any) => any;
@@ -74,9 +74,12 @@ export declare class ComboBoxView<T> extends React.Component<ComboBoxViewProps<T
74
74
  width: number;
75
75
  };
76
76
  private input;
77
+ private setRootNode;
78
+ private dropdownContainerRef;
77
79
  componentDidMount(): void;
78
80
  componentDidUpdate(prevProps: ComboBoxViewProps<T>): void;
79
81
  render(): JSX.Element;
82
+ private getParent;
80
83
  private renderAddButton;
81
84
  private renderInput;
82
85
  private handleItemSelect;
@@ -1,11 +1,16 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
2
3
  import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
3
4
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
5
+
6
+ var _class, _class2, _temp;
7
+
4
8
  import _regeneratorRuntime from "@babel/runtime/regenerator";
5
9
  import React from 'react';
6
10
  import { CancelationError, taskWithDelay } from "../../../lib/utils";
7
11
  import { fixClickFocusIE } from "../../../lib/events/fixClickFocusIE";
8
12
  import { CommonWrapper } from "../../../internal/CommonWrapper";
13
+ import { rootNode } from "../../../lib/rootNode";
9
14
  import { ComboBoxRequestStatus } from "../CustomComboBoxTypes";
10
15
  import { reducer } from "../CustomComboBoxReducer";
11
16
  import { ComboBoxView } from "../ComboBoxView";
@@ -24,7 +29,7 @@ export var DefaultState = {
24
29
  },
25
30
  requestStatus: ComboBoxRequestStatus.Unknown
26
31
  };
27
- export var CustomComboBox = /*#__PURE__*/function (_React$PureComponent) {
32
+ export var CustomComboBox = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
28
33
  _inheritsLoose(CustomComboBox, _React$PureComponent);
29
34
 
30
35
  function CustomComboBox() {
@@ -79,6 +84,8 @@ export var CustomComboBox = /*#__PURE__*/function (_React$PureComponent) {
79
84
  _this.handleBlur();
80
85
  };
81
86
 
87
+ _this.setRootNode = void 0;
88
+
82
89
  _this.dispatch = function (action) {
83
90
  var effects;
84
91
  var nextState;
@@ -396,7 +403,9 @@ export var CustomComboBox = /*#__PURE__*/function (_React$PureComponent) {
396
403
  _this3.inputLikeText = inputLikeText;
397
404
  }
398
405
  };
399
- return /*#__PURE__*/React.createElement(CommonWrapper, this.props, /*#__PURE__*/React.createElement(ComboBoxView, viewProps));
406
+ return /*#__PURE__*/React.createElement(CommonWrapper, this.props, /*#__PURE__*/React.createElement(ComboBoxView, _extends({}, viewProps, {
407
+ ref: this.setRootNode
408
+ })));
400
409
  };
401
410
 
402
411
  _proto.componentDidMount = function componentDidMount() {
@@ -432,5 +441,4 @@ export var CustomComboBox = /*#__PURE__*/function (_React$PureComponent) {
432
441
  };
433
442
 
434
443
  return CustomComboBox;
435
- }(React.PureComponent);
436
- CustomComboBox.__KONTUR_REACT_UI__ = 'CustomComboBox';
444
+ }(React.PureComponent), _class2.__KONTUR_REACT_UI__ = 'CustomComboBox', _temp)) || _class;
@@ -1 +1 @@
1
- {"version":3,"sources":["CustomComboBox.tsx"],"names":["React","CancelationError","taskWithDelay","fixClickFocusIE","CommonWrapper","ComboBoxRequestStatus","reducer","ComboBoxView","DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","Unknown","CustomComboBox","state","input","menu","inputLikeText","requestId","loaderShowDelay","cancelationToken","cancelLoaderDelay","focus","props","disabled","selectInputText","selectAll","blur","handleBlur","dispatch","action","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","effect","getState","getProps","handleValueChange","value","type","keepFocus","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","search","query","getItems","cancelPromise","Promise","_","reject","expectingId","resolve","cancelLoader","race","code","cancelSearch","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","refInputLikeText","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n const expectingId = (this.requestId += 1);\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' });\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState });\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: true,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["CustomComboBox.tsx"],"names":["React","CancelationError","taskWithDelay","fixClickFocusIE","CommonWrapper","rootNode","ComboBoxRequestStatus","reducer","ComboBoxView","DELAY_BEFORE_SHOW_LOADER","LOADER_SHOW_TIME","DefaultState","inputChanged","editing","items","loading","opened","focused","textValue","repeatRequest","undefined","requestStatus","Unknown","CustomComboBox","state","input","menu","inputLikeText","requestId","loaderShowDelay","cancelationToken","cancelLoaderDelay","focus","props","disabled","selectInputText","selectAll","blur","handleBlur","setRootNode","dispatch","action","effects","nextState","setState","stateAndEffect","Array","forEach","handleEffect","effect","getState","getProps","handleValueChange","value","type","keepFocus","handleFocus","handleClickOutside","e","close","setTimeout","handleInputBlur","handleInputClick","search","query","getItems","cancelPromise","Promise","_","reject","expectingId","resolve","cancelLoader","race","code","cancelSearch","open","render","viewProps","align","borderless","disablePortal","error","menuAlign","drawArrow","placeholder","size","totalCount","warning","width","maxLength","maxMenuHeight","leftIcon","rightIcon","inputMode","onValueChange","onClickOutside","onFocus","onFocusOutside","onInputBlur","onInputValueChange","onInputFocus","onInputClick","onInputKeyDown","event","persist","onMouseEnter","onMouseOver","onMouseLeave","renderItem","renderNotFound","renderValue","renderTotalCount","renderAddButton","refInput","refMenu","refInputLikeText","componentDidMount","autoFocus","componentDidUpdate","prevProps","prevState","reset","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Input, InputIconType } from '../../components/Input';\nimport { Menu } from '../Menu';\nimport { InputLikeText } from '../InputLikeText';\nimport { MenuItemState } from '../../components/MenuItem';\nimport { CancelationError, taskWithDelay } from '../../lib/utils';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { ComboBoxRequestStatus } from './CustomComboBoxTypes';\nimport { CustomComboBoxAction, CustomComboBoxEffect, reducer } from './CustomComboBoxReducer';\nimport { ComboBoxView } from './ComboBoxView';\n\nexport interface CustomComboBoxProps<T> extends CommonProps {\n align?: 'left' | 'center' | 'right';\n autoFocus?: boolean;\n borderless?: boolean;\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n maxLength?: number;\n menuAlign?: 'left' | 'right';\n drawArrow?: boolean;\n leftIcon?: InputIconType;\n rightIcon?: InputIconType;\n searchOnFocus?: boolean;\n onValueChange?: (value: T) => void;\n onInputValueChange?: (value: string) => Nullable<string> | void;\n onUnexpectedInput?: (value: string) => void | null | T;\n onFocus?: () => void;\n onBlur?: () => void;\n onMouseEnter?: (e: React.MouseEvent) => void;\n onMouseOver?: (e: React.MouseEvent) => void;\n onMouseLeave?: (e: React.MouseEvent) => void;\n onInputKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n placeholder?: string;\n size?: 'small' | 'medium' | 'large';\n totalCount?: number;\n value?: Nullable<T>;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n width?: string | number;\n maxMenuHeight?: number | string;\n renderNotFound?: () => React.ReactNode;\n renderTotalCount?: (found: number, total: number) => React.ReactNode;\n renderItem: (item: T, state?: MenuItemState) => React.ReactNode;\n renderValue: (value: T) => React.ReactNode;\n renderAddButton?: (query?: string) => React.ReactNode;\n valueToString: (value: T) => string;\n itemToValue: (item: T) => string | number;\n getItems: (query: string) => Promise<T[]>;\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode'];\n}\n\nexport interface CustomComboBoxState<T> {\n editing: boolean;\n loading: boolean;\n opened: boolean;\n textValue: string;\n items: Nullable<T[]>;\n inputChanged: boolean;\n focused: boolean;\n repeatRequest: () => void;\n requestStatus: ComboBoxRequestStatus;\n}\n\nexport const DELAY_BEFORE_SHOW_LOADER = 300;\nexport const LOADER_SHOW_TIME = 1000;\n\nexport const DefaultState = {\n inputChanged: false,\n editing: false,\n items: null,\n loading: false,\n opened: false,\n focused: false,\n textValue: '',\n repeatRequest: () => undefined,\n requestStatus: ComboBoxRequestStatus.Unknown,\n};\n\n@rootNode\nexport class CustomComboBox<T> extends React.PureComponent<CustomComboBoxProps<T>, CustomComboBoxState<T>> {\n public static __KONTUR_REACT_UI__ = 'CustomComboBox';\n\n public state: CustomComboBoxState<T> = DefaultState;\n public input: Nullable<Input>;\n public menu: Nullable<Menu>;\n public inputLikeText: Nullable<InputLikeText>;\n public requestId = 0;\n public loaderShowDelay: Nullable<Promise<void>>;\n private focused = false;\n private cancelationToken: Nullable<(reason?: Error) => void> = null;\n\n private reducer = reducer;\n public cancelLoaderDelay: () => void = () => null;\n\n /**\n * @public\n */\n public focus = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.input) {\n this.input.focus();\n } else if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n };\n\n /**\n * @public\n */\n public selectInputText = () => {\n if (this.props.disabled) {\n return;\n }\n if (this.input) {\n this.input.selectAll();\n }\n };\n\n /**\n * @public\n */\n public blur = () => {\n if (this.props.disabled) {\n return;\n }\n\n this.handleBlur();\n };\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public async search(query: string = this.state.textValue) {\n const { getItems } = this.props;\n\n const cancelPromise: Promise<never> = new Promise((_, reject) => (this.cancelationToken = reject));\n const expectingId = (this.requestId += 1);\n\n if (!this.loaderShowDelay) {\n this.loaderShowDelay = new Promise<void>((resolve) => {\n const cancelLoader = taskWithDelay(() => {\n this.dispatch({ type: 'RequestItems' });\n setTimeout(resolve, LOADER_SHOW_TIME);\n }, DELAY_BEFORE_SHOW_LOADER);\n\n cancelPromise.catch(() => cancelLoader());\n\n this.cancelLoaderDelay = () => {\n cancelLoader();\n resolve();\n };\n });\n }\n\n try {\n const items = await Promise.race([getItems(query), cancelPromise]);\n if (this.state.loading) {\n await Promise.race([this.loaderShowDelay, cancelPromise]);\n }\n if (expectingId === this.requestId) {\n this.dispatch({\n type: 'ReceiveItems',\n items,\n });\n }\n } catch (error) {\n if (error && error.code === 'CancelationError') {\n this.dispatch({ type: 'CancelRequest' });\n } else if (expectingId === this.requestId) {\n this.dispatch({\n type: 'RequestFailure',\n repeatRequest: () => {\n this.search(query);\n if (this.input) {\n this.input.focus();\n }\n },\n });\n }\n } finally {\n if (expectingId === this.requestId) {\n if (!this.state.loading) {\n this.cancelLoaderDelay();\n }\n this.cancelationToken = null;\n this.loaderShowDelay = null;\n }\n }\n }\n\n /**\n * @public\n */\n public cancelSearch() {\n if (this.cancelationToken) {\n this.cancelationToken(new CancelationError());\n }\n }\n\n /**\n * @public\n */\n public open() {\n this.dispatch({ type: 'Open' });\n }\n\n /**\n * @public\n */\n public close() {\n this.dispatch({ type: 'Close' });\n }\n\n public render() {\n const viewProps = {\n align: this.props.align,\n borderless: this.props.borderless,\n disabled: this.props.disabled,\n disablePortal: this.props.disablePortal,\n editing: this.state.editing,\n error: this.props.error,\n items: this.state.items,\n loading: this.state.loading,\n menuAlign: this.props.menuAlign,\n opened: this.state.opened,\n drawArrow: this.props.drawArrow,\n placeholder: this.props.placeholder,\n size: this.props.size,\n textValue: this.state.textValue,\n totalCount: this.props.totalCount,\n value: this.props.value,\n warning: this.props.warning,\n width: this.props.width,\n maxLength: this.props.maxLength,\n maxMenuHeight: this.props.maxMenuHeight,\n leftIcon: this.props.leftIcon,\n rightIcon: this.props.rightIcon,\n inputMode: this.props.inputMode,\n\n onValueChange: this.handleValueChange,\n onClickOutside: this.handleClickOutside,\n onFocus: this.handleFocus,\n onFocusOutside: this.handleBlur,\n onInputBlur: this.handleInputBlur,\n onInputValueChange: (value: string) => this.dispatch({ type: 'TextChange', value }),\n onInputFocus: this.handleFocus,\n onInputClick: this.handleInputClick,\n onInputKeyDown: (event: React.KeyboardEvent) => {\n event.persist();\n this.dispatch({ type: 'KeyPress', event });\n },\n onMouseEnter: this.props.onMouseEnter,\n onMouseOver: this.props.onMouseOver,\n onMouseLeave: this.props.onMouseLeave,\n renderItem: this.props.renderItem,\n renderNotFound: this.props.renderNotFound,\n renderValue: this.props.renderValue,\n renderTotalCount: this.props.renderTotalCount,\n renderAddButton: this.props.renderAddButton,\n repeatRequest: this.state.repeatRequest,\n requestStatus: this.state.requestStatus,\n\n refInput: (input: Nullable<Input>) => {\n this.input = input;\n },\n refMenu: (menu: Nullable<Menu>) => {\n this.menu = menu;\n },\n refInputLikeText: (inputLikeText: Nullable<InputLikeText>) => {\n this.inputLikeText = inputLikeText;\n },\n };\n\n return (\n <CommonWrapper {...this.props}>\n <ComboBoxView {...viewProps} ref={this.setRootNode} />\n </CommonWrapper>\n );\n }\n\n public componentDidMount() {\n this.dispatch({ type: 'Mount' });\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public componentDidUpdate(prevProps: CustomComboBoxProps<T>, prevState: CustomComboBoxState<T>) {\n if (prevState.editing && !this.state.editing) {\n this.handleBlur();\n }\n this.dispatch({ type: 'DidUpdate', prevProps, prevState });\n }\n\n /**\n * @public\n */\n public reset() {\n this.dispatch({ type: 'Reset' });\n }\n\n private dispatch = (action: CustomComboBoxAction<T>) => {\n let effects: Array<CustomComboBoxEffect<T>>;\n let nextState: Pick<CustomComboBoxState<T>, never>;\n\n this.setState(\n (state) => {\n const stateAndEffect = this.reducer(state, this.props, action);\n\n [nextState, effects] = stateAndEffect instanceof Array ? stateAndEffect : [stateAndEffect, []];\n\n return nextState;\n },\n () => {\n effects.forEach(this.handleEffect);\n },\n );\n };\n\n private handleEffect = (effect: CustomComboBoxEffect<T>) => {\n effect(this.dispatch, this.getState, this.getProps, () => this);\n };\n\n private getProps = () => this.props;\n\n private getState = () => this.state;\n\n private handleValueChange = (value: T) => {\n this.dispatch({\n type: 'ValueChange',\n value,\n keepFocus: true,\n });\n };\n\n private handleFocus = () => {\n if (this.focused) {\n return;\n }\n this.focused = true;\n this.dispatch({ type: 'Focus' });\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleBlur = () => {\n if (!this.focused) {\n if (this.state.opened) {\n this.close();\n }\n return;\n }\n this.focused = false;\n // workaround for the similar bug with focusout\n // in Firefox, Chrome and IE\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1363964\n setTimeout(() => {\n this.dispatch({ type: 'Blur' });\n });\n };\n\n private handleInputBlur = () => {\n // If menu opened, RenderLayer is active and\n // it would call handleFocusOutside\n // In that way handleBlur would be called\n if (this.state.opened) {\n return;\n }\n this.handleBlur();\n };\n\n private handleInputClick = () => {\n if (!this.cancelationToken) {\n this.dispatch({ type: 'InputClick' });\n }\n };\n}\n"]}
@@ -99,6 +99,7 @@ export declare class CustomComboBox<T> extends React.PureComponent<CustomComboBo
99
99
  * @public
100
100
  */
101
101
  blur: () => void;
102
+ private setRootNode;
102
103
  /**
103
104
  * @public
104
105
  */
@@ -22,8 +22,8 @@ var itemsToMoveCount = -5;
22
22
  var monthsCount = 12;
23
23
  var defaultMinYear = 1900;
24
24
  var defaultMaxYear = 2100;
25
- export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {
26
- _inheritsLoose(DateSelect, _React$Component);
25
+ export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
26
+ _inheritsLoose(DateSelect, _React$PureComponent);
27
27
 
28
28
  function DateSelect() {
29
29
  var _this;
@@ -32,7 +32,7 @@ export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _d
32
32
  args[_key] = arguments[_key];
33
33
  }
34
34
 
35
- _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
35
+ _this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;
36
36
  _this.state = {
37
37
  botCapped: false,
38
38
  current: 0,
@@ -240,7 +240,7 @@ export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _d
240
240
 
241
241
  var _proto = DateSelect.prototype;
242
242
 
243
- _proto.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps() {
243
+ _proto.componentDidUpdate = function componentDidUpdate() {
244
244
  this.setNodeTop();
245
245
  };
246
246
 
@@ -489,7 +489,7 @@ export var DateSelect = (_dec = locale('DatePicker', DatePickerLocaleHelper), _d
489
489
  };
490
490
 
491
491
  return DateSelect;
492
- }(React.Component), _class2.__KONTUR_REACT_UI__ = 'DateSelect', _class2.propTypes = {
492
+ }(React.PureComponent), _class2.__KONTUR_REACT_UI__ = 'DateSelect', _class2.propTypes = {
493
493
  disabled: PropTypes.bool,
494
494
  type: PropTypes.string,
495
495
  value: PropTypes.number.isRequired,
@@ -1 +1 @@
1
- {"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ThemeContext","ArrowTriangleUpDownIcon","ArrowChevronDownIcon","ArrowChevronUpIcon","isMobile","cx","styles","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","DateSelect","state","botCapped","current","height","opened","pos","top","topCapped","nodeTop","Infinity","theme","root","itemsContainer","listener","timeout","longClickTimer","setPositionRepeatTimer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","refRoot","element","setNodeTop","clearTimeout","setTimeout","getBoundingClientRect","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","window","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","e","value","onValueChange","handleKey","handleUp","handleDown","UNSAFE_componentWillReceiveProps","componentDidMount","addListener","componentWillUnmount","remove","render","renderMain","width","rootProps","className","Boolean","style","ref","caption","getItem","arrow","arrowDisabled","renderMenu","disableItems","index","maxValue","minValue","from","to","Math","ceil","items","i","menuItem","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","onClick","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","menu","menuUp","itemsHolder","menuDown","type","months","minPos","getMinPos","maxPos","getMaxPos","Component","__KONTUR_REACT_UI__","propTypes","bool","string","number","isRequired","oneOfType","func","defaultProps","minMonth","maxMonth"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../RenderLayer';\nimport { DropdownContainer } from '../DropdownContainer';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './DateSelect.styles';\n\nconst itemHeight = 24;\nconst visibleYearsCount = 11;\nconst itemsToMoveCount = -5;\nconst monthsCount = 12;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2100;\n\nexport interface DateSelectProps {\n disabled?: boolean | null;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport interface DateSelectState {\n botCapped: boolean;\n current: Nullable<number>;\n height: number;\n opened: boolean;\n pos: number;\n top: number;\n topCapped: boolean;\n nodeTop: number;\n}\n\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateSelect extends React.Component<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps = {\n type: 'year',\n minMonth: 0,\n maxMonth: 11,\n width: 'auto',\n };\n\n public state = {\n botCapped: false,\n current: 0,\n height: 0,\n opened: false,\n pos: 0,\n top: 0,\n topCapped: false,\n nodeTop: Infinity,\n };\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private root: HTMLElement | null = null;\n private itemsContainer: HTMLElement | null = null;\n private listener: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private timeout: NodeJS.Timeout | undefined;\n private longClickTimer = 0;\n private setPositionRepeatTimer = 0;\n private yearStep = 3;\n private touchStartY: Nullable<number> = null;\n\n public UNSAFE_componentWillReceiveProps() {\n this.setNodeTop();\n }\n\n public componentDidMount() {\n this.listener = LayoutEvents.addListener(this.setNodeTop);\n this.setNodeTop();\n window.addEventListener('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n clearTimeout(this.setPositionRepeatTimer);\n }\n window.removeEventListener('keydown', this.handleKey);\n }\n\n /**\n * @public\n */\n public open = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n return;\n }\n\n this.setPosition(0);\n this.setState({\n opened: true,\n current: 0,\n });\n };\n\n /**\n * @public\n */\n public close = () => {\n if (!this.state.opened) {\n return;\n }\n\n this.setState({ opened: false });\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { width, disabled } = this.props;\n const rootProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n };\n return (\n <span {...rootProps}>\n <div data-tid=\"DateSelect__caption\" className={styles.caption()} onClick={this.open}>\n {this.getItem(0)}\n <div\n className={cx({\n [styles.arrow(this.theme)]: true,\n [styles.arrowDisabled()]: Boolean(disabled),\n })}\n >\n <ArrowTriangleUpDownIcon size={12} />\n </div>\n </div>\n {this.state.opened && this.renderMenu()}\n </span>\n );\n }\n\n private refRoot = (element: HTMLElement | null) => {\n this.root = element;\n };\n\n private setNodeTop = () => {\n const root = this.root;\n if (!root) {\n return;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.timeout = setTimeout(() =>\n this.setState({\n nodeTop: root.getBoundingClientRect().top,\n }),\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (this.props.maxValue != null && this.props.minValue != null) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n if (this.props.minValue != null) {\n return value < this.props.minValue;\n }\n if (this.props.maxValue != null) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(): React.ReactNode {\n const { top, height, nodeTop } = this.state;\n\n let shift = this.state.pos % itemHeight;\n if (shift < 0) {\n shift += itemHeight;\n }\n\n const from = (this.state.pos - shift + top) / itemHeight;\n const to = from + Math.ceil((height + shift) / itemHeight);\n const items = [];\n\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = cx({\n [styles.menuItem(this.theme)]: true,\n [styles.menuItemSelected(this.theme)]: i === 0,\n [styles.menuItemActive(this.theme)]: i === this.state.current,\n [styles.menuItemDisabled(this.theme)]: disableItems,\n });\n const clickHandler = {\n onMouseDown: preventDefault,\n onClick: this.handleItemClick(i),\n };\n items.push(\n <div\n data-tid=\"DateSelect__menuItem\"\n data-prop-disabled={disableItems}\n key={i}\n className={className}\n onMouseEnter={() => this.setState({ current: i })}\n onMouseLeave={() => this.setState({ current: null })}\n {...clickHandler}\n >\n {this.getItem(i)}\n </div>,\n );\n }\n const style: {\n left?: number | string;\n right?: number | string;\n top: number;\n width?: number | string;\n } = {\n top: top - 5,\n left: 0,\n right: 0,\n };\n\n const shiftStyle: React.CSSProperties = {\n position: 'relative',\n top: -shift,\n };\n\n const holderClass = cx({\n [styles.menuHolder(this.theme)]: true,\n [styles.isTopCapped()]: this.state.topCapped,\n [styles.isBotCapped()]: this.state.botCapped,\n });\n\n let dropdownOffset = -itemHeight;\n if (nodeTop < -top) {\n const overflowOffsetDelta = this.state.topCapped ? 6 : 17;\n dropdownOffset -= nodeTop + top - overflowOffsetDelta;\n }\n\n return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <div>\n <DropdownContainer getParent={this.getAnchor} offsetY={dropdownOffset} offsetX={-10}>\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuUp())}\n onClick={this.handleUp}\n onMouseDown={this.handleLongClickUp}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickUp}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>\n <ArrowChevronUpIcon />\n </span>\n </div>\n )}\n <div className={styles.itemsHolder()} style={{ height }}>\n <div ref={this.refItemsContainer} style={shiftStyle}>\n {items}\n </div>\n </div>\n {!this.state.botCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuDown())}\n onClick={this.handleDown}\n onMouseDown={this.handleLongClickDown}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickDown}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>\n <ArrowChevronDownIcon />\n </span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </div>\n </RenderLayer>\n );\n }\n\n private refItemsContainer = (element: HTMLElement | null) => {\n if (!this.itemsContainer && element) {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('wheel', this.handleWheel);\n }\n\n if (isMobile) {\n if (!this.itemsContainer && element) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.handleTouchMove);\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('touchstart', this.handleTouchStart);\n this.itemsContainer.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n this.itemsContainer = element;\n };\n\n private handleLongClickUp = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos - itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickDown = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n clearTimeout(this.longClickTimer);\n clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n let deltaY = event.deltaY;\n if (event.deltaMode === 1) {\n deltaY *= itemHeight;\n } else if (event.deltaMode === 2) {\n deltaY *= itemHeight * 4;\n }\n const pos = this.state.pos + deltaY;\n this.setPosition(pos);\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = window.devicePixelRatio;\n\n const deltaY = ((this.touchStartY || 0) - clientY) / pixelRatio;\n const pos = this.state.pos + deltaY + deltaY / itemHeight;\n\n this.touchStartY = clientY;\n\n this.setPosition(pos);\n };\n\n private handleItemClick = (shift: number) => {\n return (e: React.MouseEvent<HTMLElement>) => {\n const value = this.props.value + shift;\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n this.setState({ opened: false });\n };\n };\n\n private handleKey = (e: KeyboardEvent) => {\n if (this.state.opened && isKeyEscape(e)) {\n e.preventDefault();\n this.close();\n e.stopPropagation();\n }\n };\n\n private handleUp = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos - itemHeight * this.yearStep);\n };\n\n private handleDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos + itemHeight * this.yearStep);\n };\n\n private getItem(index: number) {\n const value = this.props.value + index;\n if (this.props.type === 'month') {\n return this.locale.months[value];\n }\n return value;\n }\n\n private setPosition(pos: number) {\n let top = itemsToMoveCount * itemHeight;\n let height = visibleYearsCount * itemHeight;\n if (this.props.type === 'month') {\n top = -this.props.value * itemHeight;\n height = monthsCount * itemHeight;\n }\n\n const minPos = this.getMinPos() - top;\n const maxPos = this.getMaxPos() - top - height + itemHeight;\n if (minPos >= pos) {\n pos = minPos;\n }\n if (maxPos <= pos) {\n pos = maxPos;\n }\n const topCapped = pos <= minPos;\n const botCapped = pos >= maxPos;\n\n this.setState({ pos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n if (this.props.type === 'month') {\n return -this.props.value * itemHeight;\n } else if (this.props.type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n if (this.props.type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (this.props.type === 'year') {\n return ((this.props.maxValue || defaultMaxYear) - this.props.value) * itemHeight;\n }\n return Infinity; // Be defensive.\n }\n}\n\nfunction preventDefault(e: React.SyntheticEvent) {\n e.preventDefault();\n}\n"]}
1
+ {"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ThemeContext","ArrowTriangleUpDownIcon","ArrowChevronDownIcon","ArrowChevronUpIcon","isMobile","cx","styles","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","DateSelect","state","botCapped","current","height","opened","pos","top","topCapped","nodeTop","Infinity","theme","root","itemsContainer","listener","timeout","longClickTimer","setPositionRepeatTimer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","refRoot","element","setNodeTop","clearTimeout","setTimeout","getBoundingClientRect","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","window","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","e","value","onValueChange","handleKey","handleUp","handleDown","componentDidUpdate","componentDidMount","addListener","componentWillUnmount","remove","render","renderMain","width","rootProps","className","Boolean","style","ref","caption","getItem","arrow","arrowDisabled","renderMenu","disableItems","index","maxValue","minValue","from","to","Math","ceil","items","i","menuItem","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","onClick","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","menu","menuUp","itemsHolder","menuDown","type","months","minPos","getMinPos","maxPos","getMaxPos","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","number","isRequired","oneOfType","func","defaultProps","minMonth","maxMonth"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../RenderLayer';\nimport { DropdownContainer } from '../DropdownContainer';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles } from './DateSelect.styles';\n\nconst itemHeight = 24;\nconst visibleYearsCount = 11;\nconst itemsToMoveCount = -5;\nconst monthsCount = 12;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2100;\n\nexport interface DateSelectProps {\n disabled?: boolean | null;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport interface DateSelectState {\n botCapped: boolean;\n current: Nullable<number>;\n height: number;\n opened: boolean;\n pos: number;\n top: number;\n topCapped: boolean;\n nodeTop: number;\n}\n\n@locale('DatePicker', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps = {\n type: 'year',\n minMonth: 0,\n maxMonth: 11,\n width: 'auto',\n };\n\n public state = {\n botCapped: false,\n current: 0,\n height: 0,\n opened: false,\n pos: 0,\n top: 0,\n topCapped: false,\n nodeTop: Infinity,\n };\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private root: HTMLElement | null = null;\n private itemsContainer: HTMLElement | null = null;\n private listener: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private timeout: NodeJS.Timeout | undefined;\n private longClickTimer = 0;\n private setPositionRepeatTimer = 0;\n private yearStep = 3;\n private touchStartY: Nullable<number> = null;\n\n public componentDidUpdate() {\n this.setNodeTop();\n }\n\n public componentDidMount() {\n this.listener = LayoutEvents.addListener(this.setNodeTop);\n this.setNodeTop();\n window.addEventListener('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n clearTimeout(this.setPositionRepeatTimer);\n }\n window.removeEventListener('keydown', this.handleKey);\n }\n\n /**\n * @public\n */\n public open = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n return;\n }\n\n this.setPosition(0);\n this.setState({\n opened: true,\n current: 0,\n });\n };\n\n /**\n * @public\n */\n public close = () => {\n if (!this.state.opened) {\n return;\n }\n\n this.setState({ opened: false });\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { width, disabled } = this.props;\n const rootProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n };\n return (\n <span {...rootProps}>\n <div data-tid=\"DateSelect__caption\" className={styles.caption()} onClick={this.open}>\n {this.getItem(0)}\n <div\n className={cx({\n [styles.arrow(this.theme)]: true,\n [styles.arrowDisabled()]: Boolean(disabled),\n })}\n >\n <ArrowTriangleUpDownIcon size={12} />\n </div>\n </div>\n {this.state.opened && this.renderMenu()}\n </span>\n );\n }\n\n private refRoot = (element: HTMLElement | null) => {\n this.root = element;\n };\n\n private setNodeTop = () => {\n const root = this.root;\n if (!root) {\n return;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n }\n this.timeout = setTimeout(() =>\n this.setState({\n nodeTop: root.getBoundingClientRect().top,\n }),\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (this.props.maxValue != null && this.props.minValue != null) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n if (this.props.minValue != null) {\n return value < this.props.minValue;\n }\n if (this.props.maxValue != null) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(): React.ReactNode {\n const { top, height, nodeTop } = this.state;\n\n let shift = this.state.pos % itemHeight;\n if (shift < 0) {\n shift += itemHeight;\n }\n\n const from = (this.state.pos - shift + top) / itemHeight;\n const to = from + Math.ceil((height + shift) / itemHeight);\n const items = [];\n\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = cx({\n [styles.menuItem(this.theme)]: true,\n [styles.menuItemSelected(this.theme)]: i === 0,\n [styles.menuItemActive(this.theme)]: i === this.state.current,\n [styles.menuItemDisabled(this.theme)]: disableItems,\n });\n const clickHandler = {\n onMouseDown: preventDefault,\n onClick: this.handleItemClick(i),\n };\n items.push(\n <div\n data-tid=\"DateSelect__menuItem\"\n data-prop-disabled={disableItems}\n key={i}\n className={className}\n onMouseEnter={() => this.setState({ current: i })}\n onMouseLeave={() => this.setState({ current: null })}\n {...clickHandler}\n >\n {this.getItem(i)}\n </div>,\n );\n }\n const style: {\n left?: number | string;\n right?: number | string;\n top: number;\n width?: number | string;\n } = {\n top: top - 5,\n left: 0,\n right: 0,\n };\n\n const shiftStyle: React.CSSProperties = {\n position: 'relative',\n top: -shift,\n };\n\n const holderClass = cx({\n [styles.menuHolder(this.theme)]: true,\n [styles.isTopCapped()]: this.state.topCapped,\n [styles.isBotCapped()]: this.state.botCapped,\n });\n\n let dropdownOffset = -itemHeight;\n if (nodeTop < -top) {\n const overflowOffsetDelta = this.state.topCapped ? 6 : 17;\n dropdownOffset -= nodeTop + top - overflowOffsetDelta;\n }\n\n return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <div>\n <DropdownContainer getParent={this.getAnchor} offsetY={dropdownOffset} offsetX={-10}>\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuUp())}\n onClick={this.handleUp}\n onMouseDown={this.handleLongClickUp}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickUp}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>\n <ArrowChevronUpIcon />\n </span>\n </div>\n )}\n <div className={styles.itemsHolder()} style={{ height }}>\n <div ref={this.refItemsContainer} style={shiftStyle}>\n {items}\n </div>\n </div>\n {!this.state.botCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuDown())}\n onClick={this.handleDown}\n onMouseDown={this.handleLongClickDown}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickDown}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>\n <ArrowChevronDownIcon />\n </span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </div>\n </RenderLayer>\n );\n }\n\n private refItemsContainer = (element: HTMLElement | null) => {\n if (!this.itemsContainer && element) {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('wheel', this.handleWheel);\n }\n\n if (isMobile) {\n if (!this.itemsContainer && element) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.handleTouchMove);\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('touchstart', this.handleTouchStart);\n this.itemsContainer.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n this.itemsContainer = element;\n };\n\n private handleLongClickUp = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos - itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickDown = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = window.setTimeout(() => {\n this.setPositionRepeatTimer = window.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n clearTimeout(this.longClickTimer);\n clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!(event instanceof WheelEvent)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n let deltaY = event.deltaY;\n if (event.deltaMode === 1) {\n deltaY *= itemHeight;\n } else if (event.deltaMode === 2) {\n deltaY *= itemHeight * 4;\n }\n const pos = this.state.pos + deltaY;\n this.setPosition(pos);\n };\n\n private handleTouchStart = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!(event instanceof TouchEvent)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = window.devicePixelRatio;\n\n const deltaY = ((this.touchStartY || 0) - clientY) / pixelRatio;\n const pos = this.state.pos + deltaY + deltaY / itemHeight;\n\n this.touchStartY = clientY;\n\n this.setPosition(pos);\n };\n\n private handleItemClick = (shift: number) => {\n return (e: React.MouseEvent<HTMLElement>) => {\n const value = this.props.value + shift;\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n this.setState({ opened: false });\n };\n };\n\n private handleKey = (e: KeyboardEvent) => {\n if (this.state.opened && isKeyEscape(e)) {\n e.preventDefault();\n this.close();\n e.stopPropagation();\n }\n };\n\n private handleUp = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos - itemHeight * this.yearStep);\n };\n\n private handleDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos + itemHeight * this.yearStep);\n };\n\n private getItem(index: number) {\n const value = this.props.value + index;\n if (this.props.type === 'month') {\n return this.locale.months[value];\n }\n return value;\n }\n\n private setPosition(pos: number) {\n let top = itemsToMoveCount * itemHeight;\n let height = visibleYearsCount * itemHeight;\n if (this.props.type === 'month') {\n top = -this.props.value * itemHeight;\n height = monthsCount * itemHeight;\n }\n\n const minPos = this.getMinPos() - top;\n const maxPos = this.getMaxPos() - top - height + itemHeight;\n if (minPos >= pos) {\n pos = minPos;\n }\n if (maxPos <= pos) {\n pos = maxPos;\n }\n const topCapped = pos <= minPos;\n const botCapped = pos >= maxPos;\n\n this.setState({ pos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n if (this.props.type === 'month') {\n return -this.props.value * itemHeight;\n } else if (this.props.type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n if (this.props.type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (this.props.type === 'year') {\n return ((this.props.maxValue || defaultMaxYear) - this.props.value) * itemHeight;\n }\n return Infinity; // Be defensive.\n }\n}\n\nfunction preventDefault(e: React.SyntheticEvent) {\n e.preventDefault();\n}\n"]}