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

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 (784) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/LICENSE +21 -21
  3. package/README.md +57 -0
  4. package/cjs/components/Autocomplete/Autocomplete.d.ts +1 -0
  5. package/cjs/components/Autocomplete/Autocomplete.js +11 -5
  6. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  7. package/cjs/components/Autocomplete/Autocomplete.md +7 -7
  8. package/cjs/components/Button/Button.d.ts +5 -1
  9. package/cjs/components/Button/Button.js +17 -5
  10. package/cjs/components/Button/Button.js.map +1 -1
  11. package/cjs/components/Button/Button.styles.d.ts +1 -0
  12. package/cjs/components/Button/Button.styles.js +38 -28
  13. package/cjs/components/Button/Button.styles.js.map +1 -1
  14. package/cjs/components/Center/Center.d.ts +1 -0
  15. package/cjs/components/Center/Center.js +10 -3
  16. package/cjs/components/Center/Center.js.map +1 -1
  17. package/cjs/components/Checkbox/Checkbox.d.ts +3 -3
  18. package/cjs/components/Checkbox/Checkbox.js +31 -22
  19. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  20. package/cjs/components/ComboBox/ComboBox.d.ts +2 -0
  21. package/cjs/components/ComboBox/ComboBox.js +100 -70
  22. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  23. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +4 -3
  24. package/cjs/components/CurrencyInput/CurrencyInput.js +35 -4
  25. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  26. package/cjs/components/CurrencyInput/CurrencyInput.md +24 -24
  27. package/cjs/components/CurrencyLabel/CurrencyLabel.md +23 -23
  28. package/cjs/components/DateInput/DateInput.d.ts +1 -0
  29. package/cjs/components/DateInput/DateInput.js +6 -3
  30. package/cjs/components/DateInput/DateInput.js.map +1 -1
  31. package/cjs/components/DateInput/DateInput.md +106 -106
  32. package/cjs/components/DatePicker/DatePicker.d.ts +4 -2
  33. package/cjs/components/DatePicker/DatePicker.js +17 -7
  34. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  35. package/cjs/components/DatePicker/DatePicker.md +307 -307
  36. package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
  37. package/cjs/components/Dropdown/Dropdown.js +11 -4
  38. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  39. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +3 -2
  40. package/cjs/components/DropdownMenu/DropdownMenu.js +7 -4
  41. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  42. package/cjs/components/FxInput/FxInput.d.ts +1 -0
  43. package/cjs/components/FxInput/FxInput.js +9 -2
  44. package/cjs/components/FxInput/FxInput.js.map +1 -1
  45. package/cjs/components/FxInput/FxInput.md +16 -16
  46. package/cjs/components/Gapped/Gapped.d.ts +2 -0
  47. package/cjs/components/Gapped/Gapped.js +22 -14
  48. package/cjs/components/Gapped/Gapped.js.map +1 -1
  49. package/cjs/components/Gapped/Gapped.md +43 -43
  50. package/cjs/components/Group/Group.d.ts +1 -0
  51. package/cjs/components/Group/Group.js +10 -7
  52. package/cjs/components/Group/Group.js.map +1 -1
  53. package/cjs/components/Group/Group.md +18 -18
  54. package/cjs/components/Hint/Hint.d.ts +5 -3
  55. package/cjs/components/Hint/Hint.js +7 -20
  56. package/cjs/components/Hint/Hint.js.map +1 -1
  57. package/cjs/components/Input/Input.d.ts +8 -1
  58. package/cjs/components/Input/Input.js +22 -5
  59. package/cjs/components/Input/Input.js.map +1 -1
  60. package/cjs/components/Input/Input.md +13 -13
  61. package/cjs/components/Kebab/Kebab.d.ts +3 -2
  62. package/cjs/components/Kebab/Kebab.js +8 -5
  63. package/cjs/components/Kebab/Kebab.js.map +1 -1
  64. package/cjs/components/Link/Link.d.ts +1 -0
  65. package/cjs/components/Link/Link.js +11 -3
  66. package/cjs/components/Link/Link.js.map +1 -1
  67. package/cjs/components/Loader/Loader.d.ts +1 -0
  68. package/cjs/components/Loader/Loader.js +11 -7
  69. package/cjs/components/Loader/Loader.js.map +1 -1
  70. package/cjs/components/MenuItem/MenuItem.d.ts +2 -1
  71. package/cjs/components/MenuItem/MenuItem.js +11 -8
  72. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  73. package/cjs/components/Modal/Modal.js +1 -1
  74. package/cjs/components/Modal/Modal.js.map +1 -1
  75. package/cjs/components/Modal/ModalBody.d.ts +1 -0
  76. package/cjs/components/Modal/ModalBody.js +9 -6
  77. package/cjs/components/Modal/ModalBody.js.map +1 -1
  78. package/cjs/components/Paging/Paging.d.ts +2 -2
  79. package/cjs/components/Paging/Paging.js +6 -5
  80. package/cjs/components/Paging/Paging.js.map +1 -1
  81. package/cjs/components/Paging/Paging.md +43 -43
  82. package/cjs/components/PasswordInput/PasswordInput.d.ts +3 -2
  83. package/cjs/components/PasswordInput/PasswordInput.js +13 -6
  84. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  85. package/cjs/components/PasswordInput/PasswordInput.md +9 -9
  86. package/cjs/components/Radio/Radio.d.ts +5 -10
  87. package/cjs/components/Radio/Radio.js +15 -11
  88. package/cjs/components/Radio/Radio.js.map +1 -1
  89. package/cjs/components/RadioGroup/RadioGroup.d.ts +11 -26
  90. package/cjs/components/RadioGroup/RadioGroup.js +25 -29
  91. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  92. package/cjs/components/RadioGroup/RadioGroup.md +43 -43
  93. package/cjs/components/RadioGroup/RadioGroupContext.d.ts +10 -0
  94. package/cjs/components/RadioGroup/RadioGroupContext.js +21 -0
  95. package/cjs/components/RadioGroup/RadioGroupContext.js.map +1 -0
  96. package/cjs/components/ScrollContainer/ScrollBar.js +4 -2
  97. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  98. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  99. package/cjs/components/ScrollContainer/ScrollContainer.js +10 -6
  100. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  101. package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
  102. package/cjs/components/ScrollContainer/ScrollContainer.styles.js +12 -8
  103. package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  104. package/cjs/components/Select/Select.d.ts +1 -0
  105. package/cjs/components/Select/Select.js +9 -5
  106. package/cjs/components/Select/Select.js.map +1 -1
  107. package/cjs/components/SidePage/SidePage.d.ts +3 -0
  108. package/cjs/components/SidePage/SidePage.js +20 -2
  109. package/cjs/components/SidePage/SidePage.js.map +1 -1
  110. package/cjs/components/SidePage/SidePageBody.d.ts +1 -0
  111. package/cjs/components/SidePage/SidePageBody.js +9 -6
  112. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  113. package/cjs/components/SidePage/SidePageContainer.d.ts +1 -0
  114. package/cjs/components/SidePage/SidePageContainer.js +9 -6
  115. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  116. package/cjs/components/SidePage/SidePageFooter.d.ts +1 -2
  117. package/cjs/components/SidePage/SidePageFooter.js +11 -12
  118. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  119. package/cjs/components/SidePage/SidePageHeader.d.ts +1 -0
  120. package/cjs/components/SidePage/SidePageHeader.js +6 -3
  121. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  122. package/cjs/components/Spinner/Spinner.d.ts +9 -0
  123. package/cjs/components/Spinner/Spinner.js +29 -8
  124. package/cjs/components/Spinner/Spinner.js.map +1 -1
  125. package/cjs/components/Spinner/Spinner.md +1 -0
  126. package/cjs/components/Spinner/Spinner.styles.d.ts +2 -1
  127. package/cjs/components/Spinner/Spinner.styles.js +13 -10
  128. package/cjs/components/Spinner/Spinner.styles.js.map +1 -1
  129. package/cjs/components/Sticky/Sticky.d.ts +1 -0
  130. package/cjs/components/Sticky/Sticky.js +8 -5
  131. package/cjs/components/Sticky/Sticky.js.map +1 -1
  132. package/cjs/components/Switcher/Switcher.d.ts +1 -0
  133. package/cjs/components/Switcher/Switcher.js +6 -3
  134. package/cjs/components/Switcher/Switcher.js.map +1 -1
  135. package/cjs/components/Switcher/Switcher.styles.js +4 -2
  136. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  137. package/cjs/components/Tabs/Indicator.d.ts +1 -0
  138. package/cjs/components/Tabs/Indicator.js +16 -15
  139. package/cjs/components/Tabs/Indicator.js.map +1 -1
  140. package/cjs/components/Tabs/Tab.d.ts +2 -1
  141. package/cjs/components/Tabs/Tab.js +13 -9
  142. package/cjs/components/Tabs/Tab.js.map +1 -1
  143. package/cjs/components/Tabs/Tabs.d.ts +1 -0
  144. package/cjs/components/Tabs/Tabs.js +9 -9
  145. package/cjs/components/Tabs/Tabs.js.map +1 -1
  146. package/cjs/components/Tabs/Tabs.md +36 -36
  147. package/cjs/components/Textarea/Textarea.d.ts +1 -0
  148. package/cjs/components/Textarea/Textarea.js +12 -5
  149. package/cjs/components/Textarea/Textarea.js.map +1 -1
  150. package/cjs/components/Textarea/Textarea.md +25 -25
  151. package/cjs/components/Toast/Toast.d.ts +3 -0
  152. package/cjs/components/Toast/Toast.js +15 -4
  153. package/cjs/components/Toast/Toast.js.map +1 -1
  154. package/cjs/components/Toast/ToastView.d.ts +1 -0
  155. package/cjs/components/Toast/ToastView.js +8 -5
  156. package/cjs/components/Toast/ToastView.js.map +1 -1
  157. package/cjs/components/Toggle/Toggle.d.ts +1 -0
  158. package/cjs/components/Toggle/Toggle.js +9 -6
  159. package/cjs/components/Toggle/Toggle.js.map +1 -1
  160. package/cjs/components/Token/Token.d.ts +1 -0
  161. package/cjs/components/Token/Token.js +7 -4
  162. package/cjs/components/Token/Token.js.map +1 -1
  163. package/cjs/components/Token/Token.md +112 -112
  164. package/cjs/components/TokenInput/TokenInput.d.ts +1 -0
  165. package/cjs/components/TokenInput/TokenInput.js +11 -8
  166. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  167. package/cjs/components/TokenInput/TokenInput.md +79 -79
  168. package/cjs/components/Tooltip/Tooltip.d.ts +11 -22
  169. package/cjs/components/Tooltip/Tooltip.js +28 -30
  170. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  171. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +3 -2
  172. package/cjs/components/TooltipMenu/TooltipMenu.js +8 -5
  173. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  174. package/cjs/index.d.ts +1 -1
  175. package/cjs/index.js +2 -2
  176. package/cjs/index.js.map +1 -1
  177. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  178. package/cjs/internal/CommonWrapper/CommonWrapper.js +38 -15
  179. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  180. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +3 -2
  181. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  182. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -1
  183. package/cjs/internal/CustomComboBox/ComboBoxView.js +15 -5
  184. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  185. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  186. package/cjs/internal/CustomComboBox/CustomComboBox.js +8 -5
  187. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  188. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -2
  189. package/cjs/internal/DateSelect/DateSelect.js +3 -3
  190. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  191. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  192. package/cjs/internal/DropdownContainer/DropdownContainer.js +14 -11
  193. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  194. package/cjs/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -0
  195. package/cjs/internal/DropdownContainer/DropdownContainer.styles.js +9 -0
  196. package/cjs/internal/DropdownContainer/DropdownContainer.styles.js.map +1 -0
  197. package/cjs/internal/FocusTrap/FocusTrap.d.ts +1 -0
  198. package/cjs/internal/FocusTrap/FocusTrap.js +12 -9
  199. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  200. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +12 -4
  201. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  202. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  203. package/cjs/internal/InputLikeText/InputLikeText.js +10 -3
  204. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  205. package/cjs/internal/InternalMenu/InternalMenu.d.ts +2 -3
  206. package/cjs/internal/InternalMenu/InternalMenu.js +16 -22
  207. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  208. package/cjs/internal/MaskedInput/MaskedInput.d.ts +2 -2
  209. package/cjs/internal/MaskedInput/MaskedInput.js +3 -3
  210. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  211. package/cjs/internal/Menu/Menu.d.ts +3 -0
  212. package/cjs/internal/Menu/Menu.js +33 -6
  213. package/cjs/internal/Menu/Menu.js.map +1 -1
  214. package/cjs/internal/Menu/Menu.styles.d.ts +3 -0
  215. package/cjs/internal/Menu/Menu.styles.js +22 -3
  216. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  217. package/cjs/internal/Popup/Popup.d.ts +9 -8
  218. package/cjs/internal/Popup/Popup.js +64 -48
  219. package/cjs/internal/Popup/Popup.js.map +1 -1
  220. package/cjs/internal/Popup/PopupHelper.d.ts +2 -2
  221. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  222. package/cjs/internal/Popup/types.d.ts +1 -0
  223. package/cjs/{components/FileUploader/locale → internal/Popup}/types.js +0 -0
  224. package/cjs/{components/FileUploader/locale → internal/Popup}/types.js.map +0 -0
  225. package/cjs/internal/PopupMenu/PopupMenu.d.ts +4 -3
  226. package/cjs/internal/PopupMenu/PopupMenu.js +23 -6
  227. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  228. package/cjs/internal/PopupMenu/validatePositions.d.ts +2 -2
  229. package/cjs/internal/PopupMenu/validatePositions.js +2 -4
  230. package/cjs/internal/PopupMenu/validatePositions.js.map +1 -1
  231. package/cjs/internal/RenderContainer/RenderContainer.d.ts +1 -1
  232. package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
  233. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  234. package/cjs/internal/RenderContainer/RenderInnerContainer.js +2 -3
  235. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  236. package/cjs/internal/RenderLayer/RenderLayer.d.ts +3 -1
  237. package/cjs/internal/RenderLayer/RenderLayer.js +13 -7
  238. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  239. package/cjs/internal/ThemePlayground/Playground.d.ts +0 -1
  240. package/cjs/internal/ThemePlayground/Playground.js +1 -11
  241. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  242. package/cjs/internal/ThemePlayground/darkTheme.d.ts +0 -15
  243. package/cjs/internal/ThemePlayground/darkTheme.js +1 -25
  244. package/cjs/internal/ThemePlayground/darkTheme.js.map +1 -1
  245. package/cjs/internal/ThemeShowcase/ThemeShowcase.d.ts +1 -1
  246. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +20 -19
  247. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  248. package/cjs/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  249. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  250. package/cjs/internal/ZIndex/ZIndex.d.ts +2 -0
  251. package/cjs/internal/ZIndex/ZIndex.js +45 -34
  252. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  253. package/cjs/internal/icons/16px/index.d.ts +17 -19
  254. package/cjs/internal/icons/16px/index.js +105 -84
  255. package/cjs/internal/icons/16px/index.js.map +1 -1
  256. package/cjs/internal/icons/SpinnerIcon.d.ts +4 -1
  257. package/cjs/internal/icons/SpinnerIcon.js +5 -2
  258. package/cjs/internal/icons/SpinnerIcon.js.map +1 -1
  259. package/cjs/internal/themes/DefaultTheme.d.ts +0 -23
  260. package/cjs/internal/themes/DefaultTheme.js +1 -64
  261. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  262. package/cjs/lib/ModalStack.js +16 -17
  263. package/cjs/lib/ModalStack.js.map +1 -1
  264. package/cjs/lib/callChildRef/callChildRef.d.ts +3 -0
  265. package/cjs/lib/callChildRef/callChildRef.js +19 -0
  266. package/cjs/lib/callChildRef/callChildRef.js.map +1 -0
  267. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +2 -0
  268. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js +20 -0
  269. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js.map +1 -0
  270. package/cjs/lib/getDisplayName.d.ts +3 -0
  271. package/cjs/lib/getDisplayName.js +9 -0
  272. package/cjs/lib/getDisplayName.js.map +1 -0
  273. package/cjs/lib/locale/types.d.ts +0 -2
  274. package/cjs/lib/locale/types.js +0 -2
  275. package/cjs/lib/locale/types.js.map +1 -1
  276. package/cjs/lib/rootNode/getRootNode.d.ts +3 -0
  277. package/cjs/lib/rootNode/getRootNode.js +27 -0
  278. package/cjs/lib/rootNode/getRootNode.js.map +1 -0
  279. package/cjs/lib/rootNode/index.d.ts +2 -0
  280. package/cjs/lib/rootNode/index.js +2 -0
  281. package/cjs/lib/rootNode/index.js.map +1 -0
  282. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +33 -0
  283. package/cjs/lib/rootNode/rootNodeDecorator.js +31 -0
  284. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -0
  285. package/cjs/lib/theming/AnimationKeyframes.js +1 -1
  286. package/cjs/lib/theming/AnimationKeyframes.js.map +1 -1
  287. package/cjs/lib/theming/Emotion.js +1 -0
  288. package/cjs/lib/theming/Emotion.js.map +1 -1
  289. package/cjs/lib/theming/useTheme.d.ts +1 -0
  290. package/cjs/lib/theming/useTheme.js +7 -0
  291. package/cjs/lib/theming/useTheme.js.map +1 -0
  292. package/cjs/lib/utils.d.ts +35 -1
  293. package/cjs/lib/utils.js +77 -22
  294. package/cjs/lib/utils.js.map +1 -1
  295. package/cjs/lib/withClassWrapper.d.ts +71 -0
  296. package/cjs/lib/withClassWrapper.js +59 -0
  297. package/cjs/lib/withClassWrapper.js.map +1 -0
  298. package/cjs/typings/html-props.d.ts +123 -0
  299. package/components/Autocomplete/Autocomplete/Autocomplete.js +19 -16
  300. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  301. package/components/Autocomplete/Autocomplete.d.ts +1 -0
  302. package/components/Autocomplete/Autocomplete.md +7 -7
  303. package/components/Button/Button/Button.js +24 -15
  304. package/components/Button/Button/Button.js.map +1 -1
  305. package/components/Button/Button.d.ts +5 -1
  306. package/components/Button/Button.styles/Button.styles.js +31 -28
  307. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  308. package/components/Button/Button.styles.d.ts +1 -0
  309. package/components/Center/Center/Center.js +14 -9
  310. package/components/Center/Center/Center.js.map +1 -1
  311. package/components/Center/Center.d.ts +1 -0
  312. package/components/Checkbox/Checkbox/Checkbox.js +34 -30
  313. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  314. package/components/Checkbox/Checkbox.d.ts +3 -3
  315. package/components/ComboBox/ComboBox/ComboBox.js +38 -32
  316. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  317. package/components/ComboBox/ComboBox.d.ts +2 -0
  318. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +62 -27
  319. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  320. package/components/CurrencyInput/CurrencyInput.d.ts +4 -3
  321. package/components/CurrencyInput/CurrencyInput.md +24 -24
  322. package/components/CurrencyLabel/CurrencyLabel.md +23 -23
  323. package/components/DateInput/DateInput/DateInput.js +7 -3
  324. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  325. package/components/DateInput/DateInput.d.ts +1 -0
  326. package/components/DateInput/DateInput.md +106 -106
  327. package/components/DatePicker/DatePicker/DatePicker.js +29 -22
  328. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  329. package/components/DatePicker/DatePicker.d.ts +4 -2
  330. package/components/DatePicker/DatePicker.md +307 -307
  331. package/components/Dropdown/Dropdown/Dropdown.js +15 -13
  332. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  333. package/components/Dropdown/Dropdown.d.ts +1 -0
  334. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +15 -9
  335. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  336. package/components/DropdownMenu/DropdownMenu.d.ts +3 -2
  337. package/components/FxInput/FxInput/FxInput.js +13 -9
  338. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  339. package/components/FxInput/FxInput.d.ts +1 -0
  340. package/components/FxInput/FxInput.md +16 -16
  341. package/components/Gapped/Gapped/Gapped.js +24 -21
  342. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  343. package/components/Gapped/Gapped.d.ts +2 -0
  344. package/components/Gapped/Gapped.md +43 -43
  345. package/components/Group/Group/Group.js +22 -9
  346. package/components/Group/Group/Group.js.map +1 -1
  347. package/components/Group/Group.d.ts +1 -0
  348. package/components/Group/Group.md +18 -18
  349. package/components/Hint/Hint/Hint.js +18 -12
  350. package/components/Hint/Hint/Hint.js.map +1 -1
  351. package/components/Hint/Hint.d.ts +5 -3
  352. package/components/Input/Input/Input.js +29 -14
  353. package/components/Input/Input/Input.js.map +1 -1
  354. package/components/Input/Input.d.ts +8 -1
  355. package/components/Input/Input.md +13 -13
  356. package/components/Kebab/Kebab/Kebab.js +12 -7
  357. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  358. package/components/Kebab/Kebab.d.ts +3 -2
  359. package/components/Link/Link/Link.js +15 -11
  360. package/components/Link/Link/Link.js.map +1 -1
  361. package/components/Link/Link.d.ts +1 -0
  362. package/components/Loader/Loader/Loader.js +19 -13
  363. package/components/Loader/Loader/Loader.js.map +1 -1
  364. package/components/Loader/Loader.d.ts +1 -0
  365. package/components/MenuItem/MenuItem/MenuItem.js +19 -17
  366. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  367. package/components/MenuItem/MenuItem.d.ts +2 -1
  368. package/components/Modal/Modal/Modal.js +1 -1
  369. package/components/Modal/Modal/Modal.js.map +1 -1
  370. package/components/Modal/ModalBody/ModalBody.js +16 -10
  371. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  372. package/components/Modal/ModalBody.d.ts +1 -0
  373. package/components/Paging/Paging/Paging.js +17 -14
  374. package/components/Paging/Paging/Paging.js.map +1 -1
  375. package/components/Paging/Paging.d.ts +2 -2
  376. package/components/Paging/Paging.md +43 -43
  377. package/components/PasswordInput/PasswordInput/PasswordInput.js +18 -14
  378. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  379. package/components/PasswordInput/PasswordInput.d.ts +3 -2
  380. package/components/PasswordInput/PasswordInput.md +9 -9
  381. package/components/Radio/Radio/Radio.js +21 -20
  382. package/components/Radio/Radio/Radio.js.map +1 -1
  383. package/components/Radio/Radio.d.ts +5 -10
  384. package/components/RadioGroup/RadioGroup/RadioGroup.js +36 -29
  385. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  386. package/components/RadioGroup/RadioGroup.d.ts +11 -26
  387. package/components/RadioGroup/RadioGroup.md +43 -43
  388. package/components/RadioGroup/RadioGroupContext/RadioGroupContext.js +12 -0
  389. package/components/RadioGroup/RadioGroupContext/RadioGroupContext.js.map +1 -0
  390. package/components/RadioGroup/RadioGroupContext/package.json +6 -0
  391. package/components/RadioGroup/RadioGroupContext.d.ts +10 -0
  392. package/components/ScrollContainer/ScrollBar/ScrollBar.js +6 -2
  393. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  394. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +15 -9
  395. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  396. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  397. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +11 -8
  398. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
  399. package/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
  400. package/components/Select/Select/Select.js +16 -7
  401. package/components/Select/Select/Select.js.map +1 -1
  402. package/components/Select/Select.d.ts +1 -0
  403. package/components/SidePage/SidePage/SidePage.js +27 -3
  404. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  405. package/components/SidePage/SidePage.d.ts +3 -0
  406. package/components/SidePage/SidePageBody/SidePageBody.js +16 -10
  407. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  408. package/components/SidePage/SidePageBody.d.ts +1 -0
  409. package/components/SidePage/SidePageContainer/SidePageContainer.js +16 -9
  410. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  411. package/components/SidePage/SidePageContainer.d.ts +1 -0
  412. package/components/SidePage/SidePageFooter/SidePageFooter.js +22 -19
  413. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  414. package/components/SidePage/SidePageFooter.d.ts +1 -2
  415. package/components/SidePage/SidePageHeader/SidePageHeader.js +15 -10
  416. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  417. package/components/SidePage/SidePageHeader.d.ts +1 -0
  418. package/components/Spinner/Spinner/Spinner.js +14 -6
  419. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  420. package/components/Spinner/Spinner.d.ts +9 -0
  421. package/components/Spinner/Spinner.md +1 -0
  422. package/components/Spinner/Spinner.styles/Spinner.styles.js +12 -9
  423. package/components/Spinner/Spinner.styles/Spinner.styles.js.map +1 -1
  424. package/components/Spinner/Spinner.styles.d.ts +2 -1
  425. package/components/Sticky/Sticky/Sticky.js +13 -8
  426. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  427. package/components/Sticky/Sticky.d.ts +1 -0
  428. package/components/Switcher/Switcher/Switcher.js +11 -6
  429. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  430. package/components/Switcher/Switcher.d.ts +1 -0
  431. package/components/Switcher/Switcher.styles/Switcher.styles.js +3 -1
  432. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  433. package/components/Tabs/Indicator/Indicator.js +16 -14
  434. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  435. package/components/Tabs/Indicator.d.ts +1 -0
  436. package/components/Tabs/Tab/Tab.js +31 -34
  437. package/components/Tabs/Tab/Tab.js.map +1 -1
  438. package/components/Tabs/Tab.d.ts +2 -1
  439. package/components/Tabs/Tabs/Tabs.js +20 -20
  440. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  441. package/components/Tabs/Tabs.d.ts +1 -0
  442. package/components/Tabs/Tabs.md +36 -36
  443. package/components/Textarea/Textarea/Textarea.js +21 -17
  444. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  445. package/components/Textarea/Textarea.d.ts +1 -0
  446. package/components/Textarea/Textarea.md +25 -25
  447. package/components/Toast/Toast/Toast.js +29 -14
  448. package/components/Toast/Toast/Toast.js.map +1 -1
  449. package/components/Toast/Toast.d.ts +3 -0
  450. package/components/Toast/ToastView/ToastView.js +10 -5
  451. package/components/Toast/ToastView/ToastView.js.map +1 -1
  452. package/components/Toast/ToastView.d.ts +1 -0
  453. package/components/Toggle/Toggle/Toggle.js +16 -11
  454. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  455. package/components/Toggle/Toggle.d.ts +1 -0
  456. package/components/Token/Token/Token.js +11 -4
  457. package/components/Token/Token/Token.js.map +1 -1
  458. package/components/Token/Token.d.ts +1 -0
  459. package/components/Token/Token.md +112 -112
  460. package/components/TokenInput/TokenInput/TokenInput.js +12 -6
  461. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  462. package/components/TokenInput/TokenInput.d.ts +1 -0
  463. package/components/TokenInput/TokenInput.md +79 -79
  464. package/components/Tooltip/Tooltip/Tooltip.js +26 -17
  465. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  466. package/components/Tooltip/Tooltip.d.ts +11 -22
  467. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +23 -17
  468. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  469. package/components/TooltipMenu/TooltipMenu.d.ts +3 -2
  470. package/index.d.ts +1 -1
  471. package/index.js +2 -2
  472. package/index.js.map +1 -1
  473. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +37 -10
  474. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  475. package/internal/CommonWrapper/CommonWrapper.d.ts +9 -1
  476. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +5 -3
  477. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  478. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +23 -13
  479. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  480. package/internal/CustomComboBox/ComboBoxView.d.ts +4 -1
  481. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +12 -4
  482. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  483. package/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  484. package/internal/DateSelect/DateSelect/DateSelect.js +5 -5
  485. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  486. package/internal/DateSelect/DateSelect.d.ts +2 -2
  487. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +17 -16
  488. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  489. package/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  490. package/internal/DropdownContainer/DropdownContainer.styles/DropdownContainer.styles.js +10 -0
  491. package/internal/DropdownContainer/DropdownContainer.styles/DropdownContainer.styles.js.map +1 -0
  492. package/internal/DropdownContainer/DropdownContainer.styles/package.json +6 -0
  493. package/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -0
  494. package/internal/FocusTrap/FocusTrap/FocusTrap.js +17 -9
  495. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  496. package/internal/FocusTrap/FocusTrap.d.ts +1 -0
  497. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js +13 -7
  498. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  499. package/internal/InputLikeText/InputLikeText/InputLikeText.js +11 -6
  500. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  501. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  502. package/internal/InternalMenu/InternalMenu/InternalMenu.js +24 -25
  503. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  504. package/internal/InternalMenu/InternalMenu.d.ts +2 -3
  505. package/internal/MaskedInput/MaskedInput/MaskedInput.js +7 -7
  506. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  507. package/internal/MaskedInput/MaskedInput.d.ts +2 -2
  508. package/internal/Menu/Menu/Menu.js +24 -12
  509. package/internal/Menu/Menu/Menu.js.map +1 -1
  510. package/internal/Menu/Menu.d.ts +3 -0
  511. package/internal/Menu/Menu.styles/Menu.styles.js +12 -3
  512. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  513. package/internal/Menu/Menu.styles.d.ts +3 -0
  514. package/internal/Popup/Popup/Popup.js +85 -68
  515. package/internal/Popup/Popup/Popup.js.map +1 -1
  516. package/internal/Popup/Popup.d.ts +9 -8
  517. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  518. package/internal/Popup/PopupHelper.d.ts +2 -2
  519. package/{components/FileUploader/locale → internal/Popup}/types/package.json +1 -1
  520. package/{components/FileUploader/locale → internal/Popup}/types/types.js +0 -0
  521. package/{components/FileUploader/locale → internal/Popup}/types/types.js.map +0 -0
  522. package/internal/Popup/types.d.ts +1 -0
  523. package/internal/PopupMenu/PopupMenu/PopupMenu.js +15 -10
  524. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  525. package/internal/PopupMenu/PopupMenu.d.ts +4 -3
  526. package/internal/PopupMenu/validatePositions/validatePositions.js +2 -2
  527. package/internal/PopupMenu/validatePositions/validatePositions.js.map +1 -1
  528. package/internal/PopupMenu/validatePositions.d.ts +2 -2
  529. package/internal/RenderContainer/RenderContainer/RenderContainer.js +3 -1
  530. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  531. package/internal/RenderContainer/RenderContainer.d.ts +1 -1
  532. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +2 -3
  533. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  534. package/internal/RenderLayer/RenderLayer/RenderLayer.js +20 -18
  535. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  536. package/internal/RenderLayer/RenderLayer.d.ts +3 -1
  537. package/internal/ThemePlayground/Playground/Playground.js +1 -11
  538. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  539. package/internal/ThemePlayground/Playground.d.ts +0 -1
  540. package/internal/ThemePlayground/darkTheme/darkTheme.js +1 -26
  541. package/internal/ThemePlayground/darkTheme/darkTheme.js.map +1 -1
  542. package/internal/ThemePlayground/darkTheme.d.ts +0 -15
  543. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +35 -43
  544. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  545. package/internal/ThemeShowcase/ThemeShowcase.d.ts +1 -1
  546. package/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  547. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  548. package/internal/ZIndex/ZIndex/ZIndex.js +20 -8
  549. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  550. package/internal/ZIndex/ZIndex.d.ts +2 -0
  551. package/internal/icons/16px/index/index.js +83 -78
  552. package/internal/icons/16px/index/index.js.map +1 -1
  553. package/internal/icons/16px/index.d.ts +17 -19
  554. package/internal/icons/SpinnerIcon/SpinnerIcon.js +5 -2
  555. package/internal/icons/SpinnerIcon/SpinnerIcon.js.map +1 -1
  556. package/internal/icons/SpinnerIcon.d.ts +4 -1
  557. package/internal/themes/DefaultTheme/DefaultTheme.js +0 -67
  558. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  559. package/internal/themes/DefaultTheme.d.ts +0 -23
  560. package/lib/ModalStack/ModalStack.js +9 -13
  561. package/lib/ModalStack/ModalStack.js.map +1 -1
  562. package/lib/callChildRef/callChildRef/callChildRef.js +14 -0
  563. package/lib/callChildRef/callChildRef/callChildRef.js.map +1 -0
  564. package/lib/callChildRef/callChildRef/package.json +6 -0
  565. package/lib/callChildRef/callChildRef.d.ts +3 -0
  566. package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js +19 -0
  567. package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js.map +1 -0
  568. package/lib/events/fixFirefoxModifiedClickOnLabel/package.json +6 -0
  569. package/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +2 -0
  570. package/lib/getDisplayName/getDisplayName.js +3 -0
  571. package/lib/getDisplayName/getDisplayName.js.map +1 -0
  572. package/lib/getDisplayName/package.json +6 -0
  573. package/lib/getDisplayName.d.ts +3 -0
  574. package/lib/locale/types/types.js.map +1 -1
  575. package/lib/locale/types.d.ts +0 -2
  576. package/lib/rootNode/getRootNode/getRootNode.js +25 -0
  577. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -0
  578. package/lib/rootNode/getRootNode/package.json +6 -0
  579. package/lib/rootNode/getRootNode.d.ts +3 -0
  580. package/lib/rootNode/index/index.js +2 -0
  581. package/lib/rootNode/index/index.js.map +1 -0
  582. package/{components/FileUploader → lib/rootNode}/index/package.json +1 -1
  583. package/lib/rootNode/index.d.ts +2 -0
  584. package/{components/FileUploader → lib/rootNode}/package.json +1 -1
  585. package/lib/rootNode/rootNodeDecorator/package.json +6 -0
  586. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js +37 -0
  587. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -0
  588. package/lib/rootNode/rootNodeDecorator.d.ts +33 -0
  589. package/lib/theming/AnimationKeyframes/AnimationKeyframes.js +1 -1
  590. package/lib/theming/AnimationKeyframes/AnimationKeyframes.js.map +1 -1
  591. package/lib/theming/Emotion/Emotion.js +1 -0
  592. package/lib/theming/Emotion/Emotion.js.map +1 -1
  593. package/lib/theming/useTheme/package.json +6 -0
  594. package/lib/theming/useTheme/useTheme.js +5 -0
  595. package/lib/theming/useTheme/useTheme.js.map +1 -0
  596. package/lib/theming/useTheme.d.ts +1 -0
  597. package/lib/utils/utils.js +77 -19
  598. package/lib/utils/utils.js.map +1 -1
  599. package/lib/utils.d.ts +35 -1
  600. package/lib/withClassWrapper/package.json +6 -0
  601. package/lib/withClassWrapper/withClassWrapper.js +70 -0
  602. package/lib/withClassWrapper/withClassWrapper.js.map +1 -0
  603. package/lib/withClassWrapper.d.ts +71 -0
  604. package/package.json +13 -5
  605. package/typings/html-props.d.ts +123 -0
  606. package/cjs/components/FileUploader/FileUploader.d.ts +0 -31
  607. package/cjs/components/FileUploader/FileUploader.js +0 -270
  608. package/cjs/components/FileUploader/FileUploader.js.map +0 -1
  609. package/cjs/components/FileUploader/FileUploader.md +0 -67
  610. package/cjs/components/FileUploader/FileUploader.styles.d.ts +0 -19
  611. package/cjs/components/FileUploader/FileUploader.styles.js +0 -159
  612. package/cjs/components/FileUploader/FileUploader.styles.js.map +0 -1
  613. package/cjs/components/FileUploader/index.d.ts +0 -4
  614. package/cjs/components/FileUploader/index.js +0 -4
  615. package/cjs/components/FileUploader/index.js.map +0 -1
  616. package/cjs/components/FileUploader/locale/index.d.ts +0 -4
  617. package/cjs/components/FileUploader/locale/index.js +0 -11
  618. package/cjs/components/FileUploader/locale/index.js.map +0 -1
  619. package/cjs/components/FileUploader/locale/locales/en.d.ts +0 -2
  620. package/cjs/components/FileUploader/locale/locales/en.js +0 -7
  621. package/cjs/components/FileUploader/locale/locales/en.js.map +0 -1
  622. package/cjs/components/FileUploader/locale/locales/ru.d.ts +0 -2
  623. package/cjs/components/FileUploader/locale/locales/ru.js +0 -7
  624. package/cjs/components/FileUploader/locale/locales/ru.js.map +0 -1
  625. package/cjs/components/FileUploader/locale/types.d.ts +0 -6
  626. package/cjs/hooks/useDrop.d.ts +0 -11
  627. package/cjs/hooks/useDrop.js +0 -75
  628. package/cjs/hooks/useDrop.js.map +0 -1
  629. package/cjs/hooks/useMemoObject.d.ts +0 -1
  630. package/cjs/hooks/useMemoObject.js +0 -5
  631. package/cjs/hooks/useMemoObject.js.map +0 -1
  632. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.d.ts +0 -11
  633. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js +0 -15
  634. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js.map +0 -1
  635. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +0 -14
  636. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +0 -107
  637. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +0 -1
  638. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +0 -10
  639. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +0 -187
  640. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +0 -1
  641. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +0 -11
  642. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js +0 -66
  643. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js.map +0 -1
  644. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +0 -4
  645. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +0 -24
  646. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +0 -1
  647. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +0 -4
  648. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js +0 -17
  649. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js.map +0 -1
  650. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +0 -7
  651. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js +0 -16
  652. package/cjs/internal/FileUploaderControl/FileUploaderFileValidationResult.js.map +0 -1
  653. package/cjs/internal/FileUploaderControl/fileUtils.d.ts +0 -18
  654. package/cjs/internal/FileUploaderControl/fileUtils.js +0 -55
  655. package/cjs/internal/FileUploaderControl/fileUtils.js.map +0 -1
  656. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.d.ts +0 -1
  657. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js +0 -4
  658. package/cjs/internal/FileUploaderControl/hooks/useControlLocale.js.map +0 -1
  659. package/cjs/internal/FileUploaderControl/hooks/useUpload.d.ts +0 -3
  660. package/cjs/internal/FileUploaderControl/hooks/useUpload.js +0 -51
  661. package/cjs/internal/FileUploaderControl/hooks/useUpload.js.map +0 -1
  662. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +0 -3
  663. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +0 -18
  664. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +0 -1
  665. package/cjs/internal/PopupMenu/PopupMenuPositions.d.ts +0 -2
  666. package/cjs/internal/PopupMenu/PopupMenuPositions.js +0 -15
  667. package/cjs/internal/PopupMenu/PopupMenuPositions.js.map +0 -1
  668. package/cjs/internal/TextWidthHelper/TextWidthHelper.d.ts +0 -15
  669. package/cjs/internal/TextWidthHelper/TextWidthHelper.js +0 -34
  670. package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +0 -1
  671. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +0 -4
  672. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js +0 -23
  673. package/cjs/internal/TextWidthHelper/TextWidthHelper.styles.js.map +0 -1
  674. package/cjs/lib/guidUtils.d.ts +0 -1
  675. package/cjs/lib/guidUtils.js +0 -5
  676. package/cjs/lib/guidUtils.js.map +0 -1
  677. package/cjs/lib/locale/useLocaleForControl.d.ts +0 -3
  678. package/cjs/lib/locale/useLocaleForControl.js +0 -14
  679. package/cjs/lib/locale/useLocaleForControl.js.map +0 -1
  680. package/cjs/lib/stringUtils.d.ts +0 -1
  681. package/cjs/lib/stringUtils.js +0 -13
  682. package/cjs/lib/stringUtils.js.map +0 -1
  683. package/components/FileUploader/FileUploader/FileUploader.js +0 -277
  684. package/components/FileUploader/FileUploader/FileUploader.js.map +0 -1
  685. package/components/FileUploader/FileUploader/package.json +0 -6
  686. package/components/FileUploader/FileUploader.d.ts +0 -31
  687. package/components/FileUploader/FileUploader.md +0 -67
  688. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +0 -56
  689. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +0 -1
  690. package/components/FileUploader/FileUploader.styles/package.json +0 -6
  691. package/components/FileUploader/FileUploader.styles.d.ts +0 -19
  692. package/components/FileUploader/index/index.js +0 -3
  693. package/components/FileUploader/index/index.js.map +0 -1
  694. package/components/FileUploader/index.d.ts +0 -4
  695. package/components/FileUploader/locale/index/index.js +0 -8
  696. package/components/FileUploader/locale/index/index.js.map +0 -1
  697. package/components/FileUploader/locale/index/package.json +0 -6
  698. package/components/FileUploader/locale/index.d.ts +0 -4
  699. package/components/FileUploader/locale/locales/en/en.js +0 -6
  700. package/components/FileUploader/locale/locales/en/en.js.map +0 -1
  701. package/components/FileUploader/locale/locales/en/package.json +0 -6
  702. package/components/FileUploader/locale/locales/en.d.ts +0 -2
  703. package/components/FileUploader/locale/locales/ru/package.json +0 -6
  704. package/components/FileUploader/locale/locales/ru/ru.js +0 -6
  705. package/components/FileUploader/locale/locales/ru/ru.js.map +0 -1
  706. package/components/FileUploader/locale/locales/ru.d.ts +0 -2
  707. package/components/FileUploader/locale/package.json +0 -6
  708. package/components/FileUploader/locale/types.d.ts +0 -6
  709. package/hooks/useDrop/package.json +0 -6
  710. package/hooks/useDrop/useDrop.js +0 -57
  711. package/hooks/useDrop/useDrop.js.map +0 -1
  712. package/hooks/useDrop.d.ts +0 -11
  713. package/hooks/useMemoObject/package.json +0 -6
  714. package/hooks/useMemoObject/useMemoObject.js +0 -6
  715. package/hooks/useMemoObject/useMemoObject.js.map +0 -1
  716. package/hooks/useMemoObject.d.ts +0 -1
  717. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js +0 -2
  718. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js.map +0 -1
  719. package/internal/FileUploaderControl/FileUploaderControlContext/package.json +0 -6
  720. package/internal/FileUploaderControl/FileUploaderControlContext.d.ts +0 -11
  721. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +0 -79
  722. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +0 -1
  723. package/internal/FileUploaderControl/FileUploaderControlProvider/package.json +0 -6
  724. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +0 -14
  725. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +0 -176
  726. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +0 -1
  727. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/package.json +0 -6
  728. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +0 -10
  729. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js +0 -32
  730. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js.map +0 -1
  731. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/package.json +0 -6
  732. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +0 -11
  733. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +0 -23
  734. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +0 -1
  735. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/package.json +0 -6
  736. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +0 -4
  737. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js +0 -11
  738. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js.map +0 -1
  739. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/package.json +0 -6
  740. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +0 -4
  741. package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js +0 -18
  742. package/internal/FileUploaderControl/FileUploaderFileValidationResult/FileUploaderFileValidationResult.js.map +0 -1
  743. package/internal/FileUploaderControl/FileUploaderFileValidationResult/package.json +0 -6
  744. package/internal/FileUploaderControl/FileUploaderFileValidationResult.d.ts +0 -7
  745. package/internal/FileUploaderControl/fileUtils/fileUtils.js +0 -85
  746. package/internal/FileUploaderControl/fileUtils/fileUtils.js.map +0 -1
  747. package/internal/FileUploaderControl/fileUtils/package.json +0 -6
  748. package/internal/FileUploaderControl/fileUtils.d.ts +0 -18
  749. package/internal/FileUploaderControl/hooks/useControlLocale/package.json +0 -6
  750. package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js +0 -5
  751. package/internal/FileUploaderControl/hooks/useControlLocale/useControlLocale.js.map +0 -1
  752. package/internal/FileUploaderControl/hooks/useControlLocale.d.ts +0 -1
  753. package/internal/FileUploaderControl/hooks/useUpload/package.json +0 -6
  754. package/internal/FileUploaderControl/hooks/useUpload/useUpload.js +0 -56
  755. package/internal/FileUploaderControl/hooks/useUpload/useUpload.js.map +0 -1
  756. package/internal/FileUploaderControl/hooks/useUpload.d.ts +0 -3
  757. package/internal/FileUploaderControl/withFileUploaderControlProvider/package.json +0 -6
  758. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +0 -16
  759. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +0 -1
  760. package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +0 -3
  761. package/internal/PopupMenu/PopupMenuPositions/PopupMenuPositions.js +0 -1
  762. package/internal/PopupMenu/PopupMenuPositions/PopupMenuPositions.js.map +0 -1
  763. package/internal/PopupMenu/PopupMenuPositions/package.json +0 -6
  764. package/internal/PopupMenu/PopupMenuPositions.d.ts +0 -2
  765. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +0 -49
  766. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +0 -1
  767. package/internal/TextWidthHelper/TextWidthHelper/package.json +0 -6
  768. package/internal/TextWidthHelper/TextWidthHelper.d.ts +0 -15
  769. package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js +0 -14
  770. package/internal/TextWidthHelper/TextWidthHelper.styles/TextWidthHelper.styles.js.map +0 -1
  771. package/internal/TextWidthHelper/TextWidthHelper.styles/package.json +0 -6
  772. package/internal/TextWidthHelper/TextWidthHelper.styles.d.ts +0 -4
  773. package/lib/guidUtils/guidUtils.js +0 -4
  774. package/lib/guidUtils/guidUtils.js.map +0 -1
  775. package/lib/guidUtils/package.json +0 -6
  776. package/lib/guidUtils.d.ts +0 -1
  777. package/lib/locale/useLocaleForControl/package.json +0 -6
  778. package/lib/locale/useLocaleForControl/useLocaleForControl.js +0 -12
  779. package/lib/locale/useLocaleForControl/useLocaleForControl.js.map +0 -1
  780. package/lib/locale/useLocaleForControl.d.ts +0 -3
  781. package/lib/stringUtils/package.json +0 -6
  782. package/lib/stringUtils/stringUtils.js +0 -12
  783. package/lib/stringUtils/stringUtils.js.map +0 -1
  784. package/lib/stringUtils.d.ts +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,74 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.11.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.10.0...@skbkontur/react-ui@3.11.0) (2022-02-04)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **ScrollContainer:** consider scaling cases in browsers ([#2705](https://github.com/skbkontur/retail-ui/issues/2705)) ([e64d3de](https://github.com/skbkontur/retail-ui/commit/e64d3de80f12cdb7c2329d0b38d2531f84237f55))
12
+ * **SidePage:** change scroll behavior according to Guides ([#2756](https://github.com/skbkontur/retail-ui/issues/2756)) ([47dfb5a](https://github.com/skbkontur/retail-ui/commit/47dfb5ac895c26655edef2e08cf1f86f5b246390))
13
+ * **Spinner:** refactor animation for Safari ([#2748](https://github.com/skbkontur/retail-ui/issues/2748)) ([1698a4a](https://github.com/skbkontur/retail-ui/commit/1698a4a5542d9884f3e6deb833161a6219b9d72a))
14
+ * **Switcher:** restore border in error and checked state ([#2742](https://github.com/skbkontur/retail-ui/issues/2742)) ([6fbe8f5](https://github.com/skbkontur/retail-ui/commit/6fbe8f529cfe14f8338a79b354a1201f38b06ee2))
15
+
16
+
17
+ ### Features
18
+
19
+ * **Spinner:** add width and color props ([4ea170d](https://github.com/skbkontur/retail-ui/commit/4ea170d4f1cc30091c30e0ee637e38494ad79f0a))
20
+
21
+
22
+
23
+
24
+
25
+ # [3.10.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.9.4...@skbkontur/react-ui@3.10.0) (2022-01-27)
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * **react-ui:** [StrictMode] give up findDomNode ([#2518](https://github.com/skbkontur/retail-ui/issues/2518)) ([8028cdd](https://github.com/skbkontur/retail-ui/commit/8028cdd3c2289fd48816bdaf92da6a28892f40a7))
31
+ * **react-ui:** [StrictMode] give up legacy context ([#2694](https://github.com/skbkontur/retail-ui/issues/2694)) ([d0253cc](https://github.com/skbkontur/retail-ui/commit/d0253ccc089764a317ccaa79aa00cc96fbb7aa0a))
32
+ * **react-ui:** [StrictMode] give up unsafe methods ([#2514](https://github.com/skbkontur/retail-ui/issues/2514)) ([6cc2201](https://github.com/skbkontur/retail-ui/commit/6cc2201f0e8f711441e6c63229b703c03d4b6953))
33
+ * **react-ui:** call original refs while replacing them ([#2736](https://github.com/skbkontur/retail-ui/issues/2736)) ([01ff2ab](https://github.com/skbkontur/retail-ui/commit/01ff2ab3243082c9347d20e844368ac775e54449))
34
+ * **TokenInput:** handle Enter for TokenInputType.WithoutReference ([#2738](https://github.com/skbkontur/retail-ui/issues/2738)) ([2ee48cc](https://github.com/skbkontur/retail-ui/commit/2ee48cc31342dc13fd4596020d73e352311bdb82))
35
+
36
+
37
+ ### Features
38
+
39
+ * support React.StrictMode ([04a4bc9](https://github.com/skbkontur/retail-ui/commit/04a4bc9f2dd35fa98ea4d9526ddd775dd1017b71))
40
+ * **react-ui:** prepend styles to the head instead of appending ([#2696](https://github.com/skbkontur/retail-ui/issues/2696)) ([212ee04](https://github.com/skbkontur/retail-ui/commit/212ee047ae806a073316596c2ff696b5d08c80d2))
41
+
42
+
43
+
44
+
45
+
46
+ ## [3.9.4](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.9.3...@skbkontur/react-ui@3.9.4) (2021-12-27)
47
+
48
+
49
+ ### Bug Fixes
50
+
51
+ * **Gapped:** correctly filter falsy childs ([#2692](https://github.com/skbkontur/retail-ui/issues/2692)) ([8e21e60](https://github.com/skbkontur/retail-ui/commit/8e21e60a7b7899945c2c101e48ede1a6e3360406))
52
+ * **Loader:** use `forEach` from `Array` ([#2702](https://github.com/skbkontur/retail-ui/issues/2702)) ([167a07a](https://github.com/skbkontur/retail-ui/commit/167a07ac3b8057396ce292d79f5bb21b9f1c7bd6))
53
+ * **RadioGroup:** fix types inference ([#2703](https://github.com/skbkontur/retail-ui/issues/2703)) ([4d410ab](https://github.com/skbkontur/retail-ui/commit/4d410ab8cf9d6d8b56f927e3b7efd698abf83920))
54
+
55
+
56
+
57
+
58
+
59
+ ## [3.9.3](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.9.2...@skbkontur/react-ui@3.9.3) (2021-12-03)
60
+
61
+
62
+ ### Bug Fixes
63
+
64
+ * **Button:** disable focus in loading state ([#2661](https://github.com/skbkontur/retail-ui/issues/2661)) ([1c910c1](https://github.com/skbkontur/retail-ui/commit/1c910c16a11ba81b6799d74106c74bc2afc1fd57))
65
+ * **Checkbox,Radio:** firing events onChange manually for Firefox ([6c19412](https://github.com/skbkontur/retail-ui/commit/6c19412b1c348666c802191ca851e4670df8edcc))
66
+ * **CurrencyInput:** refactor Input scroll on cursor is moving ([4e2e8d1](https://github.com/skbkontur/retail-ui/commit/4e2e8d135a05025454a213b77697b419bf7e1aca))
67
+ * **select:** add handleKey to search div ([#2660](https://github.com/skbkontur/retail-ui/issues/2660)) ([310b963](https://github.com/skbkontur/retail-ui/commit/310b963a510b134b391f6cae773a7b4940986623))
68
+ * **SidePage:** use `isTestEnv` by default for `disableAnimations` ([b4035e8](https://github.com/skbkontur/retail-ui/commit/b4035e8d2beb0a1886ba0b6590838ac363c79210))
69
+
70
+
71
+
72
+
73
+
6
74
  ## [3.9.2](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.9.1...@skbkontur/react-ui@3.9.2) (2021-11-26)
7
75
 
8
76
 
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2017 SKB Kontur
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2017 SKB Kontur
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -45,6 +45,63 @@ Upgrade.setSpecificityLevel(1);
45
45
 
46
46
  Специфичность должна устанавливаться в коде раньше импорта любых компонентов из библиотеки.
47
47
 
48
+ ### StrictMode
49
+
50
+ Начиная с версий `@skbkontur/react-ui@3.10.0` и `@skbkontur/react-ui-validations@1.7.0`, библиотека поддерживает работу в React.StrictMode.
51
+
52
+ Некоторым компонентам библиотеки необходимо иметь доступ до корневой DOM-ноды своих
53
+ children. Ранее для этого использовался метод findDomNode, который в StrictMode запрещён.
54
+ Теперь получение DOM-ноды реализовано в библиотеке через ref, из-за чего появились некоторые
55
+ требования к компонентам, передаваемым в Hint, Tooltip, Popup или Tab:
56
+
57
+ - при передаче функциональных компонентов, они должны использовать `React.ForwardRef`;
58
+
59
+ ```js static
60
+ import { Hint } from '@skbkontur/react-ui';
61
+
62
+ const CustomFunctionComponent = React.forwardRef(
63
+ (props, ref) => <div ref={ref}>children text</div>
64
+ );
65
+
66
+ export const withFunctionChildren = () => (
67
+ <React.StrictMode>
68
+ <Hint pos="top" text="Something will never be changed" manual opened>
69
+ <CustomFunctionComponent />
70
+ </Hint>
71
+ </React.StrictMode>
72
+ );
73
+ ```
74
+
75
+ - при передаче классовых компонентов, их инстанс должен реализовывать метод `getRootNode`, возвращающий DOM-ноду.
76
+
77
+ ```js static
78
+ import { Hint } from '@skbkontur/react-ui';
79
+
80
+ class CustomClassComponent extends React.Component {
81
+ rootNode = React.createRef();
82
+
83
+ render() {
84
+ return <div ref={this.rootNode}>children text</div>;
85
+ }
86
+
87
+ getRootNode() {
88
+ return this.rootNode.current;
89
+ }
90
+ }
91
+
92
+ export const withClassChildren = () => (
93
+ <React.StrictMode>
94
+ <Hint pos="top" text="Something will never be changed" manual opened>
95
+ <CustomClassComponent />
96
+ </Hint>
97
+ </React.StrictMode>
98
+ );
99
+ ```
100
+
101
+ В случае несоблюдения требования, будет использоваться старый метод findDomNode, который не совместим с StrictMode.
102
+
103
+ Подробнее в [пулл-реквесте](https://github.com/skbkontur/retail-ui/pull/2518)
104
+
48
105
  ## FAQ
49
106
 
50
107
  ### Отключение анимаций во время тестирования
@@ -81,6 +81,7 @@ export declare class Autocomplete extends React.Component<AutocompleteProps, Aut
81
81
  private rootSpan;
82
82
  private requestId;
83
83
  private getProps;
84
+ private setRootNode;
84
85
  /**
85
86
  * @public
86
87
  */
@@ -1,6 +1,5 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.Autocomplete = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
  var _propTypes = _interopRequireDefault(require("prop-types"));
3
- var _reactDom = require("react-dom");
4
3
 
5
4
  var _ThemeContext = require("../../lib/theming/ThemeContext");
6
5
 
@@ -14,6 +13,7 @@ var _createPropsGetter = require("../../lib/createPropsGetter");
14
13
 
15
14
  var _fixClickFocusIE = require("../../lib/events/fixClickFocusIE");
16
15
  var _CommonWrapper = require("../../internal/CommonWrapper");
16
+ var _rootNode = require("../../lib/rootNode");var _class, _class2, _temp;
17
17
 
18
18
  function match(pattern, items) {
19
19
  if (!pattern || !items) {
@@ -72,7 +72,8 @@ function renderItem(item) {
72
72
  *
73
73
  * Все свойства передаются во внутренний *Input*.
74
74
  */var
75
- Autocomplete = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Autocomplete, _React$Component);function Autocomplete() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
75
+
76
+ Autocomplete = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Autocomplete, _React$Component);function Autocomplete() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
76
77
 
77
78
 
78
79
 
@@ -123,6 +124,11 @@ Autocomplete = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.def
123
124
  requestId = 0;_this.
124
125
 
125
126
  getProps = (0, _createPropsGetter.createPropsGetter)(Autocomplete.defaultProps);_this.
127
+ setRootNode = void 0;_this.
128
+
129
+
130
+
131
+
126
132
 
127
133
 
128
134
 
@@ -310,7 +316,7 @@ Autocomplete = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.def
310
316
 
311
317
 
312
318
  getAnchor = function () {
313
- return (0, _reactDom.findDOMNode)((0, _assertThisInitialized2.default)(_this));
319
+ return (0, _rootNode.getRootNode)((0, _assertThisInitialized2.default)(_this));
314
320
  };_this.
315
321
 
316
322
 
@@ -386,7 +392,7 @@ Autocomplete = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.def
386
392
  * @public
387
393
  */_proto.focus = function focus() {if (this.input) {this.input.focus();}} /**
388
394
  * @public
389
- */;_proto.blur = function blur() {this.handleBlur();};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (prevProps.value !== this.props.value) {this.updateItems(this.props.value || '');}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, _this2.props, _this2.renderMain);});};_proto.renderMenu = function renderMenu() {var _this3 = this;var items = this.state.items;var menuProps = { ref: this.refMenu, maxHeight: this.props.menuMaxHeight, hasShadow: this.props.hasShadow, width: this.props.menuWidth || this.props.width && this.getInputWidth(this.rootSpan), preventWindowScroll: this.props.preventWindowScroll };if (!items || items.length === 0) {return null;}return /*#__PURE__*/_react.default.createElement(_DropdownContainer.DropdownContainer, { offsetY: 1, getParent: this.getAnchor, align: this.props.menuAlign, disablePortal: this.props.disablePortal }, /*#__PURE__*/_react.default.createElement(_Menu.Menu, menuProps, items.map(function (item, i) {return /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { onClick: _this3.handleMenuItemClick(i), key: i }, _this3.getProps().renderItem(item));})));};_proto.handleMenuItemClick = function handleMenuItemClick(i) {var _this4 = this;return function (event) {return _this4.handleItemClick(event, i);};};_proto.handleItemClick = function handleItemClick(event, index) {if (event.button) {return;}event.preventDefault();this.choose(index);};_proto.choose = function choose(index) {if (!this.state.items) {return;}var value = this.state.items[index];this.opened = false;this.setState({ selected: -1, items: null });this.fireChange(value);this.blur();};_proto.updateItems = function updateItems(value) {var _this5 = this;if (!this.opened) {return;}var pattern = value.trim();var source = this.props.source;if (!source) {return;}var promise;var expectingId = this.requestId += 1;if (typeof source === 'function') {promise = source(pattern);} else {promise = match(pattern, source);}promise.then(function (items) {if (_this5.opened && expectingId === _this5.requestId) {_this5.setState({ items: items, selected: -1 });}});};_proto.fireChange = function fireChange(value) {if (this.props.onValueChange) {this.props.onValueChange(value);}};return Autocomplete;}(_react.default.Component);exports.Autocomplete = Autocomplete;Autocomplete.__KONTUR_REACT_UI__ = 'Autocomplete';Autocomplete.propTypes = { /**
395
+ */;_proto.blur = function blur() {this.handleBlur();};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (prevProps.value !== this.props.value) {this.updateItems(this.props.value || '');}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.props), _this2.renderMain);});};_proto.renderMenu = function renderMenu() {var _this3 = this;var items = this.state.items;var menuProps = { ref: this.refMenu, maxHeight: this.props.menuMaxHeight, hasShadow: this.props.hasShadow, width: this.props.menuWidth || this.props.width && this.getInputWidth(this.rootSpan), preventWindowScroll: this.props.preventWindowScroll };if (!items || items.length === 0) {return null;}return /*#__PURE__*/_react.default.createElement(_DropdownContainer.DropdownContainer, { offsetY: 1, getParent: this.getAnchor, align: this.props.menuAlign, disablePortal: this.props.disablePortal }, /*#__PURE__*/_react.default.createElement(_Menu.Menu, menuProps, items.map(function (item, i) {return /*#__PURE__*/_react.default.createElement(_MenuItem.MenuItem, { onClick: _this3.handleMenuItemClick(i), key: i }, _this3.getProps().renderItem(item));})));};_proto.handleMenuItemClick = function handleMenuItemClick(i) {var _this4 = this;return function (event) {return _this4.handleItemClick(event, i);};};_proto.handleItemClick = function handleItemClick(event, index) {if (event.button) {return;}event.preventDefault();this.choose(index);};_proto.choose = function choose(index) {if (!this.state.items) {return;}var value = this.state.items[index];this.opened = false;this.setState({ selected: -1, items: null });this.fireChange(value);this.blur();};_proto.updateItems = function updateItems(value) {var _this5 = this;if (!this.opened) {return;}var pattern = value.trim();var source = this.props.source;if (!source) {return;}var promise;var expectingId = this.requestId += 1;if (typeof source === 'function') {promise = source(pattern);} else {promise = match(pattern, source);}promise.then(function (items) {if (_this5.opened && expectingId === _this5.requestId) {_this5.setState({ items: items, selected: -1 });}});};_proto.fireChange = function fireChange(value) {if (this.props.onValueChange) {this.props.onValueChange(value);}};return Autocomplete;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Autocomplete', _class2.propTypes = { /**
390
396
  * Функция для отрисовки элемента в выпадающем списке. Единственный аргумент
391
397
  * — *item*.
392
398
  */renderItem: _propTypes.default.func, /**
@@ -401,4 +407,4 @@ Autocomplete = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.def
401
407
  * return service.findAll(pattern);
402
408
  * }
403
409
  * ```
404
- */source: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.func]) };Autocomplete.defaultProps = { renderItem: renderItem, size: 'small', disablePortal: false, hasShadow: true, menuMaxHeight: 300, menuAlign: 'left', preventWindowScroll: true };
410
+ */source: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.func]) }, _class2.defaultProps = { renderItem: renderItem, size: 'small', disablePortal: false, hasShadow: true, menuMaxHeight: 300, menuAlign: 'left', preventWindowScroll: true }, _temp)) || _class;exports.Autocomplete = Autocomplete;
@@ -1 +1 @@
1
- {"version":3,"sources":["Autocomplete.tsx"],"names":["match","pattern","items","Promise","resolve","toLowerCase","filteredItems","filter","item","includes","renderItem","Autocomplete","state","selected","focused","theme","opened","input","menu","rootSpan","requestId","getProps","defaultProps","renderMain","props","onValueChange","onKeyDown","onFocus","onBlur","_renderItem","disablePortal","hasShadow","menuAlign","menuMaxHeight","preventWindowScroll","source","width","inputWidth","rest","inputProps","handleValueChange","handleKeyDown","handleFocus","ref","refInput","handleBlur","handleClickOutside","display","refRootSpan","renderMenu","getInputWidth","target","Element","getBoundingClientRect","value","fireChange","event","setState","blur","e","preventDefault","up","down","enter","getAnchor","el","refMenu","span","focus","componentDidUpdate","prevProps","updateItems","render","menuProps","maxHeight","menuWidth","length","map","i","handleMenuItemClick","handleItemClick","index","button","choose","trim","promise","expectingId","then","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","func","oneOfType","array","size"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { findDOMNode } from 'react-dom';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { Input, InputProps } from '../Input';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem } from '../MenuItem';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n pattern = pattern.toLowerCase();\n const filteredItems = items.filter((item) => item.toLowerCase().includes(pattern));\n return Promise.resolve(filteredItems);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Функция отрисовки элемента меню */\n renderItem: (item: string) => React.ReactNode;\n /** Промис, резолвящий элементы меню */\n source?: string[] | ((patter: string) => Promise<string[]>);\n /** Отключает использование портала */\n disablePortal: boolean;\n /** Отрисовка тени у выпадающего меню */\n hasShadow: boolean;\n /** Выравнивание выпадающего меню */\n menuAlign: 'left' | 'right';\n /** Максимальная высота меню */\n menuMaxHeight: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Отключить скролл окна, когда меню открыто */\n preventWindowScroll: boolean;\n /** Вызывается при изменении `value` */\n onValueChange: (value: string) => void;\n /** onBlur */\n onBlur?: () => void;\n /** Размер инпута */\n size: InputProps['size'];\n /** value */\n value: string;\n }\n > {}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n}\n\n/**\n * Стандартный инпут с подсказками.\n *\n * Все свойства передаются во внутренний *Input*.\n */\nexport class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {\n public static __KONTUR_REACT_UI__ = 'Autocomplete';\n\n public static propTypes = {\n /**\n * Функция для отрисовки элемента в выпадающем списке. Единственный аргумент\n * — *item*.\n */\n renderItem: PropTypes.func,\n\n /**\n * Если передан массив, то совпадения ищутся по этому массиву.\n *\n * Если передается функция, то она должна возвращать thenable, который\n * резолвится уже отфильтрованным массивом. Возвращенный thenable может\n * иметь метод cancel, который будет вызван при отмене поиска (пользователь\n * изменил строку поиска, автокомплит потерял фокус).\n * ```\n * function(pattern) {\n * return service.findAll(pattern);\n * }\n * ```\n */\n source: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n };\n\n public static defaultProps = {\n renderItem,\n size: 'small',\n disablePortal: false,\n hasShadow: true,\n menuMaxHeight: 300,\n menuAlign: 'left',\n preventWindowScroll: true,\n };\n\n public state: AutocompleteState = {\n items: null,\n selected: -1,\n focused: false,\n };\n\n private theme!: Theme;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private rootSpan: Nullable<HTMLSpanElement>;\n\n private requestId = 0;\n\n private getProps = createPropsGetter(Autocomplete.defaultProps);\n\n /**\n * @public\n */\n public focus() {\n if (this.input) {\n this.input.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n this.handleBlur();\n }\n\n public componentDidUpdate(prevProps: AutocompleteProps) {\n if (prevProps.value !== this.props.value) {\n this.updateItems(this.props.value || '');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return <CommonWrapper {...this.props}>{this.renderMain}</CommonWrapper>;\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>) => {\n const { focused } = this.state;\n\n const {\n onValueChange,\n onKeyDown,\n onFocus,\n onBlur,\n renderItem: _renderItem,\n disablePortal,\n hasShadow,\n menuAlign,\n menuMaxHeight,\n preventWindowScroll,\n source,\n width = this.theme.inputWidth,\n ...rest\n } = props;\n\n const inputProps = {\n ...rest,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n ref: this.refInput,\n };\n\n return (\n <RenderLayer onFocusOutside={this.handleBlur} onClickOutside={this.handleClickOutside} active={focused}>\n <span style={{ display: 'inline-block', width }} ref={this.refRootSpan}>\n <Input {...inputProps} />\n {this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const menuProps = {\n ref: this.refMenu,\n maxHeight: this.props.menuMaxHeight,\n hasShadow: this.props.hasShadow,\n width: this.props.menuWidth || (this.props.width && this.getInputWidth(this.rootSpan)),\n preventWindowScroll: this.props.preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <DropdownContainer\n offsetY={1}\n getParent={this.getAnchor}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n >\n <Menu {...menuProps}>\n {items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })}\n </Menu>\n </DropdownContainer>\n );\n }\n\n private getInputWidth = (target: Nullable<HTMLSpanElement>) => {\n if (target instanceof Element) {\n return target.getBoundingClientRect().width;\n }\n\n return 0;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = () => {\n if (!this.state.focused) {\n return;\n }\n\n this.opened = false;\n this.setState({ items: null, focused: false });\n\n if (this.input) {\n this.input.blur();\n }\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n switch (true) {\n case isKeyEscape(e):\n e.preventDefault();\n this.setState({ items: null });\n return;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n return;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n return;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n return;\n }\n };\n\n private handleMenuItemClick(i: number) {\n return (event: React.SyntheticEvent<HTMLElement>) => this.handleItemClick(event, i);\n }\n\n private getAnchor = () => {\n return findDOMNode(this);\n };\n\n private handleItemClick(event: React.SyntheticEvent<HTMLElement> | React.MouseEvent<HTMLElement>, index: number) {\n if ((event as React.MouseEvent<HTMLElement>).button) {\n return;\n }\n\n event.preventDefault();\n this.choose(index);\n }\n\n private choose(index: number) {\n if (!this.state.items) {\n return;\n }\n\n const value = this.state.items[index];\n this.opened = false;\n this.setState({\n selected: -1,\n items: null,\n });\n\n this.fireChange(value);\n this.blur();\n }\n\n private updateItems(value: string) {\n if (!this.opened) {\n return;\n }\n const pattern = value.trim();\n const source = this.props.source;\n\n if (!source) {\n return;\n }\n\n let promise;\n const expectingId = (this.requestId += 1);\n if (typeof source === 'function') {\n promise = source(pattern);\n } else {\n promise = match(pattern, source);\n }\n promise.then((items) => {\n if (this.opened && expectingId === this.requestId) {\n this.setState({\n items,\n selected: -1,\n });\n }\n });\n }\n\n private fireChange(value: string) {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n }\n\n private refInput = (el: Input | null) => {\n this.input = el;\n };\n\n private refMenu = (menu: Menu | null) => {\n this.menu = menu;\n };\n\n private refRootSpan = (span: HTMLSpanElement) => {\n this.rootSpan = span;\n };\n}\n"]}
1
+ {"version":3,"sources":["Autocomplete.tsx"],"names":["match","pattern","items","Promise","resolve","toLowerCase","filteredItems","filter","item","includes","renderItem","Autocomplete","rootNode","state","selected","focused","theme","opened","input","menu","rootSpan","requestId","getProps","defaultProps","setRootNode","renderMain","props","onValueChange","onKeyDown","onFocus","onBlur","_renderItem","disablePortal","hasShadow","menuAlign","menuMaxHeight","preventWindowScroll","source","width","inputWidth","rest","inputProps","handleValueChange","handleKeyDown","handleFocus","ref","refInput","handleBlur","handleClickOutside","display","refRootSpan","renderMenu","getInputWidth","target","Element","getBoundingClientRect","value","fireChange","event","setState","blur","e","preventDefault","up","down","enter","getAnchor","el","refMenu","span","focus","componentDidUpdate","prevProps","updateItems","render","menuProps","maxHeight","menuWidth","length","map","i","handleMenuItemClick","handleItemClick","index","button","choose","trim","promise","expectingId","then","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","func","oneOfType","array","size"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { Input, InputProps } from '../Input';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem } from '../MenuItem';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable, Override } from '../../typings/utility-types';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n pattern = pattern.toLowerCase();\n const filteredItems = items.filter((item) => item.toLowerCase().includes(pattern));\n return Promise.resolve(filteredItems);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends CommonProps,\n Override<\n InputProps,\n {\n /** Функция отрисовки элемента меню */\n renderItem: (item: string) => React.ReactNode;\n /** Промис, резолвящий элементы меню */\n source?: string[] | ((patter: string) => Promise<string[]>);\n /** Отключает использование портала */\n disablePortal: boolean;\n /** Отрисовка тени у выпадающего меню */\n hasShadow: boolean;\n /** Выравнивание выпадающего меню */\n menuAlign: 'left' | 'right';\n /** Максимальная высота меню */\n menuMaxHeight: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Отключить скролл окна, когда меню открыто */\n preventWindowScroll: boolean;\n /** Вызывается при изменении `value` */\n onValueChange: (value: string) => void;\n /** onBlur */\n onBlur?: () => void;\n /** Размер инпута */\n size: InputProps['size'];\n /** value */\n value: string;\n }\n > {}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n}\n\n/**\n * Стандартный инпут с подсказками.\n *\n * Все свойства передаются во внутренний *Input*.\n */\n@rootNode\nexport class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {\n public static __KONTUR_REACT_UI__ = 'Autocomplete';\n\n public static propTypes = {\n /**\n * Функция для отрисовки элемента в выпадающем списке. Единственный аргумент\n * — *item*.\n */\n renderItem: PropTypes.func,\n\n /**\n * Если передан массив, то совпадения ищутся по этому массиву.\n *\n * Если передается функция, то она должна возвращать thenable, который\n * резолвится уже отфильтрованным массивом. Возвращенный thenable может\n * иметь метод cancel, который будет вызван при отмене поиска (пользователь\n * изменил строку поиска, автокомплит потерял фокус).\n * ```\n * function(pattern) {\n * return service.findAll(pattern);\n * }\n * ```\n */\n source: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n };\n\n public static defaultProps = {\n renderItem,\n size: 'small',\n disablePortal: false,\n hasShadow: true,\n menuMaxHeight: 300,\n menuAlign: 'left',\n preventWindowScroll: true,\n };\n\n public state: AutocompleteState = {\n items: null,\n selected: -1,\n focused: false,\n };\n\n private theme!: Theme;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private rootSpan: Nullable<HTMLSpanElement>;\n\n private requestId = 0;\n\n private getProps = createPropsGetter(Autocomplete.defaultProps);\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.input) {\n this.input.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n this.handleBlur();\n }\n\n public componentDidUpdate(prevProps: AutocompleteProps) {\n if (prevProps.value !== this.props.value) {\n this.updateItems(this.props.value || '');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>) => {\n const { focused } = this.state;\n\n const {\n onValueChange,\n onKeyDown,\n onFocus,\n onBlur,\n renderItem: _renderItem,\n disablePortal,\n hasShadow,\n menuAlign,\n menuMaxHeight,\n preventWindowScroll,\n source,\n width = this.theme.inputWidth,\n ...rest\n } = props;\n\n const inputProps = {\n ...rest,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n ref: this.refInput,\n };\n\n return (\n <RenderLayer onFocusOutside={this.handleBlur} onClickOutside={this.handleClickOutside} active={focused}>\n <span style={{ display: 'inline-block', width }} ref={this.refRootSpan}>\n <Input {...inputProps} />\n {this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const menuProps = {\n ref: this.refMenu,\n maxHeight: this.props.menuMaxHeight,\n hasShadow: this.props.hasShadow,\n width: this.props.menuWidth || (this.props.width && this.getInputWidth(this.rootSpan)),\n preventWindowScroll: this.props.preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <DropdownContainer\n offsetY={1}\n getParent={this.getAnchor}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n >\n <Menu {...menuProps}>\n {items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })}\n </Menu>\n </DropdownContainer>\n );\n }\n\n private getInputWidth = (target: Nullable<HTMLSpanElement>) => {\n if (target instanceof Element) {\n return target.getBoundingClientRect().width;\n }\n\n return 0;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = () => {\n if (!this.state.focused) {\n return;\n }\n\n this.opened = false;\n this.setState({ items: null, focused: false });\n\n if (this.input) {\n this.input.blur();\n }\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n switch (true) {\n case isKeyEscape(e):\n e.preventDefault();\n this.setState({ items: null });\n return;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n return;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n return;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n return;\n }\n };\n\n private handleMenuItemClick(i: number) {\n return (event: React.SyntheticEvent<HTMLElement>) => this.handleItemClick(event, i);\n }\n\n private getAnchor = () => {\n return getRootNode(this);\n };\n\n private handleItemClick(event: React.SyntheticEvent<HTMLElement> | React.MouseEvent<HTMLElement>, index: number) {\n if ((event as React.MouseEvent<HTMLElement>).button) {\n return;\n }\n\n event.preventDefault();\n this.choose(index);\n }\n\n private choose(index: number) {\n if (!this.state.items) {\n return;\n }\n\n const value = this.state.items[index];\n this.opened = false;\n this.setState({\n selected: -1,\n items: null,\n });\n\n this.fireChange(value);\n this.blur();\n }\n\n private updateItems(value: string) {\n if (!this.opened) {\n return;\n }\n const pattern = value.trim();\n const source = this.props.source;\n\n if (!source) {\n return;\n }\n\n let promise;\n const expectingId = (this.requestId += 1);\n if (typeof source === 'function') {\n promise = source(pattern);\n } else {\n promise = match(pattern, source);\n }\n promise.then((items) => {\n if (this.opened && expectingId === this.requestId) {\n this.setState({\n items,\n selected: -1,\n });\n }\n });\n }\n\n private fireChange(value: string) {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n }\n\n private refInput = (el: Input | null) => {\n this.input = el;\n };\n\n private refMenu = (menu: Menu | null) => {\n this.menu = menu;\n };\n\n private refRootSpan = (span: HTMLSpanElement) => {\n this.rootSpan = span;\n };\n}\n"]}
@@ -1,7 +1,7 @@
1
- ```jsx harmony
2
- let items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
3
-
4
- const [value, setValue] = React.useState('Kappa');
5
-
6
- <Autocomplete source={items} value={value} onValueChange={setValue} />;
7
- ```
1
+ ```jsx harmony
2
+ let items = ['Grey Face', 'Grey Space', 'Kappa', 'Keepo', 'Resident Sleeper'];
3
+
4
+ const [value, setValue] = React.useState('Kappa');
5
+
6
+ <Autocomplete source={items} value={value} onValueChange={setValue} />;
7
+ ```
@@ -136,7 +136,11 @@ export declare class Button extends React.Component<ButtonProps, ButtonState> {
136
136
  };
137
137
  private theme;
138
138
  private node;
139
+ private setRootNode;
139
140
  componentDidMount(): void;
141
+ static getDerivedStateFromProps(props: ButtonProps): {
142
+ focusedByTab: boolean;
143
+ } | null;
140
144
  /**
141
145
  * @public
142
146
  */
@@ -154,4 +158,4 @@ export declare class Button extends React.Component<ButtonProps, ButtonState> {
154
158
  private handleBlur;
155
159
  private _ref;
156
160
  }
157
- export declare const isButton: (child: React.ReactChild) => child is React.ReactElement<ButtonProps, string | React.JSXElementConstructor<any>>;
161
+ export declare const isButton: (child: React.ReactNode) => child is React.ReactElement<ButtonProps, string | React.JSXElementConstructor<any>>;
@@ -1,5 +1,6 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.isButton = exports.Button = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
2
2
 
3
+ var _utils = require("../../lib/utils");
3
4
  var _client = require("../../lib/client");
4
5
  var _keyListener = require("../../lib/events/keyListener");
5
6
 
@@ -7,9 +8,10 @@ var _ThemeContext = require("../../lib/theming/ThemeContext");
7
8
  var _Spinner = require("../Spinner");
8
9
  var _CommonWrapper = require("../../internal/CommonWrapper");
9
10
  var _Emotion = require("../../lib/theming/Emotion");
11
+ var _rootNode = require("../../lib/rootNode");
10
12
 
11
13
  var _Button = require("./Button.styles");
12
- var _Corners = require("./Corners");var
14
+ var _Corners = require("./Corners");var _class, _class2, _temp;var
13
15
 
14
16
 
15
17
 
@@ -162,7 +164,8 @@ var _Corners = require("./Corners");var
162
164
 
163
165
 
164
166
 
165
- Button = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Button, _React$Component);function Button() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
167
+
168
+ Button = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Button, _React$Component);function Button() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
166
169
 
167
170
 
168
171
 
@@ -182,6 +185,15 @@ Button = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(
182
185
 
183
186
  theme = void 0;_this.
184
187
  node = null;_this.
188
+ setRootNode = void 0;_this.
189
+
190
+
191
+
192
+
193
+
194
+
195
+
196
+
185
197
 
186
198
 
187
199
 
@@ -437,12 +449,12 @@ Button = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(
437
449
 
438
450
  _ref = function (node) {
439
451
  _this.node = node;
440
- };return _this;}var _proto = Button.prototype;_proto.componentDidMount = function componentDidMount() {if (this.props.autoFocus) {_keyListener.keyListener.isTabPressed = true;this.focus();}} /**
452
+ };return _this;}var _proto = Button.prototype;_proto.componentDidMount = function componentDidMount() {if (this.props.autoFocus) {_keyListener.keyListener.isTabPressed = true;this.focus();}};Button.getDerivedStateFromProps = function getDerivedStateFromProps(props) {if (props.loading || props.disabled) {return { focusedByTab: false };}return null;} /**
441
453
  * @public
442
454
  */;_proto.focus = function focus() {var _this$node;(_this$node = this.node) == null ? void 0 : _this$node.focus();} /**
443
455
  * @public
444
456
  */;_proto.blur = function blur() {var _this$node2;(_this$node2 = this.node) == null ? void 0 : _this$node2.blur();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _cx, _cx2, _cx7, _cx8;var _this$props = this.props,_this$props$corners = _this$props.corners,corners = _this$props$corners === void 0 ? 0 : _this$props$corners,active = _this$props.active,disabled = _this$props.disabled,borderless = _this$props.borderless,checked = _this$props.checked,error = _this$props.error,warning = _this$props.warning,loading = _this$props.loading,arrow = _this$props.arrow,narrow = _this$props.narrow,icon = _this$props.icon,_noPadding = _this$props._noPadding,_noRightPadding = _this$props._noRightPadding,_this$props$use = _this$props.use,use = _this$props$use === void 0 ? Button.defaultProps.use : _this$props$use,visuallyFocused = _this$props.visuallyFocused,align = _this$props.align,disableFocus = _this$props.disableFocus,onMouseEnter = _this$props.onMouseEnter,onMouseLeave = _this$props.onMouseLeave,onMouseOver = _this$props.onMouseOver,onKeyDown = _this$props.onKeyDown,onClick = _this$props.onClick,width = _this$props.width,children = _this$props.children;var sizeClass = this.getSizeClassName();var isFocused = this.state.focusedByTab || visuallyFocused;var isLink = use === 'link';var rootProps = { // By default the type attribute is 'submit'. IE8 will fire a click event
445
457
  // on this button if somewhere on the page user presses Enter while some
446
458
  // input is focused. So we set type to 'button' by default.
447
- type: this.props.type, className: (0, _Emotion.cx)((_cx = {}, _cx[_Button.styles.root(this.theme)] = true, _cx[_Button.styles[use](this.theme)] = true, _cx[_Button.activeStyles[use](this.theme)] = active, _cx[sizeClass] = true, _cx[_Button.styles.focus(this.theme)] = isFocused && !checked, _cx[_Button.styles.checked(this.theme)] = checked, _cx[_Button.styles.disabled(this.theme)] = disabled || loading, _cx[_Button.styles.checkedDisabled(this.theme)] = checked && disabled, _cx[_Button.styles.borderless()] = borderless && !disabled && !loading && !checked && !isFocused && !active, _cx[_Button.styles.narrow()] = narrow, _cx[_Button.styles.noPadding()] = _noPadding, _cx[_Button.styles.noRightPadding()] = _noRightPadding, _cx)), style: { borderTopLeftRadius: corners & _Corners.Corners.TOP_LEFT ? 0 : undefined, borderTopRightRadius: corners & _Corners.Corners.TOP_RIGHT ? 0 : undefined, borderBottomRightRadius: corners & _Corners.Corners.BOTTOM_RIGHT ? 0 : undefined, borderBottomLeftRadius: corners & _Corners.Corners.BOTTOM_LEFT ? 0 : undefined, textAlign: align }, disabled: disabled || loading, onClick: onClick, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: onKeyDown, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseOver: onMouseOver, tabIndex: disableFocus ? -1 : 0, title: this.props.title };var wrapProps = { className: (0, _Emotion.cx)((_cx2 = {}, _cx2[_Button.styles.wrap()] = true, _cx2[_Button.styles.wrapArrow()] = arrow === true, _cx2[_Button.styles.wrapArrowLeft()] = arrow === 'left', _cx2)), style: { width: width } };var outlineNode = null;if (!isFocused || isLink) {var _cx3;outlineNode = /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.styles.outline(), (_cx3 = {}, _cx3[_Button.styles.outlineWarning(this.theme)] = warning, _cx3[_Button.styles.outlineError(this.theme)] = error, _cx3[_Button.styles.outlineLink()] = isLink, _cx3[_Button.styles.outlineLinkWarning(this.theme)] = isLink && warning, _cx3[_Button.styles.outlineLinkError(this.theme)] = isLink && error, _cx3)) });}var loadingNode = null;if (loading && !icon) {loadingNode = /*#__PURE__*/_react.default.createElement("div", { className: _Button.styles.loading() }, this.getLoadingSpinner());}var iconNode = null;if (icon) {var _cx4;iconNode = /*#__PURE__*/_react.default.createElement("span", { className: (0, _Emotion.cx)(_Button.styles.icon(), this.getSizeIconClassName(), (_cx4 = {}, _cx4[_Button.styles.iconNoRightPadding()] = !children, _cx4[_Button.styles.iconLink(this.theme)] = isLink, _cx4)) }, loading ? this.getLoadingSpinner() : icon);}var arrowNode = null;if (arrow) {var _cx5;arrowNode = /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)((_cx5 = {}, _cx5[_Button.styles.arrow()] = true, _cx5[_Button.styles.arrowWarning(this.theme)] = !checked && warning, _cx5[_Button.styles.arrowError(this.theme)] = !checked && error, _cx5[_Button.styles.arrowFocus(this.theme)] = !checked && isFocused, _cx5[_Button.styles.arrowLeft()] = arrow === 'left', _cx5)) }, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.globalClasses.arrowHelper, _Button.globalClasses.arrowHelperTop) }), /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.globalClasses.arrowHelper, _Button.globalClasses.arrowHelperBottom) }));} // Force disable all props and features, that cannot be use with Link
448
- if (isLink) {var _cx6;rootProps.className = (0, _Emotion.cx)((_cx6 = {}, _cx6[_Button.styles.root(this.theme)] = true, _cx6[sizeClass] = true, _cx6[_Button.styles.link(this.theme)] = true, _cx6[_Button.styles.linkFocus(this.theme)] = isFocused, _cx6[_Button.styles.linkDisabled(this.theme)] = disabled || loading, _cx6));Object.assign(wrapProps, { className: (0, _Emotion.cx)(_Button.styles.wrap(), _Button.styles.wrapLink()), style: { width: wrapProps.style.width } });rootProps.style.textAlign = undefined;arrowNode = null;}return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, /*#__PURE__*/_react.default.createElement("span", wrapProps, /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({ ref: this._ref }, rootProps), outlineNode, loadingNode, arrowNode, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.styles.caption(), _Button.globalClasses.caption, (_cx7 = {}, _cx7[_Button.styles.captionTranslated()] = active || checked, _cx7[_Button.styles.captionLink()] = isLink, _cx7[_Button.styles.captionDisabled()] = !checked && disabled, _cx7)) }, iconNode, /*#__PURE__*/_react.default.createElement("span", { className: (0, _Emotion.cx)((_cx8 = {}, _cx8[_Button.styles.visibilityHidden()] = !!loadingNode, _cx8)) }, children)))));};_proto.getLoadingSpinner = function getLoadingSpinner() {return /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { caption: null, dimmed: true, type: "mini" });};_proto.getSizeClassName = function getSizeClassName() {var _cx9, _cx10, _cx11;switch (this.props.size) {case 'large':return (0, _Emotion.cx)(_Button.styles.sizeLarge(this.theme), (_cx9 = {}, _cx9[_Button.styles.sizeLargeIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx9));case 'medium':return (0, _Emotion.cx)(_Button.styles.sizeMedium(this.theme), (_cx10 = {}, _cx10[_Button.styles.sizeMediumIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx10));case 'small':default:return (0, _Emotion.cx)(_Button.styles.sizeSmall(this.theme), (_cx11 = {}, _cx11[_Button.styles.sizeSmallIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx11));}};_proto.getSizeIconClassName = function getSizeIconClassName() {switch (this.props.size) {case 'large':return _Button.styles.iconLarge(this.theme);case 'medium':return _Button.styles.iconMedium(this.theme);case 'small':default:return _Button.styles.iconSmall(this.theme);}};return Button;}(_react.default.Component);exports.Button = Button;Button.__KONTUR_REACT_UI__ = 'Button';Button.__BUTTON__ = true;Button.TOP_LEFT = _Corners.Corners.TOP_LEFT;Button.TOP_RIGHT = _Corners.Corners.TOP_RIGHT;Button.BOTTOM_RIGHT = _Corners.Corners.BOTTOM_RIGHT;Button.BOTTOM_LEFT = _Corners.Corners.BOTTOM_LEFT;Button.defaultProps = { use: 'default', size: 'small', type: 'button' };var isButton = function isButton(child) {return /*#__PURE__*/_react.default.isValidElement(child) ? Object.prototype.hasOwnProperty.call(child.type, '__BUTTON__') : false;};exports.isButton = isButton;
459
+ type: this.props.type, className: (0, _Emotion.cx)((_cx = {}, _cx[_Button.styles.root(this.theme)] = true, _cx[_Button.styles[use](this.theme)] = true, _cx[_Button.activeStyles[use](this.theme)] = active, _cx[sizeClass] = true, _cx[_Button.styles.focus(this.theme)] = isFocused, _cx[_Button.styles.checked(this.theme)] = checked, _cx[_Button.styles.checkedFocused(this.theme)] = checked && isFocused, _cx[_Button.styles.disabled(this.theme)] = disabled || loading, _cx[_Button.styles.checkedDisabled(this.theme)] = checked && disabled, _cx[_Button.styles.borderless()] = borderless && !disabled && !loading && !checked && !isFocused && !active, _cx[_Button.styles.narrow()] = narrow, _cx[_Button.styles.noPadding()] = _noPadding, _cx[_Button.styles.noRightPadding()] = _noRightPadding, _cx)), style: { borderTopLeftRadius: corners & _Corners.Corners.TOP_LEFT ? 0 : undefined, borderTopRightRadius: corners & _Corners.Corners.TOP_RIGHT ? 0 : undefined, borderBottomRightRadius: corners & _Corners.Corners.BOTTOM_RIGHT ? 0 : undefined, borderBottomLeftRadius: corners & _Corners.Corners.BOTTOM_LEFT ? 0 : undefined, textAlign: align }, disabled: disabled || loading, onClick: onClick, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: onKeyDown, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseOver: onMouseOver, tabIndex: disableFocus ? -1 : 0, title: this.props.title };var wrapProps = { className: (0, _Emotion.cx)((_cx2 = {}, _cx2[_Button.styles.wrap()] = true, _cx2[_Button.styles.wrapArrow()] = arrow === true, _cx2[_Button.styles.wrapArrowLeft()] = arrow === 'left', _cx2)), style: { width: width } };var outlineNode = null;if (!isFocused || isLink) {var _cx3;outlineNode = /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.styles.outline(), (_cx3 = {}, _cx3[_Button.styles.outlineWarning(this.theme)] = warning, _cx3[_Button.styles.outlineError(this.theme)] = error, _cx3[_Button.styles.outlineLink()] = isLink, _cx3[_Button.styles.outlineLinkWarning(this.theme)] = isLink && warning, _cx3[_Button.styles.outlineLinkError(this.theme)] = isLink && error, _cx3)) });}var loadingNode = null;if (loading && !icon) {loadingNode = /*#__PURE__*/_react.default.createElement("div", { className: _Button.styles.loading() }, this.getLoadingSpinner());}var iconNode = null;if (icon) {var _cx4;iconNode = /*#__PURE__*/_react.default.createElement("span", { className: (0, _Emotion.cx)(_Button.styles.icon(), this.getSizeIconClassName(), (_cx4 = {}, _cx4[_Button.styles.iconNoRightPadding()] = !children, _cx4[_Button.styles.iconLink(this.theme)] = isLink, _cx4)) }, loading ? this.getLoadingSpinner() : icon);}var arrowNode = null;if (arrow) {var _cx5;arrowNode = /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)((_cx5 = {}, _cx5[_Button.styles.arrow()] = true, _cx5[_Button.styles.arrowWarning(this.theme)] = !checked && warning, _cx5[_Button.styles.arrowError(this.theme)] = !checked && error, _cx5[_Button.styles.arrowFocus(this.theme)] = !checked && isFocused, _cx5[_Button.styles.arrowLeft()] = arrow === 'left', _cx5)) }, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.globalClasses.arrowHelper, _Button.globalClasses.arrowHelperTop) }), /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.globalClasses.arrowHelper, _Button.globalClasses.arrowHelperBottom) }));} // Force disable all props and features, that cannot be use with Link
460
+ if (isLink) {var _cx6;rootProps.className = (0, _Emotion.cx)((_cx6 = {}, _cx6[_Button.styles.root(this.theme)] = true, _cx6[sizeClass] = true, _cx6[_Button.styles.link(this.theme)] = true, _cx6[_Button.styles.linkFocus(this.theme)] = isFocused, _cx6[_Button.styles.linkDisabled(this.theme)] = disabled || loading, _cx6));Object.assign(wrapProps, { className: (0, _Emotion.cx)(_Button.styles.wrap(), _Button.styles.wrapLink()), style: { width: wrapProps.style.width } });rootProps.style.textAlign = undefined;arrowNode = null;}return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("span", wrapProps, /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({ ref: this._ref }, rootProps), outlineNode, loadingNode, arrowNode, /*#__PURE__*/_react.default.createElement("div", { className: (0, _Emotion.cx)(_Button.styles.caption(), _Button.globalClasses.caption, (_cx7 = {}, _cx7[_Button.styles.captionTranslated()] = active || checked, _cx7[_Button.styles.captionLink()] = isLink, _cx7[_Button.styles.captionDisabled()] = !checked && disabled, _cx7)) }, iconNode, /*#__PURE__*/_react.default.createElement("span", { className: (0, _Emotion.cx)((_cx8 = {}, _cx8[_Button.styles.visibilityHidden()] = !!loadingNode, _cx8)) }, children)))));};_proto.getLoadingSpinner = function getLoadingSpinner() {return /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { caption: null, dimmed: true, type: "mini" });};_proto.getSizeClassName = function getSizeClassName() {var _cx9, _cx10, _cx11;switch (this.props.size) {case 'large':return (0, _Emotion.cx)(_Button.styles.sizeLarge(this.theme), (_cx9 = {}, _cx9[_Button.styles.sizeLargeIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx9));case 'medium':return (0, _Emotion.cx)(_Button.styles.sizeMedium(this.theme), (_cx10 = {}, _cx10[_Button.styles.sizeMediumIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx10));case 'small':default:return (0, _Emotion.cx)(_Button.styles.sizeSmall(this.theme), (_cx11 = {}, _cx11[_Button.styles.sizeSmallIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx11));}};_proto.getSizeIconClassName = function getSizeIconClassName() {switch (this.props.size) {case 'large':return _Button.styles.iconLarge(this.theme);case 'medium':return _Button.styles.iconMedium(this.theme);case 'small':default:return _Button.styles.iconSmall(this.theme);}};return Button;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Button', _class2.__BUTTON__ = true, _class2.TOP_LEFT = _Corners.Corners.TOP_LEFT, _class2.TOP_RIGHT = _Corners.Corners.TOP_RIGHT, _class2.BOTTOM_RIGHT = _Corners.Corners.BOTTOM_RIGHT, _class2.BOTTOM_LEFT = _Corners.Corners.BOTTOM_LEFT, _class2.defaultProps = { use: 'default', size: 'small', type: 'button' }, _temp)) || _class;exports.Button = Button;var isButton = (0, _utils.isReactUIComponent)('Button');exports.isButton = isButton;
@@ -1 +1 @@
1
- {"version":3,"sources":["Button.tsx"],"names":["Button","state","focusedByTab","theme","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","blur","render","renderMain","corners","active","borderless","checked","error","warning","loading","arrow","narrow","icon","_noPadding","_noRightPadding","use","defaultProps","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","styles","root","activeStyles","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","Corners","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","globalClasses","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","React","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton","child","isValidElement","prototype","hasOwnProperty","call"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isIE11, isEdge } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\n\nexport interface ButtonProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: number;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: ButtonSize;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\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 {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n use = Button.defaultProps.use,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type: this.props.type,\n className: cx({\n [styles.root(this.theme)]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused && !checked,\n [styles.checked(this.theme)]: checked,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n }),\n style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap()]: true,\n [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n }),\n style: {\n width: width,\n },\n };\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\n </div>\n );\n }\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n arrowNode = null;\n }\n\n return (\n <CommonWrapper {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = (child: React.ReactChild): child is React.ReactElement<ButtonProps> => {\n return React.isValidElement<ButtonProps>(child)\n ? Object.prototype.hasOwnProperty.call(child.type, '__BUTTON__')\n : false;\n};\n"]}
1
+ {"version":3,"sources":["Button.tsx"],"names":["Button","rootNode","state","focusedByTab","theme","node","setRootNode","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","renderMain","corners","active","borderless","checked","error","warning","arrow","narrow","icon","_noPadding","_noRightPadding","use","defaultProps","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onKeyDown","onClick","width","children","sizeClass","getSizeClassName","isFocused","isLink","rootProps","type","className","styles","root","activeStyles","checkedFocused","checkedDisabled","noPadding","noRightPadding","style","borderTopLeftRadius","Corners","TOP_LEFT","undefined","borderTopRightRadius","TOP_RIGHT","borderBottomRightRadius","BOTTOM_RIGHT","borderBottomLeftRadius","BOTTOM_LEFT","textAlign","tabIndex","title","wrapProps","wrap","wrapArrow","wrapArrowLeft","outlineNode","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","loadingNode","getLoadingSpinner","iconNode","getSizeIconClassName","iconNoRightPadding","iconLink","arrowNode","arrowWarning","arrowError","arrowFocus","arrowLeft","globalClasses","arrowHelper","arrowHelperTop","arrowHelperBottom","link","linkFocus","linkDisabled","Object","assign","wrapLink","caption","captionTranslated","captionLink","captionDisabled","visibilityHidden","size","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeMedium","sizeMediumIE11","sizeSmall","sizeSmallIE11","iconLarge","iconMedium","iconSmall","React","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { Corners } from './Corners';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link';\n\nexport interface ButtonProps extends CommonProps {\n /** @ignore */\n _noPadding?: boolean;\n\n /** @ignore */\n _noRightPadding?: boolean;\n\n /**\n * Применяет к кнопке стили псевдокласса `:active`.\n */\n active?: boolean;\n\n /**\n * CSS-свойство `text-align`.\n */\n align?: React.CSSProperties['textAlign'];\n\n /**\n * Превращает обычную кнопку в кнопку со стрелкой.\n */\n arrow?: boolean | 'left';\n\n /**\n * Даёт кнопке фокус после окончания загрузки страницы.\n */\n autoFocus?: boolean;\n\n /**\n * Убирает обводку у кнопки.\n */\n borderless?: boolean;\n\n /**\n * @ignore\n */\n checked?: boolean;\n\n children?: React.ReactNode;\n\n /** @ignore */\n corners?: number;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n\n /**\n * Иконка слева от текста кнопки.\n */\n icon?: React.ReactElement<any>;\n\n /**\n * Переводит кнопку в состояние загрузки.\n */\n loading?: boolean;\n\n /**\n * Сужает кнопку.\n */\n narrow?: boolean;\n\n /**\n * HTML-событие `onblur`.\n */\n onBlur?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onclick`.\n */\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onfocus`.\n */\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `keydown`.\n */\n onKeyDown?: React.KeyboardEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * HTML-событие `onmouseover`.\n */\n onMouseOver?: React.MouseEventHandler<HTMLButtonElement>;\n\n /**\n * Задаёт размер кнопки.\n *\n * **Допустимые значения**: `\"small\"`, `\"medium\"`, `\"large\"`.\n */\n size?: ButtonSize;\n\n /**\n * HTML-атрибут `type`.\n */\n type?: ButtonType;\n\n /**\n * HTML-атрибут `title`.\n */\n title?: string;\n\n /**\n * Стиль кнопки.\n *\n * **Допустимые значения**: `\"default\"`, `\"primary\"`, `\"success\"`, `\"danger\"`, `\"pay\"`, `\"link\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n public static TOP_LEFT = Corners.TOP_LEFT;\n public static TOP_RIGHT = Corners.TOP_RIGHT;\n public static BOTTOM_RIGHT = Corners.BOTTOM_RIGHT;\n public static BOTTOM_LEFT = Corners.BOTTOM_LEFT;\n\n public static defaultProps = {\n use: 'default' as ButtonUse,\n size: 'small' as ButtonSize,\n type: 'button' as ButtonType,\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private node: HTMLButtonElement | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.props.autoFocus) {\n keyListener.isTabPressed = true;\n this.focus();\n }\n }\n\n public static getDerivedStateFromProps(props: ButtonProps) {\n if (props.loading || props.disabled) {\n return { focusedByTab: false };\n }\n return null;\n }\n\n /**\n * @public\n */\n public focus() {\n this.node?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.node?.blur();\n }\n\n public render(): JSX.Element {\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 {\n corners = 0,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n arrow,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n use = Button.defaultProps.use,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onKeyDown,\n onClick,\n width,\n children,\n } = this.props;\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const rootProps = {\n // By default the type attribute is 'submit'. IE8 will fire a click event\n // on this button if somewhere on the page user presses Enter while some\n // input is focused. So we set type to 'button' by default.\n type: this.props.type,\n className: cx({\n [styles.root(this.theme)]: true,\n [styles[use](this.theme)]: true,\n [activeStyles[use](this.theme)]: active,\n [sizeClass]: true,\n [styles.focus(this.theme)]: isFocused,\n [styles.checked(this.theme)]: checked,\n [styles.checkedFocused(this.theme)]: checked && isFocused,\n [styles.disabled(this.theme)]: disabled || loading,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n [styles.borderless()]: borderless && !disabled && !loading && !checked && !isFocused && !active,\n [styles.narrow()]: narrow,\n [styles.noPadding()]: _noPadding,\n [styles.noRightPadding()]: _noRightPadding,\n }),\n style: {\n borderTopLeftRadius: corners & Corners.TOP_LEFT ? 0 : undefined,\n borderTopRightRadius: corners & Corners.TOP_RIGHT ? 0 : undefined,\n borderBottomRightRadius: corners & Corners.BOTTOM_RIGHT ? 0 : undefined,\n borderBottomLeftRadius: corners & Corners.BOTTOM_LEFT ? 0 : undefined,\n textAlign: align,\n },\n disabled: disabled || loading,\n onClick: onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown: onKeyDown,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseOver: onMouseOver,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap()]: true,\n [styles.wrapArrow()]: arrow === true,\n [styles.wrapArrowLeft()]: arrow === 'left',\n }),\n style: {\n width: width,\n },\n };\n\n let outlineNode = null;\n if (!isFocused || isLink) {\n outlineNode = (\n <div\n className={cx(styles.outline(), {\n [styles.outlineWarning(this.theme)]: warning,\n [styles.outlineError(this.theme)]: error,\n [styles.outlineLink()]: isLink,\n [styles.outlineLinkWarning(this.theme)]: isLink && warning,\n [styles.outlineLinkError(this.theme)]: isLink && error,\n })}\n />\n );\n }\n\n let loadingNode = null;\n if (loading && !icon) {\n loadingNode = <div className={styles.loading()}>{this.getLoadingSpinner()}</div>;\n }\n\n let iconNode = null;\n if (icon) {\n iconNode = (\n <span\n className={cx(styles.icon(), this.getSizeIconClassName(), {\n [styles.iconNoRightPadding()]: !children,\n [styles.iconLink(this.theme)]: isLink,\n })}\n >\n {loading ? this.getLoadingSpinner() : icon}\n </span>\n );\n }\n\n let arrowNode = null;\n if (arrow) {\n arrowNode = (\n <div\n className={cx({\n [styles.arrow()]: true,\n [styles.arrowWarning(this.theme)]: !checked && warning,\n [styles.arrowError(this.theme)]: !checked && error,\n [styles.arrowFocus(this.theme)]: !checked && isFocused,\n [styles.arrowLeft()]: arrow === 'left',\n })}\n >\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperTop)} />\n <div className={cx(globalClasses.arrowHelper, globalClasses.arrowHelperBottom)} />\n </div>\n );\n }\n\n // Force disable all props and features, that cannot be use with Link\n if (isLink) {\n rootProps.className = cx({\n [styles.root(this.theme)]: true,\n [sizeClass]: true,\n [styles.link(this.theme)]: true,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n arrowNode = null;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button ref={this._ref} {...rootProps}>\n {outlineNode}\n {loadingNode}\n {arrowNode}\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: active || checked,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {iconNode}\n <span className={cx({ [styles.visibilityHidden()]: !!loadingNode })}>{children}</span>\n </div>\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private getLoadingSpinner() {\n return <Spinner caption={null} dimmed type=\"mini\" />;\n }\n\n private getSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), { [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), { [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), { [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge });\n }\n }\n\n private getSizeIconClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n if (!this.props.disabled && !this.props.disableFocus) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n requestAnimationFrame(() => {\n if (keyListener.isTabPressed) {\n this.setState({ focusedByTab: true });\n }\n });\n this.props.onFocus?.(e);\n }\n };\n\n private handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n this.setState({ focusedByTab: false });\n if (!this.props.disabled && !this.props.disableFocus) {\n this.props.onBlur?.(e);\n }\n };\n\n private _ref = (node: HTMLButtonElement | null) => {\n this.node = node;\n };\n}\n\nexport const isButton = isReactUIComponent<ButtonProps>('Button');\n"]}