@skbkontur/react-ui 4.17.0-next.1 → 4.17.0-next.3

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 (523) hide show
  1. package/CHANGELOG.md +67 -4
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +2 -1
  3. package/cjs/components/Autocomplete/Autocomplete.js +1 -0
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.d.ts +6 -2
  6. package/cjs/components/Button/Button.js +6 -1
  7. package/cjs/components/Button/Button.js.map +1 -1
  8. package/cjs/components/Button/Button.mixins.js +1 -1
  9. package/cjs/components/Button/Button.mixins.js.map +1 -1
  10. package/cjs/components/Button/ButtonIcon.d.ts +3 -2
  11. package/cjs/components/Button/ButtonIcon.js +1 -0
  12. package/cjs/components/Button/ButtonIcon.js.map +1 -1
  13. package/cjs/components/Calendar/Calendar.js +7 -6
  14. package/cjs/components/Calendar/Calendar.js.map +1 -1
  15. package/cjs/components/Checkbox/Checkbox.d.ts +6 -2
  16. package/cjs/components/Checkbox/Checkbox.js +12 -7
  17. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  18. package/cjs/components/ComboBox/ComboBox.d.ts +2 -1
  19. package/cjs/components/ComboBox/ComboBox.js +1 -0
  20. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  21. package/cjs/components/CurrencyInput/CurrencyInput.js +2 -1
  22. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  23. package/cjs/components/DateInput/DateFragmentsView.js +2 -1
  24. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  25. package/cjs/components/DateInput/DateInput.d.ts +2 -1
  26. package/cjs/components/DateInput/DateInput.js +3 -1
  27. package/cjs/components/DateInput/DateInput.js.map +1 -1
  28. package/cjs/components/DateInput/helpers/SelectionHelpers.js +11 -10
  29. package/cjs/components/DateInput/helpers/SelectionHelpers.js.map +1 -1
  30. package/cjs/components/DatePicker/DatePicker.d.ts +2 -1
  31. package/cjs/components/DatePicker/DatePicker.js +1 -0
  32. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  33. package/cjs/components/Dropdown/Dropdown.d.ts +3 -2
  34. package/cjs/components/Dropdown/Dropdown.js +1 -0
  35. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  36. package/cjs/components/FileUploader/FileUploader.d.ts +6 -2
  37. package/cjs/components/FileUploader/FileUploader.js +8 -4
  38. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  39. package/cjs/components/FxInput/FxInput.js +1 -0
  40. package/cjs/components/FxInput/FxInput.js.map +1 -1
  41. package/cjs/components/FxInput/FxInputRestoreBtn.js +1 -0
  42. package/cjs/components/FxInput/FxInputRestoreBtn.js.map +1 -1
  43. package/cjs/components/GlobalLoader/GlobalLoader.js +3 -3
  44. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  45. package/cjs/components/Hint/Hint.js +5 -4
  46. package/cjs/components/Hint/Hint.js.map +1 -1
  47. package/cjs/components/Input/Input.d.ts +6 -2
  48. package/cjs/components/Input/Input.js +16 -10
  49. package/cjs/components/Input/Input.js.map +1 -1
  50. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +1 -0
  51. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  52. package/cjs/components/Input/InputLayout/InputLayoutContext.d.ts +2 -2
  53. package/cjs/components/Input/InputLayout/InputLayoutContext.js.map +1 -1
  54. package/cjs/components/Kebab/Kebab.d.ts +2 -1
  55. package/cjs/components/Kebab/Kebab.js +2 -1
  56. package/cjs/components/Kebab/Kebab.js.map +1 -1
  57. package/cjs/components/Link/Link.js +2 -1
  58. package/cjs/components/Link/Link.js.map +1 -1
  59. package/cjs/components/Loader/Loader.js +8 -7
  60. package/cjs/components/Loader/Loader.js.map +1 -1
  61. package/cjs/components/MenuFooter/MenuFooter.d.ts +6 -2
  62. package/cjs/components/MenuFooter/MenuFooter.js +4 -0
  63. package/cjs/components/MenuFooter/MenuFooter.js.map +1 -1
  64. package/cjs/components/MenuHeader/MenuHeader.d.ts +6 -2
  65. package/cjs/components/MenuHeader/MenuHeader.js +4 -0
  66. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  67. package/cjs/components/MenuItem/MenuItem.d.ts +6 -2
  68. package/cjs/components/MenuItem/MenuItem.js +6 -1
  69. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  70. package/cjs/components/Modal/Modal.js +2 -1
  71. package/cjs/components/Modal/Modal.js.map +1 -1
  72. package/cjs/components/Modal/ModalClose.js +2 -1
  73. package/cjs/components/Modal/ModalClose.js.map +1 -1
  74. package/cjs/components/Paging/NavigationHelper.js +2 -1
  75. package/cjs/components/Paging/NavigationHelper.js.map +1 -1
  76. package/cjs/components/Paging/Paging.js +8 -7
  77. package/cjs/components/Paging/Paging.js.map +1 -1
  78. package/cjs/components/PasswordInput/PasswordInput.js +3 -2
  79. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  80. package/cjs/components/Radio/Radio.d.ts +6 -2
  81. package/cjs/components/Radio/Radio.js +6 -1
  82. package/cjs/components/Radio/Radio.js.map +1 -1
  83. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js +5 -6
  84. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js.map +1 -1
  85. package/cjs/components/ScrollContainer/ScrollBar.js +7 -6
  86. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  87. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -1
  88. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  89. package/cjs/components/Select/Select.d.ts +4 -3
  90. package/cjs/components/Select/Select.js +4 -2
  91. package/cjs/components/Select/Select.js.map +1 -1
  92. package/cjs/components/SidePage/SidePage.js +12 -3
  93. package/cjs/components/SidePage/SidePage.js.map +1 -1
  94. package/cjs/components/SidePage/SidePageCloseButton.js +2 -1
  95. package/cjs/components/SidePage/SidePageCloseButton.js.map +1 -1
  96. package/cjs/components/SidePage/SidePageHeader.d.ts +1 -0
  97. package/cjs/components/SidePage/SidePageHeader.js +8 -6
  98. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  99. package/cjs/components/Spinner/SpinnerFallbackAnimation.js +6 -2
  100. package/cjs/components/Spinner/SpinnerFallbackAnimation.js.map +1 -1
  101. package/cjs/components/Sticky/Sticky.js +4 -5
  102. package/cjs/components/Sticky/Sticky.js.map +1 -1
  103. package/cjs/components/Switcher/Switcher.d.ts +7 -3
  104. package/cjs/components/Switcher/Switcher.js +4 -0
  105. package/cjs/components/Switcher/Switcher.js.map +1 -1
  106. package/cjs/components/Tabs/Indicator.js +2 -1
  107. package/cjs/components/Tabs/Indicator.js.map +1 -1
  108. package/cjs/components/Tabs/Tab.d.ts +5 -1
  109. package/cjs/components/Tabs/Tab.js +7 -2
  110. package/cjs/components/Tabs/Tab.js.map +1 -1
  111. package/cjs/components/Tabs/Tab.styles.js.map +1 -1
  112. package/cjs/components/Tabs/Tabs.d.ts +3 -2
  113. package/cjs/components/Tabs/Tabs.js +3 -1
  114. package/cjs/components/Tabs/Tabs.js.map +1 -1
  115. package/cjs/components/Tabs/Tabs.styles.js.map +1 -1
  116. package/cjs/components/Tabs/TabsContext.d.ts +3 -2
  117. package/cjs/components/Tabs/TabsContext.js +1 -0
  118. package/cjs/components/Tabs/TabsContext.js.map +1 -1
  119. package/cjs/components/Tabs/helpers.d.ts +5 -5
  120. package/cjs/components/Tabs/helpers.js +3 -2
  121. package/cjs/components/Tabs/helpers.js.map +1 -1
  122. package/cjs/components/Textarea/Textarea.d.ts +6 -2
  123. package/cjs/components/Textarea/Textarea.js +23 -9
  124. package/cjs/components/Textarea/Textarea.js.map +1 -1
  125. package/cjs/components/Textarea/TextareaCounter.d.ts +3 -2
  126. package/cjs/components/Textarea/TextareaCounter.js +3 -1
  127. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  128. package/cjs/components/Textarea/TextareaHelpers.d.ts +1 -1
  129. package/cjs/components/Textarea/TextareaHelpers.js +7 -2
  130. package/cjs/components/Textarea/TextareaHelpers.js.map +1 -1
  131. package/cjs/components/Toast/Toast.js +4 -4
  132. package/cjs/components/Toast/Toast.js.map +1 -1
  133. package/cjs/components/Toast/ToastStatic.js +4 -3
  134. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  135. package/cjs/components/Toggle/Toggle.d.ts +6 -2
  136. package/cjs/components/Toggle/Toggle.js +4 -0
  137. package/cjs/components/Toggle/Toggle.js.map +1 -1
  138. package/cjs/components/TokenInput/TokenInput.js +6 -5
  139. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  140. package/cjs/components/Tooltip/Tooltip.js +5 -5
  141. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  142. package/cjs/hooks/useDrop.js +3 -2
  143. package/cjs/hooks/useDrop.js.map +1 -1
  144. package/cjs/index.d.ts +1 -1
  145. package/cjs/index.js +1 -0
  146. package/cjs/index.js.map +1 -1
  147. package/cjs/internal/CloseButtonIcon/CloseButtonIcon.js +2 -1
  148. package/cjs/internal/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  149. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +2 -1
  150. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +1 -0
  151. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  152. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +3 -2
  153. package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -1
  154. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  155. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +3 -2
  156. package/cjs/internal/CustomComboBox/CustomComboBox.js +6 -4
  157. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  158. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +3 -2
  159. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
  160. package/cjs/internal/DateSelect/DateSelect.js +19 -16
  161. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  162. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +0 -1
  163. package/cjs/internal/DropdownContainer/DropdownContainer.js +13 -13
  164. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  165. package/cjs/internal/DropdownContainer/getManualPosition.js +6 -4
  166. package/cjs/internal/DropdownContainer/getManualPosition.js.map +1 -1
  167. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +2 -2
  168. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +4 -3
  169. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  170. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFileStatusIcon.d.ts +2 -2
  171. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFileStatusIcon.js +1 -1
  172. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFileStatusIcon.js.map +1 -1
  173. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +2 -2
  174. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +1 -1
  175. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  176. package/cjs/internal/FileUploaderControl/hooks/useFileUploaderSize.d.ts +2 -2
  177. package/cjs/internal/FileUploaderControl/hooks/useFileUploaderSize.js.map +1 -1
  178. package/cjs/internal/FocusTrap/FocusTrap.js +6 -5
  179. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  180. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +19 -20
  181. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  182. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +2 -1
  183. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  184. package/cjs/internal/InputLikeText/InputLikeText.js +16 -16
  185. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  186. package/cjs/internal/InternalMenu/InternalMenu.js +7 -7
  187. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  188. package/cjs/internal/Menu/Menu.js +6 -6
  189. package/cjs/internal/Menu/Menu.js.map +1 -1
  190. package/cjs/internal/MenuMessage/MenuMessage.d.ts +2 -2
  191. package/cjs/internal/MenuMessage/MenuMessage.js.map +1 -1
  192. package/cjs/internal/Popup/Popup.js +11 -8
  193. package/cjs/internal/Popup/Popup.js.map +1 -1
  194. package/cjs/internal/Popup/PopupHelper.js +9 -7
  195. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  196. package/cjs/internal/PopupMenu/PopupMenu.js +3 -2
  197. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  198. package/cjs/internal/RenderContainer/RenderContainer.js +12 -12
  199. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  200. package/cjs/internal/RenderContainer/RenderInnerContainer.js +2 -1
  201. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  202. package/cjs/internal/RenderLayer/RenderLayer.js +3 -2
  203. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  204. package/cjs/internal/ThemePlayground/SizesGroup.d.ts +2 -1
  205. package/cjs/internal/ThemePlayground/SizesGroup.js +1 -0
  206. package/cjs/internal/ThemePlayground/SizesGroup.js.map +1 -1
  207. package/cjs/internal/ThemePlayground/VariableValue.js +1 -0
  208. package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
  209. package/cjs/internal/ThemeShowcase/VariablesCollector.js +6 -4
  210. package/cjs/internal/ThemeShowcase/VariablesCollector.js.map +1 -1
  211. package/cjs/internal/ZIndex/ZIndex.js +2 -2
  212. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  213. package/cjs/internal/ZIndex/ZIndexStorage.js +2 -2
  214. package/cjs/internal/ZIndex/ZIndexStorage.js.map +1 -1
  215. package/cjs/internal/themes/Theme2022.d.ts +1 -1
  216. package/cjs/internal/themes/Theme2022.js +2 -3
  217. package/cjs/internal/themes/Theme2022.js.map +1 -1
  218. package/cjs/internal/themes/Theme2022Dark.d.ts +1 -0
  219. package/cjs/internal/themes/Theme2022Dark.js +2 -1
  220. package/cjs/internal/themes/Theme2022Dark.js.map +1 -1
  221. package/cjs/lib/LayoutEvents.js +5 -4
  222. package/cjs/lib/LayoutEvents.js.map +1 -1
  223. package/cjs/lib/ModalStack.js +2 -3
  224. package/cjs/lib/ModalStack.js.map +1 -1
  225. package/cjs/lib/SSRSafe.d.ts +1 -6
  226. package/cjs/lib/SSRSafe.js +4 -48
  227. package/cjs/lib/SSRSafe.js.map +1 -1
  228. package/cjs/lib/Upgrades.d.ts +1 -0
  229. package/cjs/lib/Upgrades.js +3 -1
  230. package/cjs/lib/Upgrades.js.map +1 -1
  231. package/cjs/lib/animation/index.js +6 -4
  232. package/cjs/lib/animation/index.js.map +1 -1
  233. package/cjs/lib/client.d.ts +1 -7
  234. package/cjs/lib/client.js +6 -6
  235. package/cjs/lib/client.js.map +1 -1
  236. package/cjs/lib/dom/getScrollWidth.js +4 -4
  237. package/cjs/lib/dom/getScrollWidth.js.map +1 -1
  238. package/cjs/lib/dom/tabbableHelpers.d.ts +2 -1
  239. package/cjs/lib/dom/tabbableHelpers.js +7 -2
  240. package/cjs/lib/dom/tabbableHelpers.js.map +1 -1
  241. package/cjs/lib/events/MouseDrag.js +11 -11
  242. package/cjs/lib/events/MouseDrag.js.map +1 -1
  243. package/cjs/lib/events/fixClickFocusIE.js +5 -3
  244. package/cjs/lib/events/fixClickFocusIE.js.map +1 -1
  245. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js +5 -2
  246. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js.map +1 -1
  247. package/cjs/lib/events/keyListener.js +9 -11
  248. package/cjs/lib/events/keyListener.js.map +1 -1
  249. package/cjs/lib/events/keyboard/identifiers.js +4 -2
  250. package/cjs/lib/events/keyboard/identifiers.js.map +1 -1
  251. package/cjs/lib/listenFocusOutside.js +14 -15
  252. package/cjs/lib/listenFocusOutside.js.map +1 -1
  253. package/cjs/lib/needsPolyfillPlaceholder.js +5 -3
  254. package/cjs/lib/needsPolyfillPlaceholder.js.map +1 -1
  255. package/cjs/lib/net/fetch.js +24 -18
  256. package/cjs/lib/net/fetch.js.map +1 -1
  257. package/cjs/lib/rootNode/getRootNode.js +5 -6
  258. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  259. package/cjs/lib/taskWithDelayAndMinimalDuration.js +5 -5
  260. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  261. package/cjs/lib/theming/Emotion.js +4 -2
  262. package/cjs/lib/theming/Emotion.js.map +1 -1
  263. package/cjs/lib/types/props.d.ts +1 -0
  264. package/cjs/lib/types/props.js +1 -0
  265. package/cjs/lib/types/props.js.map +1 -0
  266. package/cjs/lib/utils.js +4 -5
  267. package/cjs/lib/utils.js.map +1 -1
  268. package/cjs/typings/global.d.ts +3 -4
  269. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  270. package/components/Autocomplete/Autocomplete.d.ts +2 -1
  271. package/components/Button/Button/Button.js +6 -1
  272. package/components/Button/Button/Button.js.map +1 -1
  273. package/components/Button/Button.d.ts +6 -2
  274. package/components/Button/Button.mixins/Button.mixins.js +1 -1
  275. package/components/Button/Button.mixins/Button.mixins.js.map +1 -1
  276. package/components/Button/ButtonIcon/ButtonIcon.js.map +1 -1
  277. package/components/Button/ButtonIcon.d.ts +3 -2
  278. package/components/Calendar/Calendar/Calendar.js +7 -6
  279. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  280. package/components/Checkbox/Checkbox/Checkbox.js +14 -5
  281. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  282. package/components/Checkbox/Checkbox.d.ts +6 -2
  283. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  284. package/components/ComboBox/ComboBox.d.ts +2 -1
  285. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +2 -1
  286. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  287. package/components/DateInput/DateFragmentsView/DateFragmentsView.js +4 -1
  288. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  289. package/components/DateInput/DateInput/DateInput.js +2 -1
  290. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  291. package/components/DateInput/DateInput.d.ts +2 -1
  292. package/components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js +10 -10
  293. package/components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js.map +1 -1
  294. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  295. package/components/DatePicker/DatePicker.d.ts +2 -1
  296. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  297. package/components/Dropdown/Dropdown.d.ts +3 -2
  298. package/components/FileUploader/FileUploader/FileUploader.js +8 -4
  299. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  300. package/components/FileUploader/FileUploader.d.ts +6 -2
  301. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  302. package/components/FxInput/FxInputRestoreBtn/FxInputRestoreBtn.js.map +1 -1
  303. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +3 -2
  304. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  305. package/components/Hint/Hint/Hint.js +5 -5
  306. package/components/Hint/Hint/Hint.js.map +1 -1
  307. package/components/Input/Input/Input.js +18 -11
  308. package/components/Input/Input/Input.js.map +1 -1
  309. package/components/Input/Input.d.ts +6 -2
  310. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
  311. package/components/Input/InputLayout/InputLayoutContext/InputLayoutContext.js.map +1 -1
  312. package/components/Input/InputLayout/InputLayoutContext.d.ts +2 -2
  313. package/components/Kebab/Kebab/Kebab.js +2 -1
  314. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  315. package/components/Kebab/Kebab.d.ts +2 -1
  316. package/components/Link/Link/Link.js +2 -1
  317. package/components/Link/Link/Link.js.map +1 -1
  318. package/components/Loader/Loader/Loader.js +9 -6
  319. package/components/Loader/Loader/Loader.js.map +1 -1
  320. package/components/MenuFooter/MenuFooter/MenuFooter.js +4 -0
  321. package/components/MenuFooter/MenuFooter/MenuFooter.js.map +1 -1
  322. package/components/MenuFooter/MenuFooter.d.ts +6 -2
  323. package/components/MenuHeader/MenuHeader/MenuHeader.js +4 -0
  324. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  325. package/components/MenuHeader/MenuHeader.d.ts +6 -2
  326. package/components/MenuItem/MenuItem/MenuItem.js +7 -2
  327. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  328. package/components/MenuItem/MenuItem.d.ts +6 -2
  329. package/components/Modal/Modal/Modal.js +5 -4
  330. package/components/Modal/Modal/Modal.js.map +1 -1
  331. package/components/Modal/ModalClose/ModalClose.js +2 -1
  332. package/components/Modal/ModalClose/ModalClose.js.map +1 -1
  333. package/components/Paging/NavigationHelper/NavigationHelper.js +2 -1
  334. package/components/Paging/NavigationHelper/NavigationHelper.js.map +1 -1
  335. package/components/Paging/Paging/Paging.js +10 -5
  336. package/components/Paging/Paging/Paging.js.map +1 -1
  337. package/components/PasswordInput/PasswordInput/PasswordInput.js +3 -2
  338. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  339. package/components/Radio/Radio/Radio.js +6 -1
  340. package/components/Radio/Radio/Radio.js.map +1 -1
  341. package/components/Radio/Radio.d.ts +6 -2
  342. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js +5 -6
  343. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js.map +1 -1
  344. package/components/ScrollContainer/ScrollBar/ScrollBar.js +7 -6
  345. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  346. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +2 -1
  347. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  348. package/components/Select/Select/Select.js +4 -3
  349. package/components/Select/Select/Select.js.map +1 -1
  350. package/components/Select/Select.d.ts +4 -3
  351. package/components/SidePage/SidePage/SidePage.js +8 -7
  352. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  353. package/components/SidePage/SidePageCloseButton/SidePageCloseButton.js +2 -1
  354. package/components/SidePage/SidePageCloseButton/SidePageCloseButton.js.map +1 -1
  355. package/components/SidePage/SidePageHeader/SidePageHeader.js +6 -4
  356. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  357. package/components/SidePage/SidePageHeader.d.ts +1 -0
  358. package/components/Spinner/SpinnerFallbackAnimation/SpinnerFallbackAnimation.js +5 -2
  359. package/components/Spinner/SpinnerFallbackAnimation/SpinnerFallbackAnimation.js.map +1 -1
  360. package/components/Sticky/Sticky/Sticky.js +4 -4
  361. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  362. package/components/Switcher/Switcher/Switcher.js +4 -0
  363. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  364. package/components/Switcher/Switcher.d.ts +7 -3
  365. package/components/Tabs/Indicator/Indicator.js +2 -1
  366. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  367. package/components/Tabs/Tab/Tab.js +6 -1
  368. package/components/Tabs/Tab/Tab.js.map +1 -1
  369. package/components/Tabs/Tab.d.ts +5 -1
  370. package/components/Tabs/Tab.styles/Tab.styles.js.map +1 -1
  371. package/components/Tabs/Tabs/Tabs.js +2 -1
  372. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  373. package/components/Tabs/Tabs.d.ts +3 -2
  374. package/components/Tabs/Tabs.styles/Tabs.styles.js.map +1 -1
  375. package/components/Tabs/TabsContext/TabsContext.js.map +1 -1
  376. package/components/Tabs/TabsContext.d.ts +3 -2
  377. package/components/Tabs/helpers/helpers.js +3 -0
  378. package/components/Tabs/helpers/helpers.js.map +1 -1
  379. package/components/Tabs/helpers.d.ts +5 -5
  380. package/components/Textarea/Textarea/Textarea.js +25 -13
  381. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  382. package/components/Textarea/Textarea.d.ts +6 -2
  383. package/components/Textarea/TextareaCounter/TextareaCounter.js +2 -3
  384. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  385. package/components/Textarea/TextareaCounter.d.ts +3 -2
  386. package/components/Textarea/TextareaHelpers/TextareaHelpers.js +6 -1
  387. package/components/Textarea/TextareaHelpers/TextareaHelpers.js.map +1 -1
  388. package/components/Textarea/TextareaHelpers.d.ts +1 -1
  389. package/components/Toast/Toast/Toast.js +3 -3
  390. package/components/Toast/Toast/Toast.js.map +1 -1
  391. package/components/Toast/ToastStatic/ToastStatic.js +4 -4
  392. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  393. package/components/Toggle/Toggle/Toggle.js +4 -0
  394. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  395. package/components/Toggle/Toggle.d.ts +6 -2
  396. package/components/TokenInput/TokenInput/TokenInput.js +11 -6
  397. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  398. package/components/Tooltip/Tooltip/Tooltip.js +5 -5
  399. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  400. package/hooks/useDrop/useDrop.js +3 -2
  401. package/hooks/useDrop/useDrop.js.map +1 -1
  402. package/index.d.ts +1 -1
  403. package/index.js +1 -0
  404. package/index.js.map +1 -1
  405. package/internal/CloseButtonIcon/CloseButtonIcon/CloseButtonIcon.js +2 -1
  406. package/internal/CloseButtonIcon/CloseButtonIcon/CloseButtonIcon.js.map +1 -1
  407. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  408. package/internal/CustomComboBox/ComboBoxMenu.d.ts +2 -1
  409. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +1 -1
  410. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  411. package/internal/CustomComboBox/ComboBoxView.d.ts +3 -2
  412. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +5 -4
  413. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  414. package/internal/CustomComboBox/CustomComboBox.d.ts +3 -2
  415. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +3 -2
  416. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
  417. package/internal/DateSelect/DateSelect/DateSelect.js +19 -20
  418. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  419. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +18 -17
  420. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  421. package/internal/DropdownContainer/DropdownContainer.d.ts +0 -1
  422. package/internal/DropdownContainer/getManualPosition/getManualPosition.js +4 -3
  423. package/internal/DropdownContainer/getManualPosition/getManualPosition.js.map +1 -1
  424. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +3 -2
  425. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  426. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +2 -2
  427. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFileStatusIcon/FileUploaderFileStatusIcon.js.map +1 -1
  428. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFileStatusIcon.d.ts +2 -2
  429. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  430. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +2 -2
  431. package/internal/FileUploaderControl/hooks/useFileUploaderSize/useFileUploaderSize.js.map +1 -1
  432. package/internal/FileUploaderControl/hooks/useFileUploaderSize.d.ts +2 -2
  433. package/internal/FocusTrap/FocusTrap/FocusTrap.js +8 -3
  434. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  435. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +25 -26
  436. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  437. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js +2 -1
  438. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  439. package/internal/InputLikeText/InputLikeText/InputLikeText.js +28 -19
  440. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  441. package/internal/InternalMenu/InternalMenu/InternalMenu.js +9 -9
  442. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  443. package/internal/Menu/Menu/Menu.js +8 -8
  444. package/internal/Menu/Menu/Menu.js.map +1 -1
  445. package/internal/MenuMessage/MenuMessage/MenuMessage.js.map +1 -1
  446. package/internal/MenuMessage/MenuMessage.d.ts +2 -2
  447. package/internal/Popup/Popup/Popup.js +11 -13
  448. package/internal/Popup/Popup/Popup.js.map +1 -1
  449. package/internal/Popup/PopupHelper/PopupHelper.js +8 -5
  450. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  451. package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -2
  452. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  453. package/internal/RenderContainer/RenderContainer/RenderContainer.js +17 -10
  454. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  455. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +2 -3
  456. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  457. package/internal/RenderLayer/RenderLayer/RenderLayer.js +10 -5
  458. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  459. package/internal/ThemePlayground/SizesGroup/SizesGroup.js.map +1 -1
  460. package/internal/ThemePlayground/SizesGroup.d.ts +2 -1
  461. package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
  462. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js +5 -2
  463. package/internal/ThemeShowcase/VariablesCollector/VariablesCollector.js.map +1 -1
  464. package/internal/ZIndex/ZIndex/ZIndex.js +2 -2
  465. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  466. package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js +2 -2
  467. package/internal/ZIndex/ZIndexStorage/ZIndexStorage.js.map +1 -1
  468. package/internal/themes/Theme2022/Theme2022.js +1 -1
  469. package/internal/themes/Theme2022/Theme2022.js.map +1 -1
  470. package/internal/themes/Theme2022.d.ts +1 -1
  471. package/internal/themes/Theme2022Dark/Theme2022Dark.js +1 -0
  472. package/internal/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
  473. package/internal/themes/Theme2022Dark.d.ts +1 -0
  474. package/lib/LayoutEvents/LayoutEvents.js +5 -4
  475. package/lib/LayoutEvents/LayoutEvents.js.map +1 -1
  476. package/lib/ModalStack/ModalStack.js +2 -2
  477. package/lib/ModalStack/ModalStack.js.map +1 -1
  478. package/lib/SSRSafe/SSRSafe.js +3 -35
  479. package/lib/SSRSafe/SSRSafe.js.map +1 -1
  480. package/lib/SSRSafe.d.ts +1 -6
  481. package/lib/Upgrades/Upgrades.js +3 -1
  482. package/lib/Upgrades/Upgrades.js.map +1 -1
  483. package/lib/Upgrades.d.ts +1 -0
  484. package/lib/animation/index/index.js +6 -3
  485. package/lib/animation/index/index.js.map +1 -1
  486. package/lib/client/client.js +7 -6
  487. package/lib/client/client.js.map +1 -1
  488. package/lib/client.d.ts +1 -7
  489. package/lib/dom/getScrollWidth/getScrollWidth.js +4 -5
  490. package/lib/dom/getScrollWidth/getScrollWidth.js.map +1 -1
  491. package/lib/dom/tabbableHelpers/tabbableHelpers.js +3 -2
  492. package/lib/dom/tabbableHelpers/tabbableHelpers.js.map +1 -1
  493. package/lib/dom/tabbableHelpers.d.ts +2 -1
  494. package/lib/events/MouseDrag/MouseDrag.js +15 -11
  495. package/lib/events/MouseDrag/MouseDrag.js.map +1 -1
  496. package/lib/events/fixClickFocusIE/fixClickFocusIE.js +3 -2
  497. package/lib/events/fixClickFocusIE/fixClickFocusIE.js.map +1 -1
  498. package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js +7 -2
  499. package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js.map +1 -1
  500. package/lib/events/keyListener/keyListener.js +9 -12
  501. package/lib/events/keyListener/keyListener.js.map +1 -1
  502. package/lib/events/keyboard/identifiers/identifiers.js +2 -1
  503. package/lib/events/keyboard/identifiers/identifiers.js.map +1 -1
  504. package/lib/listenFocusOutside/listenFocusOutside.js +18 -10
  505. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  506. package/lib/needsPolyfillPlaceholder/needsPolyfillPlaceholder.js +4 -3
  507. package/lib/needsPolyfillPlaceholder/needsPolyfillPlaceholder.js.map +1 -1
  508. package/lib/net/fetch/fetch.js +29 -21
  509. package/lib/net/fetch/fetch.js.map +1 -1
  510. package/lib/rootNode/getRootNode/getRootNode.js +5 -6
  511. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  512. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +5 -4
  513. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  514. package/lib/theming/Emotion/Emotion.js +6 -1
  515. package/lib/theming/Emotion/Emotion.js.map +1 -1
  516. package/lib/types/props/package.json +6 -0
  517. package/lib/types/props/props.js +1 -0
  518. package/lib/types/props/props.js.map +1 -0
  519. package/lib/types/props.d.ts +1 -0
  520. package/lib/utils/utils.js +4 -5
  521. package/lib/utils/utils.js.map +1 -1
  522. package/package.json +4 -4
  523. package/typings/global.d.ts +3 -4
package/CHANGELOG.md CHANGED
@@ -3,22 +3,58 @@
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
- # [4.17.0-next.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.17.0-next.0...@skbkontur/react-ui@4.17.0-next.1) (2023-10-13)
6
+ # [4.17.0-next.3](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.16.2...@skbkontur/react-ui@4.17.0-next.3) (2023-10-26)
7
7
 
8
8
 
9
9
  ### Bug Fixes
10
10
 
11
+ * **Button:** update disabled and hover styles ([#3272](https://github.com/skbkontur/retail-ui/issues/3272)) ([5653505](https://github.com/skbkontur/retail-ui/commit/56535052fb0b4edea30636b6b66cd0bd5fe8af63))
11
12
  * **Button:** update styles in disabled Button ([#3279](https://github.com/skbkontur/retail-ui/issues/3279)) ([80e2f91](https://github.com/skbkontur/retail-ui/commit/80e2f919d47a29c14c7fcd0d6612b22e9f4f1449))
12
13
  * **ComboBox:** fix mobile overlay not closing when using public methods ([#3268](https://github.com/skbkontur/retail-ui/issues/3268)) ([46ffefa](https://github.com/skbkontur/retail-ui/commit/46ffefad121c0525f502d169c5d0052bff49129e))
13
14
  * **ComboBox:** submit form on Enter if closed ([#3264](https://github.com/skbkontur/retail-ui/issues/3264)) ([3646b08](https://github.com/skbkontur/retail-ui/commit/3646b08bb6e4e5b05c54513301626ab52eb9a2f9))
14
- * **CurrencyInput:** remove `findDOMNode` console warning in `THEME_2022` ([#3278](https://github.com/skbkontur/retail-ui/issues/3278)) ([21a2a1f](https://github.com/skbkontur/retail-ui/commit/21a2a1f479d243746cf73b40f7300735600a464f))
15
- * **DateInput:** use `flushSync` in React@18 ([#3286](https://github.com/skbkontur/retail-ui/issues/3286)) ([69efd4d](https://github.com/skbkontur/retail-ui/commit/69efd4d6da9b6546e8bdfbba52fccf676ddea07f))
15
+ * **Paging:** disable forward button when current page is last ([#3273](https://github.com/skbkontur/retail-ui/issues/3273)) ([9b3a0b7](https://github.com/skbkontur/retail-ui/commit/9b3a0b74cafaa7753a62da43a8edaef30eae617c))
16
+ * **SidePage:** fix overlay when changing desktop->mobile->desktop ([#3292](https://github.com/skbkontur/retail-ui/issues/3292)) ([fa4ac39](https://github.com/skbkontur/retail-ui/commit/fa4ac399d41b3457346d3e3187d212bf92581347))
16
17
  * **Sticky:** fix width calc in fixed state on page resize ([#3285](https://github.com/skbkontur/retail-ui/issues/3285)) ([8d19d82](https://github.com/skbkontur/retail-ui/commit/8d19d82d2ac07c16e442e8dd0478603ba7e84fb6))
17
18
 
18
19
 
19
20
  ### Features
20
21
 
21
- * **Button:** add data-tid for spinner icon ([#3277](https://github.com/skbkontur/retail-ui/issues/3277)) ([88a2d15](https://github.com/skbkontur/retail-ui/commit/88a2d1502c537280434ed3004c77d9516e6971af))
22
+ * ability to set up window ([#3259](https://github.com/skbkontur/retail-ui/issues/3259)) ([f19378c](https://github.com/skbkontur/retail-ui/commit/f19378c9609f4f0867658480456b6b976bb3f2af))
23
+ * **Kebab/Hint/Toast:** remove Pin and update style ([#3274](https://github.com/skbkontur/retail-ui/issues/3274)) ([b248448](https://github.com/skbkontur/retail-ui/commit/b248448241ae75eeaf70d2137c6e8aca779c3edf))
24
+
25
+
26
+
27
+
28
+
29
+ # [4.17.0-next.2](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.16.1...@skbkontur/react-ui@4.17.0-next.2) (2023-10-16)
30
+
31
+
32
+ ### Bug Fixes
33
+
34
+ * **Button:** update disabled and hover styles ([#3272](https://github.com/skbkontur/retail-ui/issues/3272)) ([5653505](https://github.com/skbkontur/retail-ui/commit/56535052fb0b4edea30636b6b66cd0bd5fe8af63))
35
+ * **Button:** update styles in disabled Button ([#3279](https://github.com/skbkontur/retail-ui/issues/3279)) ([80e2f91](https://github.com/skbkontur/retail-ui/commit/80e2f919d47a29c14c7fcd0d6612b22e9f4f1449))
36
+ * **ComboBox:** fix mobile overlay not closing when using public methods ([#3268](https://github.com/skbkontur/retail-ui/issues/3268)) ([46ffefa](https://github.com/skbkontur/retail-ui/commit/46ffefad121c0525f502d169c5d0052bff49129e))
37
+ * **ComboBox:** submit form on Enter if closed ([#3264](https://github.com/skbkontur/retail-ui/issues/3264)) ([3646b08](https://github.com/skbkontur/retail-ui/commit/3646b08bb6e4e5b05c54513301626ab52eb9a2f9))
38
+ * **Paging:** disable forward button when current page is last ([#3273](https://github.com/skbkontur/retail-ui/issues/3273)) ([9b3a0b7](https://github.com/skbkontur/retail-ui/commit/9b3a0b74cafaa7753a62da43a8edaef30eae617c))
39
+ * **Sticky:** fix width calc in fixed state on page resize ([#3285](https://github.com/skbkontur/retail-ui/issues/3285)) ([8d19d82](https://github.com/skbkontur/retail-ui/commit/8d19d82d2ac07c16e442e8dd0478603ba7e84fb6))
40
+
41
+
42
+ ### Features
43
+
44
+ * **Kebab/Hint/Toast:** remove Pin and update style ([#3274](https://github.com/skbkontur/retail-ui/issues/3274)) ([b248448](https://github.com/skbkontur/retail-ui/commit/b248448241ae75eeaf70d2137c6e8aca779c3edf))
45
+
46
+
47
+
48
+
49
+
50
+ # [4.17.0-next.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.17.0-next.0...@skbkontur/react-ui@4.17.0-next.1) (2023-10-13)
51
+
52
+
53
+ ### Bug Fixes
54
+
55
+ * **ComboBox:** fix mobile overlay not closing when using public methods ([#3268](https://github.com/skbkontur/retail-ui/issues/3268)) ([46ffefa](https://github.com/skbkontur/retail-ui/commit/46ffefad121c0525f502d169c5d0052bff49129e))
56
+ * **ComboBox:** submit form on Enter if closed ([#3264](https://github.com/skbkontur/retail-ui/issues/3264)) ([3646b08](https://github.com/skbkontur/retail-ui/commit/3646b08bb6e4e5b05c54513301626ab52eb9a2f9))
57
+ * **Sticky:** fix width calc in fixed state on page resize ([#3285](https://github.com/skbkontur/retail-ui/issues/3285)) ([8d19d82](https://github.com/skbkontur/retail-ui/commit/8d19d82d2ac07c16e442e8dd0478603ba7e84fb6))
22
58
 
23
59
 
24
60
 
@@ -41,6 +77,33 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
41
77
 
42
78
 
43
79
 
80
+
81
+ ## [4.16.2](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.16.1...@skbkontur/react-ui@4.16.2) (2023-10-24)
82
+
83
+
84
+ ### Bug Fixes
85
+
86
+ * **Button:** enable linkHoverTextDecoration var for THEME_2022 ([#3290](https://github.com/skbkontur/retail-ui/issues/3290)) ([1beb6da](https://github.com/skbkontur/retail-ui/commit/1beb6da47b0d782a2f62c1612b26fe221128f5fc))
87
+ * **SidePage,Sticky:** fix max update depth error ([#3293](https://github.com/skbkontur/retail-ui/issues/3293)) ([950988f](https://github.com/skbkontur/retail-ui/commit/950988f9b3b612b1ac8f3a4f634bd3b001e28a9b))
88
+
89
+
90
+
91
+
92
+
93
+ ## [4.16.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.16.0...@skbkontur/react-ui@4.16.1) (2023-10-16)
94
+
95
+
96
+ ### Bug Fixes
97
+
98
+ * **Button:** fix icons styles on hover in disabled state ([#3281](https://github.com/skbkontur/retail-ui/issues/3281)) ([276e82d](https://github.com/skbkontur/retail-ui/commit/276e82d44ba483ef08ff26827150885ceaaff930))
99
+ * **CurrencyInput:** remove `findDOMNode` console warning in `THEME_2022` ([#3278](https://github.com/skbkontur/retail-ui/issues/3278)) ([21a2a1f](https://github.com/skbkontur/retail-ui/commit/21a2a1f479d243746cf73b40f7300735600a464f))
100
+ * **DateInput:** use `flushSync` in React@18 ([#3286](https://github.com/skbkontur/retail-ui/issues/3286)) ([69efd4d](https://github.com/skbkontur/retail-ui/commit/69efd4d6da9b6546e8bdfbba52fccf676ddea07f))
101
+ * **Button:** add data-tid for spinner icon ([#3277](https://github.com/skbkontur/retail-ui/issues/3277)) ([88a2d15](https://github.com/skbkontur/retail-ui/commit/88a2d1502c537280434ed3004c77d9516e6971af))
102
+
103
+
104
+
105
+
106
+
44
107
  # [4.16.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@4.16.0-next.10...@skbkontur/react-ui@4.16.0) (2023-09-21)
45
108
 
46
109
  ### Features
@@ -4,6 +4,7 @@ import { InputProps } from '../Input';
4
4
  import { DropdownContainerProps } from '../../internal/DropdownContainer';
5
5
  import { Nullable, Override } from '../../typings/utility-types';
6
6
  import { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';
7
+ import { SizeProp } from '../../lib/types/props';
7
8
  export interface AutocompleteProps extends CommonProps, Pick<DropdownContainerProps, 'menuPos'>, Pick<AriaAttributes, 'aria-label'>, Override<InputProps, {
8
9
  /** Функция отрисовки элемента меню */
9
10
  renderItem?: (item: string) => React.ReactNode;
@@ -26,7 +27,7 @@ export interface AutocompleteProps extends CommonProps, Pick<DropdownContainerPr
26
27
  /** onBlur */
27
28
  onBlur?: () => void;
28
29
  /** Размер инпута */
29
- size?: InputProps['size'];
30
+ size?: SizeProp;
30
31
  /** value */
31
32
  value: string;
32
33
  /**
@@ -23,6 +23,7 @@ var _decorator = require("../ResponsiveLayout/decorator");
23
23
  var _rootNode = require("../../lib/rootNode");
24
24
  var _getDOMRect = require("../../lib/dom/getDOMRect");
25
25
 
26
+
26
27
  var _Autocomplete = require("./Autocomplete.styles");
27
28
  var _locale = require("./locale");
28
29
  var _getAutocompleteTheme = require("./getAutocompleteTheme");var _excluded = ["onValueChange", "onKeyDown", "onFocus", "onBlur", "renderItem", "disablePortal", "hasShadow", "menuAlign", "menuMaxHeight", "preventWindowScroll", "source", "width", "mobileMenuHeaderText", "aria-label"];var _dec, _class, _class2, _temp;
@@ -1 +1 @@
1
- {"version":3,"sources":["Autocomplete.tsx"],"names":["match","pattern","items","Promise","resolve","lowerCasedPattern","toLowerCase","itemsMatchingPattern","filter","item","includes","renderItem","AutocompleteDataTids","root","menu","AutocompleteIds","Autocomplete","AutocompleteLocaleHelper","responsiveLayout","rootNode","state","selected","focused","isMobileOpened","opened","input","menuId","requestId","getProps","defaultProps","renderMain","props","isMobile","isMobileLayout","onValueChange","onKeyDown","onFocus","onBlur","_renderItem","disablePortal","hasShadow","menuAlign","menuMaxHeight","preventWindowScroll","source","width","theme","inputWidth","mobileMenuHeaderText","ariaLabel","rest","inputProps","handleValueChange","handleKeyDown","handleFocus","ref","refInput","handleBlur","handleClickOutside","styles","refRootSpan","renderMobileMenu","renderMenu","autoFocus","onKeyPress","handleKeyPressMobile","value","placeholder","locale","enterValue","handleCloseMobile","refMobilePopup","refMenu","mobilePopup","close","length","getItems","renderHints","map","i","handleMenuItemClick","size","fireChange","setState","e","key","event","blur","preventDefault","up","down","enter","getAnchor","el","span","rootSpan","focus","componentDidUpdate","prevProps","updateItems","render","setRootNode","notFound","updateValue","menuWidth","menuPos","menuProps","maxHeight","handleItemClick","index","button","choose","trim","promise","expectingId","then","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","func","oneOfType","array"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes, KeyboardEvent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { MenuMessage } from '../../internal/MenuMessage';\nimport { locale } from '../../lib/locale/decorators';\nimport { getRandomID, isNullable } from '../../lib/utils';\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, DropdownContainerProps } 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 { MobilePopup } from '../../internal/MobilePopup';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './Autocomplete.styles';\nimport { AutocompleteLocale, AutocompleteLocaleHelper } from './locale';\nimport { getAutocompleteTheme } from './getAutocompleteTheme';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n const lowerCasedPattern = pattern.toLowerCase();\n const itemsMatchingPattern = items.filter((item) => {\n return item.toLowerCase().includes(lowerCasedPattern);\n });\n\n return Promise.resolve(itemsMatchingPattern);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends CommonProps,\n Pick<DropdownContainerProps, 'menuPos'>,\n Pick<AriaAttributes, 'aria-label'>,\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 */\n mobileMenuHeaderText?: string;\n }\n > {}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n isMobileOpened: boolean;\n}\n\nexport const AutocompleteDataTids = {\n root: 'Autocomplete__root',\n menu: 'Autocomplete__menu',\n} as const;\n\nexport const AutocompleteIds = {\n menu: AutocompleteDataTids.menu,\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n AutocompleteProps,\n 'renderItem' | 'size' | 'disablePortal' | 'hasShadow' | 'menuMaxHeight' | 'menuAlign' | 'preventWindowScroll'\n >\n>;\n\n/**\n * Стандартный инпут с подсказками.\n *\n * Все свойства передаются во внутренний *Input*.\n */\n@responsiveLayout\n@rootNode\n@locale('Autocomplete', AutocompleteLocaleHelper)\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: 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 isMobileOpened: false,\n };\n\n private theme!: Theme;\n private readonly locale!: AutocompleteLocale;\n private isMobileLayout!: boolean;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private menuId = AutocompleteIds.menu + getRandomID();\n private rootSpan: Nullable<HTMLSpanElement>;\n private mobilePopup: Nullable<MobilePopup>;\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 = getAutocompleteTheme(theme);\n return (\n <ThemeContext.Provider value={this.theme}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>) => {\n const { focused } = this.state;\n\n const isMobile = this.isMobileLayout;\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 mobileMenuHeaderText,\n 'aria-label': ariaLabel,\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\n data-tid={AutocompleteDataTids.root}\n className={styles.root(this.theme)}\n style={{ width }}\n ref={this.refRootSpan}\n >\n <Input aria-label={ariaLabel} aria-controls={this.menuId} {...inputProps} />\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderHints(): React.ReactNode {\n const items = this.state.items;\n\n if (!this.props.value) {\n return <MenuMessage>{this.locale.enterValue}</MenuMessage>;\n }\n\n if (items?.length === 0 && this.props.value) {\n return <MenuMessage>{this.locale.notFound}</MenuMessage>;\n }\n\n if (isNullable(items) && this.props.value) {\n return <MenuMessage>{this.locale.updateValue}</MenuMessage>;\n }\n\n return null;\n }\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const { menuMaxHeight, hasShadow, menuWidth, width, preventWindowScroll, menuAlign, disablePortal, menuPos } =\n this.getProps();\n const menuProps = {\n ref: this.refMenu,\n maxHeight: menuMaxHeight,\n hasShadow,\n width: menuWidth || (width && getDOMRect(this.rootSpan).width),\n preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <DropdownContainer\n id={this.menuId}\n data-tid={AutocompleteDataTids.menu}\n getParent={this.getAnchor}\n align={menuAlign}\n disablePortal={disablePortal}\n menuPos={menuPos}\n >\n <Menu {...menuProps}>{this.getItems()}</Menu>\n </DropdownContainer>\n );\n }\n\n private renderMobileMenu = () => {\n const inputProps: InputProps = {\n autoFocus: true,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyPress: this.handleKeyPressMobile,\n value: this.props.value,\n placeholder: this.locale.enterValue,\n };\n\n const items = this.state.items;\n\n return (\n <MobilePopup\n id={this.menuId}\n headerChildComponent={<Input {...inputProps} />}\n caption={this.props.mobileMenuHeaderText}\n opened={this.state.isMobileOpened}\n onCloseRequest={this.handleCloseMobile}\n ref={this.refMobilePopup}\n >\n <Menu ref={this.refMenu} onItemClick={this.mobilePopup?.close} disableScrollContainer maxHeight={'auto'}>\n {items && items.length > 0 && this.getItems()}\n {this.renderHints()}\n </Menu>\n </MobilePopup>\n );\n };\n\n private getItems = () => {\n const items = this.state.items;\n const isMobile = this.isMobileLayout;\n\n return items\n ? items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i} isMobile={isMobile} size={this.props.size}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })\n : null;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n this.handleBlur();\n };\n\n private handleKeyPressMobile = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.mobilePopup?.close();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.isMobileLayout) {\n this.setState({ isMobileOpened: true });\n }\n\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 this.requestId += 1;\n const expectingId = this.requestId;\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 private refMobilePopup = (mobilePopup: MobilePopup | null) => {\n this.mobilePopup = mobilePopup;\n };\n}\n"]}
1
+ {"version":3,"sources":["Autocomplete.tsx"],"names":["match","pattern","items","Promise","resolve","lowerCasedPattern","toLowerCase","itemsMatchingPattern","filter","item","includes","renderItem","AutocompleteDataTids","root","menu","AutocompleteIds","Autocomplete","AutocompleteLocaleHelper","responsiveLayout","rootNode","state","selected","focused","isMobileOpened","opened","input","menuId","requestId","getProps","defaultProps","renderMain","props","isMobile","isMobileLayout","onValueChange","onKeyDown","onFocus","onBlur","_renderItem","disablePortal","hasShadow","menuAlign","menuMaxHeight","preventWindowScroll","source","width","theme","inputWidth","mobileMenuHeaderText","ariaLabel","rest","inputProps","handleValueChange","handleKeyDown","handleFocus","ref","refInput","handleBlur","handleClickOutside","styles","refRootSpan","renderMobileMenu","renderMenu","autoFocus","onKeyPress","handleKeyPressMobile","value","placeholder","locale","enterValue","handleCloseMobile","refMobilePopup","refMenu","mobilePopup","close","length","getItems","renderHints","map","i","handleMenuItemClick","size","fireChange","setState","e","key","event","blur","preventDefault","up","down","enter","getAnchor","el","span","rootSpan","focus","componentDidUpdate","prevProps","updateItems","render","setRootNode","notFound","updateValue","menuWidth","menuPos","menuProps","maxHeight","handleItemClick","index","button","choose","trim","promise","expectingId","then","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","func","oneOfType","array"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes, KeyboardEvent } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { MenuMessage } from '../../internal/MenuMessage';\nimport { locale } from '../../lib/locale/decorators';\nimport { getRandomID, isNullable } from '../../lib/utils';\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, DropdownContainerProps } 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 { MobilePopup } from '../../internal/MobilePopup';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles } from './Autocomplete.styles';\nimport { AutocompleteLocale, AutocompleteLocaleHelper } from './locale';\nimport { getAutocompleteTheme } from './getAutocompleteTheme';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n const lowerCasedPattern = pattern.toLowerCase();\n const itemsMatchingPattern = items.filter((item) => {\n return item.toLowerCase().includes(lowerCasedPattern);\n });\n\n return Promise.resolve(itemsMatchingPattern);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends CommonProps,\n Pick<DropdownContainerProps, 'menuPos'>,\n Pick<AriaAttributes, 'aria-label'>,\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?: SizeProp;\n /** value */\n value: string;\n /**\n * Текст заголовка выпадающего меню в мобильной версии\n */\n mobileMenuHeaderText?: string;\n }\n > {}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n isMobileOpened: boolean;\n}\n\nexport const AutocompleteDataTids = {\n root: 'Autocomplete__root',\n menu: 'Autocomplete__menu',\n} as const;\n\nexport const AutocompleteIds = {\n menu: AutocompleteDataTids.menu,\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n AutocompleteProps,\n 'renderItem' | 'size' | 'disablePortal' | 'hasShadow' | 'menuMaxHeight' | 'menuAlign' | 'preventWindowScroll'\n >\n>;\n\n/**\n * Стандартный инпут с подсказками.\n *\n * Все свойства передаются во внутренний *Input*.\n */\n@responsiveLayout\n@rootNode\n@locale('Autocomplete', AutocompleteLocaleHelper)\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: 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 isMobileOpened: false,\n };\n\n private theme!: Theme;\n private readonly locale!: AutocompleteLocale;\n private isMobileLayout!: boolean;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private menuId = AutocompleteIds.menu + getRandomID();\n private rootSpan: Nullable<HTMLSpanElement>;\n private mobilePopup: Nullable<MobilePopup>;\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 = getAutocompleteTheme(theme);\n return (\n <ThemeContext.Provider value={this.theme}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>) => {\n const { focused } = this.state;\n\n const isMobile = this.isMobileLayout;\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 mobileMenuHeaderText,\n 'aria-label': ariaLabel,\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\n data-tid={AutocompleteDataTids.root}\n className={styles.root(this.theme)}\n style={{ width }}\n ref={this.refRootSpan}\n >\n <Input aria-label={ariaLabel} aria-controls={this.menuId} {...inputProps} />\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderHints(): React.ReactNode {\n const items = this.state.items;\n\n if (!this.props.value) {\n return <MenuMessage>{this.locale.enterValue}</MenuMessage>;\n }\n\n if (items?.length === 0 && this.props.value) {\n return <MenuMessage>{this.locale.notFound}</MenuMessage>;\n }\n\n if (isNullable(items) && this.props.value) {\n return <MenuMessage>{this.locale.updateValue}</MenuMessage>;\n }\n\n return null;\n }\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const { menuMaxHeight, hasShadow, menuWidth, width, preventWindowScroll, menuAlign, disablePortal, menuPos } =\n this.getProps();\n const menuProps = {\n ref: this.refMenu,\n maxHeight: menuMaxHeight,\n hasShadow,\n width: menuWidth || (width && getDOMRect(this.rootSpan).width),\n preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <DropdownContainer\n id={this.menuId}\n data-tid={AutocompleteDataTids.menu}\n getParent={this.getAnchor}\n align={menuAlign}\n disablePortal={disablePortal}\n menuPos={menuPos}\n >\n <Menu {...menuProps}>{this.getItems()}</Menu>\n </DropdownContainer>\n );\n }\n\n private renderMobileMenu = () => {\n const inputProps: InputProps = {\n autoFocus: true,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyPress: this.handleKeyPressMobile,\n value: this.props.value,\n placeholder: this.locale.enterValue,\n };\n\n const items = this.state.items;\n\n return (\n <MobilePopup\n id={this.menuId}\n headerChildComponent={<Input {...inputProps} />}\n caption={this.props.mobileMenuHeaderText}\n opened={this.state.isMobileOpened}\n onCloseRequest={this.handleCloseMobile}\n ref={this.refMobilePopup}\n >\n <Menu ref={this.refMenu} onItemClick={this.mobilePopup?.close} disableScrollContainer maxHeight={'auto'}>\n {items && items.length > 0 && this.getItems()}\n {this.renderHints()}\n </Menu>\n </MobilePopup>\n );\n };\n\n private getItems = () => {\n const items = this.state.items;\n const isMobile = this.isMobileLayout;\n\n return items\n ? items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i} isMobile={isMobile} size={this.props.size}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })\n : null;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n this.handleBlur();\n };\n\n private handleKeyPressMobile = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.mobilePopup?.close();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.isMobileLayout) {\n this.setState({ isMobileOpened: true });\n }\n\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 this.requestId += 1;\n const expectingId = this.requestId;\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 private refMobilePopup = (mobilePopup: MobilePopup | null) => {\n this.mobilePopup = mobilePopup;\n };\n}\n"]}
@@ -2,7 +2,11 @@ import React, { AriaAttributes, HTMLAttributes } from 'react';
2
2
  import { HTMLProps } from '../../typings/html';
3
3
  import { ThemeIn } from '../../lib/theming/Theme';
4
4
  import { CommonProps } from '../../internal/CommonWrapper';
5
- export declare type ButtonSize = 'small' | 'medium' | 'large';
5
+ import { SizeProp } from '../../lib/types/props';
6
+ /**
7
+ * @deprecated use SizeProp
8
+ */
9
+ export declare type ButtonSize = SizeProp;
6
10
  export declare type ButtonType = 'button' | 'submit' | 'reset';
7
11
  export declare type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';
8
12
  export interface ButtonProps extends CommonProps, Pick<AriaAttributes, 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'>, Pick<HTMLAttributes<unknown>, 'role'>, Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {
@@ -92,7 +96,7 @@ export interface ButtonProps extends CommonProps, Pick<AriaAttributes, 'aria-has
92
96
  *
93
97
  * **Допустимые значения**: `"small"`, `"medium"`, `"large"`.
94
98
  */
95
- size?: ButtonSize;
99
+ size?: SizeProp;
96
100
  /**
97
101
  * HTML-атрибут `type`.
98
102
  */
@@ -1,4 +1,5 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.isButton = exports.ButtonDataTids = 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
+ var _globalObject = require("@skbkontur/global-object");
2
3
 
3
4
 
4
5
  var _utils = require("../../lib/utils");
@@ -16,6 +17,7 @@ var _Link = require("../Link");
16
17
  var _Spinner = require("../Spinner");
17
18
  var _LoadingIcon = require("../../internal/icons2022/LoadingIcon");
18
19
 
20
+
19
21
  var _Button = require("./Button.styles");
20
22
  var _ButtonIcon = require("./ButtonIcon");
21
23
  var _ButtonArrow = require("./ButtonArrow");
@@ -181,6 +183,9 @@ var _getInnerLinkTheme = require("./getInnerLinkTheme");var _class, _class2, _te
181
183
 
182
184
 
183
185
 
186
+
187
+
188
+
184
189
 
185
190
 
186
191
 
@@ -539,7 +544,7 @@ Button = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
539
544
  if (!_this.props.disabled && !_this.props.disableFocus) {
540
545
  // focus event fires before keyDown eventlistener
541
546
  // so we should check tabPressed in async way
542
- requestAnimationFrame(function () {
547
+ _globalObject.globalObject.requestAnimationFrame == null ? void 0 : _globalObject.globalObject.requestAnimationFrame(function () {
543
548
  if (_keyListener.keyListener.isTabPressed) {
544
549
  _this.setState({ focusedByTab: true });
545
550
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["Button.tsx"],"names":["ButtonDataTids","root","spinner","Button","rootNode","getProps","defaultProps","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","ThemeFactory","create","renderMain","corners","active","borderless","checked","error","warning","narrow","icon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onMouseDown","onMouseUp","onKeyDown","onClick","onClickCapture","width","children","ariaDescribedby","ariaHasPopup","ariaControls","ariaLabel","ariaChecked","ariaExpanded","role","use","type","size","sizeClass","getSizeClassName","isFocused","isLink","_isTheme2022","Boolean","wrapClassNameWithArrow","rootClassNameWithArrow","arrowNode","isUseStateWithoutOutlineInDisabledState","includes","rootClassName","trueDisabled","cx","styles","noPadding","noRightPadding","disabledWithoutOutline","checkedDisabled","checkedDisabled2022","borderless2022","activeStyles","checked2022","checkedFocused","simulatedPress","rootProps","className","style","textAlign","tabIndex","title","wrapProps","wrap","getSizeWrapClassName","innerShadowNode","globalClasses","innerShadow","outlineNode","isDisabled2022","zIndex","undefined","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","iconNode","loadingNode","loadingIcon","link","linkLineHeight","isSafari","linkLineHeightSafariFallback","linkFocus","linkDisabled","Object","assign","wrapLink","captionNode","caption","captionTranslated","captionLink","captionDisabled","text","visibilityHidden","renderIcon2022","setRootNode","sizes","React","cloneElement","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeLargeWithIcon","sizeLargeWithIconWithoutText","sizeMedium","sizeMediumIE11","sizeMediumWithIcon","sizeMediumWithIconWithoutText","sizeSmall","sizeSmallIE11","sizeSmallWithIcon","sizeSmallWithIconWithoutText","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\n\nimport { HTMLProps } from '../../typings/html';\nimport { isKonturIcon, isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Link } from '../Link';\nimport { Spinner } from '../Spinner';\nimport { LoadingIcon } from '../../internal/icons2022/LoadingIcon';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { ButtonIcon, getButtonIconSizes } from './ButtonIcon';\nimport { useButtonArrow } from './ButtonArrow';\nimport { getInnerLinkTheme } from './getInnerLinkTheme';\n\nexport type ButtonSize = 'small' | 'medium' | 'large';\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';\n\nexport interface ButtonProps\n extends CommonProps,\n Pick<\n AriaAttributes,\n 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'\n >,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {\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?: React.CSSProperties;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\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\"`, `\"text\"`, `\"backless\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport const ButtonDataTids = {\n root: 'Button__root',\n spinner: 'Button__spinner',\n} as const;\n\ntype DefaultProps = Required<Pick<ButtonProps, 'use' | 'size' | 'type'>>;\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n size: 'small',\n type: 'button',\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\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 = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onKeyDown,\n onClick,\n onClickCapture,\n width,\n children,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n role,\n } = this.props;\n const { use, type, size } = this.getProps();\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const _isTheme2022 = isTheme2022(this.theme);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [wrapClassNameWithArrow, rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused) },\n this.theme,\n );\n const isUseStateWithoutOutlineInDisabledState = !['default', 'backless'].includes(use);\n let rootClassName = '';\n if (_isTheme2022) {\n const trueDisabled = disabled || loading;\n rootClassName = cx(\n styles.root(this.theme),\n styles[use](this.theme),\n sizeClass,\n narrow && styles.narrow(),\n _noPadding && styles.noPadding(),\n _noRightPadding && styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(trueDisabled\n ? [\n styles.disabled(this.theme),\n isUseStateWithoutOutlineInDisabledState && styles.disabledWithoutOutline(this.theme),\n checked && styles.checkedDisabled(this.theme),\n checked && styles.checkedDisabled2022(this.theme),\n borderless && styles.borderless2022(),\n ]\n : [\n active && !checked && activeStyles[use](this.theme),\n isFocused && styles.focus(this.theme),\n checked && styles.checked2022(this.theme),\n checked && isFocused && styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && styles.borderless2022(),\n ]),\n );\n } else {\n rootClassName = cx({\n [styles.root(this.theme)]: true,\n [styles.simulatedPress()]: 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 }\n\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,\n role,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n disabled: disabled || loading,\n onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onClickCapture,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap(this.theme)]: true,\n [wrapClassNameWithArrow]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const innerShadowNode = _isTheme2022 ? null : <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n const isDisabled2022 = _isTheme2022 && (disabled || loading);\n if ((!isFocused || isLink) && !isDisabled2022) {\n outlineNode = (\n <div\n style={{ zIndex: _isTheme2022 && isLink ? -1 : undefined }}\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 const iconNode = icon && (\n <ButtonIcon\n icon={icon}\n size={size}\n hasChildren={Boolean(children)}\n disabled={disabled || false}\n loading={loading || false}\n use={use}\n />\n );\n let loadingNode = null;\n if (loading && !icon) {\n const loadingIcon = _isTheme2022 ? <LoadingIcon size={size} /> : <Spinner caption={null} dimmed type=\"mini\" />;\n loadingNode = (\n <div data-tid={ButtonDataTids.spinner} className={styles.loading()}>\n {loadingIcon}\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.linkLineHeight()]: !isSafari || (isSafari && !_isTheme2022),\n [styles.linkLineHeightSafariFallback()]: isSafari && _isTheme2022,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n }\n\n let captionNode = (\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: (active || checked) && !loading && !_isTheme2022,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {iconNode}\n <span\n className={cx(globalClasses.text, {\n [styles.visibilityHidden()]: !!loadingNode,\n })}\n >\n {children}\n </span>\n </div>\n );\n if (_isTheme2022 && isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n <Link focused={isFocused} disabled={disabled} icon={this.renderIcon2022(icon)} as=\"span\" tabIndex={-1}>\n {children}\n </Link>\n </ThemeContext.Provider>\n );\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button data-tid={ButtonDataTids.root} ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private renderIcon2022(icon: React.ReactElement | undefined) {\n if (icon && isKonturIcon(icon)) {\n const sizes = getButtonIconSizes(this.theme);\n return React.cloneElement(icon, { size: icon.props.size ?? sizes[this.getProps().size] });\n }\n\n return icon;\n }\n\n private getSizeClassName() {\n const _isTheme2022 = isTheme2022(this.theme);\n switch (this.getProps().size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), {\n [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeLargeWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeLargeWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), {\n [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeMediumWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeMediumWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), {\n [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeSmallWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeSmallWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(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"]}
1
+ {"version":3,"sources":["Button.tsx"],"names":["ButtonDataTids","root","spinner","Button","rootNode","getProps","defaultProps","state","focusedByTab","node","handleFocus","e","props","disabled","disableFocus","globalObject","requestAnimationFrame","keyListener","isTabPressed","setState","onFocus","handleBlur","onBlur","_ref","componentDidMount","autoFocus","focus","getDerivedStateFromProps","loading","blur","render","theme","ThemeFactory","create","renderMain","corners","active","borderless","checked","error","warning","narrow","icon","_noPadding","_noRightPadding","visuallyFocused","align","onMouseEnter","onMouseLeave","onMouseOver","onMouseDown","onMouseUp","onKeyDown","onClick","onClickCapture","width","children","ariaDescribedby","ariaHasPopup","ariaControls","ariaLabel","ariaChecked","ariaExpanded","role","use","type","size","sizeClass","getSizeClassName","isFocused","isLink","_isTheme2022","Boolean","wrapClassNameWithArrow","rootClassNameWithArrow","arrowNode","isUseStateWithoutOutlineInDisabledState","includes","rootClassName","trueDisabled","cx","styles","noPadding","noRightPadding","disabledWithoutOutline","checkedDisabled","checkedDisabled2022","borderless2022","activeStyles","checked2022","checkedFocused","simulatedPress","rootProps","className","style","textAlign","tabIndex","title","wrapProps","wrap","getSizeWrapClassName","innerShadowNode","globalClasses","innerShadow","outlineNode","isDisabled2022","zIndex","undefined","outline","outlineWarning","outlineError","outlineLink","outlineLinkWarning","outlineLinkError","iconNode","loadingNode","loadingIcon","link","linkLineHeight","isSafari","linkLineHeightSafariFallback","linkFocus","linkDisabled","Object","assign","wrapLink","captionNode","caption","captionTranslated","captionLink","captionDisabled","text","visibilityHidden","renderIcon2022","setRootNode","sizes","React","cloneElement","sizeLarge","sizeLargeIE11","isIE11","isEdge","sizeLargeWithIcon","sizeLargeWithIconWithoutText","sizeMedium","sizeMediumIE11","sizeMediumWithIcon","sizeMediumWithIconWithoutText","sizeSmall","sizeSmallIE11","sizeSmallWithIcon","sizeSmallWithIconWithoutText","wrapLarge","wrapMedium","wrapSmall","Component","__KONTUR_REACT_UI__","__BUTTON__","isButton"],"mappings":"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","sourcesContent":["import React, { AriaAttributes, HTMLAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { HTMLProps } from '../../typings/html';\nimport { isKonturIcon, isReactUIComponent } from '../../lib/utils';\nimport { isIE11, isEdge, isSafari } from '../../lib/client';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { Link } from '../Link';\nimport { Spinner } from '../Spinner';\nimport { LoadingIcon } from '../../internal/icons2022/LoadingIcon';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles, activeStyles, globalClasses } from './Button.styles';\nimport { ButtonIcon, getButtonIconSizes } from './ButtonIcon';\nimport { useButtonArrow } from './ButtonArrow';\nimport { getInnerLinkTheme } from './getInnerLinkTheme';\n\n/**\n * @deprecated use SizeProp\n */\nexport type ButtonSize = SizeProp;\nexport type ButtonType = 'button' | 'submit' | 'reset';\nexport type ButtonUse = 'default' | 'primary' | 'success' | 'danger' | 'pay' | 'link' | 'text' | 'backless';\n\nexport interface ButtonProps\n extends CommonProps,\n Pick<\n AriaAttributes,\n 'aria-haspopup' | 'aria-describedby' | 'aria-controls' | 'aria-label' | 'aria-checked' | 'aria-expanded'\n >,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<HTMLProps['button'], 'onClickCapture' | 'onMouseUp' | 'onMouseDown'> {\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?: React.CSSProperties;\n\n /**\n * Отключенное состояние кнопки.\n */\n disabled?: boolean;\n\n /** @ignore */\n disableFocus?: boolean;\n\n /**\n * Состояние валидации при ошибке.\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?: SizeProp;\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\"`, `\"text\"`, `\"backless\"`.\n */\n use?: ButtonUse;\n\n /** @ignore */\n visuallyFocused?: boolean;\n\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n\n /**\n * CSS-свойство `width`.\n */\n width?: number | string;\n\n /**\n * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n}\n\nexport interface ButtonState {\n focusedByTab: boolean;\n}\n\nexport const ButtonDataTids = {\n root: 'Button__root',\n spinner: 'Button__spinner',\n} as const;\n\ntype DefaultProps = Required<Pick<ButtonProps, 'use' | 'size' | 'type'>>;\n\n@rootNode\nexport class Button extends React.Component<ButtonProps, ButtonState> {\n public static __KONTUR_REACT_UI__ = 'Button';\n public static __BUTTON__ = true;\n\n public static defaultProps: DefaultProps = {\n use: 'default',\n size: 'small',\n type: 'button',\n };\n\n private getProps = createPropsGetter(Button.defaultProps);\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 = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, theme) : theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const {\n corners,\n active,\n disabled,\n borderless,\n checked,\n error,\n warning,\n loading,\n narrow,\n icon,\n _noPadding,\n _noRightPadding,\n visuallyFocused,\n align,\n disableFocus,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onKeyDown,\n onClick,\n onClickCapture,\n width,\n children,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n role,\n } = this.props;\n const { use, type, size } = this.getProps();\n const sizeClass = this.getSizeClassName();\n\n const isFocused = this.state.focusedByTab || visuallyFocused;\n const isLink = use === 'link';\n const _isTheme2022 = isTheme2022(this.theme);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const [wrapClassNameWithArrow, rootClassNameWithArrow, arrowNode] = useButtonArrow(\n { ...this.props, isFocused: Boolean(isFocused) },\n this.theme,\n );\n const isUseStateWithoutOutlineInDisabledState = !['default', 'backless'].includes(use);\n let rootClassName = '';\n if (_isTheme2022) {\n const trueDisabled = disabled || loading;\n rootClassName = cx(\n styles.root(this.theme),\n styles[use](this.theme),\n sizeClass,\n narrow && styles.narrow(),\n _noPadding && styles.noPadding(),\n _noRightPadding && styles.noRightPadding(),\n rootClassNameWithArrow,\n ...(trueDisabled\n ? [\n styles.disabled(this.theme),\n isUseStateWithoutOutlineInDisabledState && styles.disabledWithoutOutline(this.theme),\n checked && styles.checkedDisabled(this.theme),\n checked && styles.checkedDisabled2022(this.theme),\n borderless && styles.borderless2022(),\n ]\n : [\n active && !checked && activeStyles[use](this.theme),\n isFocused && styles.focus(this.theme),\n checked && styles.checked2022(this.theme),\n checked && isFocused && styles.checkedFocused(this.theme),\n borderless && !checked && !isFocused && styles.borderless2022(),\n ]),\n );\n } else {\n rootClassName = cx({\n [styles.root(this.theme)]: true,\n [styles.simulatedPress()]: 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 }\n\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,\n role,\n 'aria-describedby': ariaDescribedby,\n 'aria-haspopup': ariaHasPopup,\n 'aria-controls': ariaControls,\n 'aria-label': ariaLabel,\n 'aria-checked': ariaChecked,\n 'aria-expanded': ariaExpanded,\n className: rootClassName,\n style: {\n textAlign: align,\n ...corners,\n },\n disabled: disabled || loading,\n onClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyDown,\n onMouseEnter,\n onMouseLeave,\n onMouseOver,\n onMouseDown,\n onMouseUp,\n onClickCapture,\n tabIndex: disableFocus ? -1 : 0,\n title: this.props.title,\n };\n\n const wrapProps = {\n className: cx({\n [styles.wrap(this.theme)]: true,\n [wrapClassNameWithArrow]: true,\n [this.getSizeWrapClassName()]: true,\n }),\n style: {\n width,\n },\n };\n\n const innerShadowNode = _isTheme2022 ? null : <div className={globalClasses.innerShadow} />;\n\n let outlineNode = null;\n const isDisabled2022 = _isTheme2022 && (disabled || loading);\n if ((!isFocused || isLink) && !isDisabled2022) {\n outlineNode = (\n <div\n style={{ zIndex: _isTheme2022 && isLink ? -1 : undefined }}\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 const iconNode = icon && (\n <ButtonIcon\n icon={icon}\n size={size}\n hasChildren={Boolean(children)}\n disabled={disabled || false}\n loading={loading || false}\n use={use}\n />\n );\n let loadingNode = null;\n if (loading && !icon) {\n const loadingIcon = _isTheme2022 ? <LoadingIcon size={size} /> : <Spinner caption={null} dimmed type=\"mini\" />;\n loadingNode = (\n <div data-tid={ButtonDataTids.spinner} className={styles.loading()}>\n {loadingIcon}\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.linkLineHeight()]: !isSafari || (isSafari && !_isTheme2022),\n [styles.linkLineHeightSafariFallback()]: isSafari && _isTheme2022,\n [styles.linkFocus(this.theme)]: isFocused,\n [styles.linkDisabled(this.theme)]: disabled || loading,\n });\n Object.assign(wrapProps, {\n className: cx(styles.wrap(this.theme), styles.wrapLink()),\n style: { width: wrapProps.style.width },\n });\n rootProps.style.textAlign = undefined;\n }\n\n let captionNode = (\n <div\n className={cx(styles.caption(), globalClasses.caption, {\n [styles.captionTranslated()]: (active || checked) && !loading && !_isTheme2022,\n [styles.captionLink()]: isLink,\n [styles.captionDisabled()]: !checked && disabled,\n })}\n >\n {loadingNode}\n {iconNode}\n <span\n className={cx(globalClasses.text, {\n [styles.visibilityHidden()]: !!loadingNode,\n })}\n >\n {children}\n </span>\n </div>\n );\n if (_isTheme2022 && isLink && !loading) {\n captionNode = (\n <ThemeContext.Provider value={getInnerLinkTheme(this.theme)}>\n <Link focused={isFocused} disabled={disabled} icon={this.renderIcon2022(icon)} as=\"span\" tabIndex={-1}>\n {children}\n </Link>\n </ThemeContext.Provider>\n );\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <span {...wrapProps}>\n <button data-tid={ButtonDataTids.root} ref={this._ref} {...rootProps}>\n {innerShadowNode}\n {outlineNode}\n {arrowNode}\n {captionNode}\n </button>\n </span>\n </CommonWrapper>\n );\n }\n\n private renderIcon2022(icon: React.ReactElement | undefined) {\n if (icon && isKonturIcon(icon)) {\n const sizes = getButtonIconSizes(this.theme);\n return React.cloneElement(icon, { size: icon.props.size ?? sizes[this.getProps().size] });\n }\n\n return icon;\n }\n\n private getSizeClassName() {\n const _isTheme2022 = isTheme2022(this.theme);\n switch (this.getProps().size) {\n case 'large':\n return cx(styles.sizeLarge(this.theme), {\n [styles.sizeLargeIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeLargeWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeLargeWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'medium':\n return cx(styles.sizeMedium(this.theme), {\n [styles.sizeMediumIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeMediumWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeMediumWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n case 'small':\n default:\n return cx(styles.sizeSmall(this.theme), {\n [styles.sizeSmallIE11(this.theme)]: isIE11 || isEdge,\n [styles.sizeSmallWithIcon(this.theme)]: !!this.props.icon,\n [styles.sizeSmallWithIconWithoutText(this.theme)]: _isTheme2022 && !!this.props.icon && !this.props.children,\n });\n }\n }\n\n private getSizeWrapClassName() {\n switch (this.getProps().size) {\n case 'large':\n return styles.wrapLarge(this.theme);\n case 'medium':\n return styles.wrapMedium(this.theme);\n case 'small':\n default:\n return styles.wrapSmall(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 globalObject.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"]}
@@ -38,7 +38,7 @@ borderBottomColor,
38
38
  borderWidth)
39
39
  {
40
40
  var hasGradient = btnBackgroundStart !== btnBackgroundEnd;
41
- return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n background-color: ", ";\n background-image: ", ";\n color: ", ";\n box-shadow: 0 0 0 ", " ", "", ";\n\n .", " {\n box-shadow: ", " 0 0 0 ", ";\n }\n\n :hover,\n :enabled {\n .", " svg,\n .", " svg {\n color: ", ";\n }\n }\n "])),
41
+ return (0, _Emotion.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["\n background-color: ", ";\n background-image: ", ";\n color: ", ";\n box-shadow: 0 0 0 ", " ", "", ";\n\n .", " {\n box-shadow: ", " 0 0 0 ", ";\n }\n\n :enabled:hover,\n :enabled {\n .", " svg,\n .", " svg {\n color: ", ";\n }\n }\n "])),
42
42
  hasGradient ? "initial" : btnBackground,
43
43
  hasGradient ? "linear-gradient(" + btnBackgroundStart + ", " + btnBackgroundEnd + ")" : "none",
44
44
  color,
@@ -1 +1 @@
1
- {"version":3,"sources":["Button.mixins.ts"],"names":["getBtnPadding","fontSize","paddingY","paddingX","fontFamilyCompensation","additionalOffset","paddingTop","paddingBottom","offset","parseInt","shiftUp","top","bottom","buttonUseMixin","btnBackground","btnBackgroundStart","btnBackgroundEnd","color","borderColor","borderBottomColor","borderWidth","hasGradient","css","globalClasses","arrowHelper","icon","arrow","buttonHoverMixin","buttonActiveMixin","btnShadow","borderTopColor","arrowBgImage","innerShadow","arrowHelperTop","buttonSizeMixin","lineHeight","buttonSizeMixinIE11","arrowOutlineMixin","insetWidth","outlineColor","outlineWidth","insetColor","arrowHelperBottom"],"mappings":"+ZAAA;AACA;;AAEA,yC;;AAEA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB;AACpBC,QADoB;AAEpBC,QAFoB;AAGpBC,QAHoB;AAIpBC,sBAJoB;AAKpBC,gBALoB;AAMT,KADXA,gBACW,cADXA,gBACW,GADQ,CACR;AACX,MAAIC,UAAU,GAAGJ,QAAjB;AACA,MAAIK,aAAa,GAAGL,QAApB;AACA,MAAMM,MAAM,GAAGC,QAAQ,CAACL,sBAAD,CAAR,IAAoC,CAAnD;;AAEA,MAAMM,OAAO,GAAG,SAAVA,OAAU,CAACC,GAAD,EAAcC,MAAd,EAA8BJ,MAA9B,EAAiD;AAC/D,WAAO,CAAC,+BAAMG,GAAN,OAAc,CAACH,MAAf,CAAD,EAA2B,+BAAMI,MAAN,OAAiBJ,MAAjB,CAA3B,CAAP;AACD,GAFD;;AAIA,MAAIP,QAAQ,KAAK,MAAb,IAAuBO,MAA3B,EAAmC;AACHE,IAAAA,OAAO,CAACJ,UAAD,EAAaC,aAAb,EAA4BC,MAA5B,CADJ,CAChCF,UADgC,eACpBC,aADoB;AAElC;AACD,MAAIF,gBAAgB,IAAIG,MAAxB,EAAgC;AACAE,IAAAA,OAAO,CAACJ,UAAD,EAAaC,aAAb,EAA4BF,gBAA5B,CADP,CAC7BC,UAD6B,gBACjBC,aADiB;AAE/B;;AAED,SAAUD,UAAV,SAAwBH,QAAxB,SAAoCI,aAApC;AACD,CAvBD;;AAyBO,IAAMM,cAAc,GAAG,SAAjBA,cAAiB;AAC5BC,aAD4B;AAE5BC,kBAF4B;AAG5BC,gBAH4B;AAI5BC,KAJ4B;AAK5BC,WAL4B;AAM5BC,iBAN4B;AAO5BC,WAP4B;AAQzB;AACH,MAAMC,WAAW,GAAGN,kBAAkB,KAAKC,gBAA3C;AACA,aAAOM,YAAP;AACsBD,EAAAA,WAAW,eAAeP,aADhD;AAEsBO,EAAAA,WAAW,wBAAsBN,kBAAtB,UAA6CC,gBAA7C,eAFjC;AAGWC,EAAAA,KAHX;AAIsBG,EAAAA,WAJtB,EAIqCF,WAJrC,EAImDC,iBAAiB,YAAUC,WAAV,aAA6BD,iBAA7B,KAJpE;;AAMKI,wBAAcC,WANnB;AAOkBJ,EAAAA,WAPlB,EAOuCF,WAPvC;;;;;AAYOK,wBAAcE,IAZrB;AAaOF,wBAAcG,KAbrB;AAceT,EAAAA,KAdf;;;;AAkBD,CA5BM,C;;AA8BA,IAAMU,gBAAgB,GAAG,SAAnBA,gBAAmB;AAC9Bb,aAD8B;AAE9BC,kBAF8B;AAG9BC,gBAH8B;AAI9BE,WAJ8B;AAK9BC,iBAL8B;AAM9BC,WAN8B;AAO3B;AACH,MAAMC,WAAW,GAAGN,kBAAkB,KAAKC,gBAA3C;AACA,aAAOM,YAAP;AACsBD,EAAAA,WAAW,eAAeP,aADhD;AAEsBO,EAAAA,WAAW,wBAAsBN,kBAAtB,UAA6CC,gBAA7C,eAFjC;AAGsBI,EAAAA,WAHtB,EAGqCF,WAHrC,EAGmDC,iBAAiB,YAAUC,WAAV,aAA6BD,iBAA7B,KAHpE;;AAKKI,wBAAcC,WALnB;AAMkBJ,EAAAA,WANlB,EAMqCF,WANrC;;;AASD,CAlBM,C;;AAoBA,IAAMU,iBAAiB,GAAG,SAApBA,iBAAoB;AAC/Bd,aAD+B;AAE/Be,SAF+B;AAG/BX,WAH+B;AAI/BY,cAJ+B;AAK/BV,WAL+B;AAM/BW,YAN+B;AAO5B;AACH,aAAOT,YAAP;;;;AAIwBR,EAAAA,aAJxB;AAKwBM,EAAAA,WALxB,EAKuCF,WALvC,EAKqDY,cAAc,aAAWV,WAAX,aAA8BU,cAA9B,KALnE;;AAOOP,wBAAcS,WAPrB;AAQoBH,EAAAA,SARpB;;;AAWON,wBAAcC,WAXrB;AAYoBJ,EAAAA,WAZpB,EAYuCF,WAZvC;;AAcUK,wBAAcU,cAdxB;AAe4BF,EAAAA,YAf5B;;;;;AAoBD,CA5BM,C;;AA8BA,IAAMG,eAAe,GAAG,SAAlBA,eAAkB;AAC7BjC,QAD6B;AAE7BkC,UAF6B;AAG7BhC,QAH6B;AAI7BD,QAJ6B;AAK7BE,sBAL6B;AAM1B;AACH,aAAOkB,YAAP;AACerB,EAAAA,QADf;;AAGaD,EAAAA,aAAa,CAACC,QAAD,EAAWC,QAAX,EAAqBC,QAArB,EAA+BC,sBAA/B,CAH1B;AAIiB+B,EAAAA,UAJjB;;AAMD,CAbM,C;;AAeA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB;AACjCnC,QADiC;AAEjCE,QAFiC;AAGjCD,QAHiC;AAIjCE,sBAJiC;AAK9B;AACH,aAAOkB,YAAP;AACatB,EAAAA,aAAa,CAACC,QAAD,EAAWC,QAAX,EAAqBC,QAArB,EAA+BC,sBAA/B,EAAuD,CAAvD,CAD1B;;;AAID,CAVM,C;;AAYA,IAAMiC,iBAAiB,GAAG,SAApBA,iBAAoB;AAC/BC,UAD+B;AAE/BC,YAF+B;AAG/BC,YAH+B;AAI/BC,UAJ+B;AAK5B;AACH,aAAOnB,YAAP;AACKC,wBAAcC,WADnB;AAEQD,wBAAcU,cAFtB;AAG2BK,EAAAA,UAH3B,EAGyCA,UAHzC,EAG2DG,UAH3D,EAG0ED,YAH1E,EAGgGD,YAHhG;;;AAMQhB,wBAAcmB,iBANtB;AAO2BJ,EAAAA,UAP3B,EAO0CA,UAP1C,EAO4DG,UAP5D,EAO2ED,YAP3E,EAOiGD,YAPjG;;;;;;AAaaD,EAAAA,UAbb;AAceA,EAAAA,UAdf;AAecA,EAAAA,UAfd;;AAiBQf,wBAAcmB,iBAjBtB;AAkBgBJ,EAAAA,UAlBhB;;;;AAsBD,CA5BM,C","sourcesContent":["import { css } from '../../lib/theming/Emotion';\nimport { shift } from '../../lib/styles/DimensionFunctions';\n\nimport { globalClasses } from './Button.styles';\n\nconst getBtnPadding = (\n fontSize: string,\n paddingY: string,\n paddingX: string,\n fontFamilyCompensation: string,\n additionalOffset = 0,\n): string => {\n let paddingTop = paddingY;\n let paddingBottom = paddingY;\n const offset = parseInt(fontFamilyCompensation) || 0;\n\n const shiftUp = (top: string, bottom: string, offset: number) => {\n return [shift(top, `${-offset}`), shift(bottom, `${offset}`)];\n };\n\n if (fontSize === '16px' && offset) {\n [paddingTop, paddingBottom] = shiftUp(paddingTop, paddingBottom, offset);\n }\n if (additionalOffset && offset) {\n [paddingTop, paddingBottom] = shiftUp(paddingTop, paddingBottom, additionalOffset);\n }\n\n return `${paddingTop} ${paddingX} ${paddingBottom}`;\n};\n\nexport const buttonUseMixin = (\n btnBackground: string,\n btnBackgroundStart: string,\n btnBackgroundEnd: string,\n color: string,\n borderColor: string,\n borderBottomColor: string,\n borderWidth: string,\n) => {\n const hasGradient = btnBackgroundStart !== btnBackgroundEnd;\n return css`\n background-color: ${hasGradient ? `initial` : btnBackground};\n background-image: ${hasGradient ? `linear-gradient(${btnBackgroundStart}, ${btnBackgroundEnd})` : `none`};\n color: ${color};\n box-shadow: 0 0 0 ${borderWidth} ${borderColor}${borderBottomColor ? `, 0 ${borderWidth} 0 0 ${borderBottomColor}` : ``};\n\n .${globalClasses.arrowHelper} {\n box-shadow: ${borderWidth} 0 0 0 ${borderColor};\n }\n\n :hover,\n :enabled {\n .${globalClasses.icon} svg,\n .${globalClasses.arrow} svg {\n color: ${color};\n }\n }\n `;\n};\n\nexport const buttonHoverMixin = (\n btnBackground: string,\n btnBackgroundStart: string,\n btnBackgroundEnd: string,\n borderColor: string,\n borderBottomColor: string,\n borderWidth: string,\n) => {\n const hasGradient = btnBackgroundStart !== btnBackgroundEnd;\n return css`\n background-color: ${hasGradient ? `initial` : btnBackground};\n background-image: ${hasGradient ? `linear-gradient(${btnBackgroundStart}, ${btnBackgroundEnd})` : `none`};\n box-shadow: 0 0 0 ${borderWidth} ${borderColor}${borderBottomColor ? `, 0 ${borderWidth} 0 0 ${borderBottomColor}` : ``};\n\n .${globalClasses.arrowHelper} {\n box-shadow: ${borderWidth} 0 0 ${borderColor};\n }\n `;\n};\n\nexport const buttonActiveMixin = (\n btnBackground: string,\n btnShadow: string,\n borderColor: string,\n borderTopColor: string,\n borderWidth: string,\n arrowBgImage: string,\n) => {\n return css`\n &,\n &:hover {\n background-image: none !important; // override :hover styles\n background-color: ${btnBackground} !important; // override :hover styles\n box-shadow: 0 0 0 ${borderWidth} ${borderColor}${borderTopColor ? `, 0 -${borderWidth} 0 0 ${borderTopColor}` : ``} !important; // override :hover styles\n\n .${globalClasses.innerShadow} {\n box-shadow: ${btnShadow};\n }\n\n .${globalClasses.arrowHelper} {\n box-shadow: ${borderWidth} 0 0 ${borderColor};\n\n &.${globalClasses.arrowHelperTop} {\n background-image: ${arrowBgImage};\n }\n }\n }\n `;\n};\n\nexport const buttonSizeMixin = (\n fontSize: string,\n lineHeight: string,\n paddingX: string,\n paddingY: string,\n fontFamilyCompensation: string,\n) => {\n return css`\n font-size: ${fontSize};\n box-sizing: border-box;\n padding: ${getBtnPadding(fontSize, paddingY, paddingX, fontFamilyCompensation)};\n line-height: ${lineHeight};\n `;\n};\n\nexport const buttonSizeMixinIE11 = (\n fontSize: string,\n paddingX: string,\n paddingY: string,\n fontFamilyCompensation: string,\n) => {\n return css`\n padding: ${getBtnPadding(fontSize, paddingY, paddingX, fontFamilyCompensation, 1)};\n line-height: normal;\n `;\n};\n\nexport const arrowOutlineMixin = (\n insetWidth: string,\n outlineColor: string,\n outlineWidth: string,\n insetColor: string,\n) => {\n return css`\n .${globalClasses.arrowHelper} {\n &.${globalClasses.arrowHelperTop} {\n box-shadow: inset -${insetWidth} ${insetWidth} 0 0 ${insetColor}, ${outlineWidth} 0 0 0 ${outlineColor} !important; // override :active styles\n }\n\n &.${globalClasses.arrowHelperBottom} {\n box-shadow: inset -${insetWidth} -${insetWidth} 0 0 ${insetColor}, ${outlineWidth} 0 0 0 ${outlineColor} !important; // override :active styles\n }\n\n // don't hide inner outline\n // and keep the middle-line fix\n &:before {\n top: ${insetWidth};\n right: ${insetWidth};\n left: ${insetWidth};\n }\n &.${globalClasses.arrowHelperBottom}:before {\n bottom: ${insetWidth};\n }\n }\n `;\n};\n"]}
1
+ {"version":3,"sources":["Button.mixins.ts"],"names":["getBtnPadding","fontSize","paddingY","paddingX","fontFamilyCompensation","additionalOffset","paddingTop","paddingBottom","offset","parseInt","shiftUp","top","bottom","buttonUseMixin","btnBackground","btnBackgroundStart","btnBackgroundEnd","color","borderColor","borderBottomColor","borderWidth","hasGradient","css","globalClasses","arrowHelper","icon","arrow","buttonHoverMixin","buttonActiveMixin","btnShadow","borderTopColor","arrowBgImage","innerShadow","arrowHelperTop","buttonSizeMixin","lineHeight","buttonSizeMixinIE11","arrowOutlineMixin","insetWidth","outlineColor","outlineWidth","insetColor","arrowHelperBottom"],"mappings":"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","sourcesContent":["import { css } from '../../lib/theming/Emotion';\nimport { shift } from '../../lib/styles/DimensionFunctions';\n\nimport { globalClasses } from './Button.styles';\n\nconst getBtnPadding = (\n fontSize: string,\n paddingY: string,\n paddingX: string,\n fontFamilyCompensation: string,\n additionalOffset = 0,\n): string => {\n let paddingTop = paddingY;\n let paddingBottom = paddingY;\n const offset = parseInt(fontFamilyCompensation) || 0;\n\n const shiftUp = (top: string, bottom: string, offset: number) => {\n return [shift(top, `${-offset}`), shift(bottom, `${offset}`)];\n };\n\n if (fontSize === '16px' && offset) {\n [paddingTop, paddingBottom] = shiftUp(paddingTop, paddingBottom, offset);\n }\n if (additionalOffset && offset) {\n [paddingTop, paddingBottom] = shiftUp(paddingTop, paddingBottom, additionalOffset);\n }\n\n return `${paddingTop} ${paddingX} ${paddingBottom}`;\n};\n\nexport const buttonUseMixin = (\n btnBackground: string,\n btnBackgroundStart: string,\n btnBackgroundEnd: string,\n color: string,\n borderColor: string,\n borderBottomColor: string,\n borderWidth: string,\n) => {\n const hasGradient = btnBackgroundStart !== btnBackgroundEnd;\n return css`\n background-color: ${hasGradient ? `initial` : btnBackground};\n background-image: ${hasGradient ? `linear-gradient(${btnBackgroundStart}, ${btnBackgroundEnd})` : `none`};\n color: ${color};\n box-shadow: 0 0 0 ${borderWidth} ${borderColor}${borderBottomColor ? `, 0 ${borderWidth} 0 0 ${borderBottomColor}` : ``};\n\n .${globalClasses.arrowHelper} {\n box-shadow: ${borderWidth} 0 0 0 ${borderColor};\n }\n\n :enabled:hover,\n :enabled {\n .${globalClasses.icon} svg,\n .${globalClasses.arrow} svg {\n color: ${color};\n }\n }\n `;\n};\n\nexport const buttonHoverMixin = (\n btnBackground: string,\n btnBackgroundStart: string,\n btnBackgroundEnd: string,\n borderColor: string,\n borderBottomColor: string,\n borderWidth: string,\n) => {\n const hasGradient = btnBackgroundStart !== btnBackgroundEnd;\n return css`\n background-color: ${hasGradient ? `initial` : btnBackground};\n background-image: ${hasGradient ? `linear-gradient(${btnBackgroundStart}, ${btnBackgroundEnd})` : `none`};\n box-shadow: 0 0 0 ${borderWidth} ${borderColor}${borderBottomColor ? `, 0 ${borderWidth} 0 0 ${borderBottomColor}` : ``};\n\n .${globalClasses.arrowHelper} {\n box-shadow: ${borderWidth} 0 0 ${borderColor};\n }\n `;\n};\n\nexport const buttonActiveMixin = (\n btnBackground: string,\n btnShadow: string,\n borderColor: string,\n borderTopColor: string,\n borderWidth: string,\n arrowBgImage: string,\n) => {\n return css`\n &,\n &:hover {\n background-image: none !important; // override :hover styles\n background-color: ${btnBackground} !important; // override :hover styles\n box-shadow: 0 0 0 ${borderWidth} ${borderColor}${borderTopColor ? `, 0 -${borderWidth} 0 0 ${borderTopColor}` : ``} !important; // override :hover styles\n\n .${globalClasses.innerShadow} {\n box-shadow: ${btnShadow};\n }\n\n .${globalClasses.arrowHelper} {\n box-shadow: ${borderWidth} 0 0 ${borderColor};\n\n &.${globalClasses.arrowHelperTop} {\n background-image: ${arrowBgImage};\n }\n }\n }\n `;\n};\n\nexport const buttonSizeMixin = (\n fontSize: string,\n lineHeight: string,\n paddingX: string,\n paddingY: string,\n fontFamilyCompensation: string,\n) => {\n return css`\n font-size: ${fontSize};\n box-sizing: border-box;\n padding: ${getBtnPadding(fontSize, paddingY, paddingX, fontFamilyCompensation)};\n line-height: ${lineHeight};\n `;\n};\n\nexport const buttonSizeMixinIE11 = (\n fontSize: string,\n paddingX: string,\n paddingY: string,\n fontFamilyCompensation: string,\n) => {\n return css`\n padding: ${getBtnPadding(fontSize, paddingY, paddingX, fontFamilyCompensation, 1)};\n line-height: normal;\n `;\n};\n\nexport const arrowOutlineMixin = (\n insetWidth: string,\n outlineColor: string,\n outlineWidth: string,\n insetColor: string,\n) => {\n return css`\n .${globalClasses.arrowHelper} {\n &.${globalClasses.arrowHelperTop} {\n box-shadow: inset -${insetWidth} ${insetWidth} 0 0 ${insetColor}, ${outlineWidth} 0 0 0 ${outlineColor} !important; // override :active styles\n }\n\n &.${globalClasses.arrowHelperBottom} {\n box-shadow: inset -${insetWidth} -${insetWidth} 0 0 ${insetColor}, ${outlineWidth} 0 0 0 ${outlineColor} !important; // override :active styles\n }\n\n // don't hide inner outline\n // and keep the middle-line fix\n &:before {\n top: ${insetWidth};\n right: ${insetWidth};\n left: ${insetWidth};\n }\n &.${globalClasses.arrowHelperBottom}:before {\n bottom: ${insetWidth};\n }\n }\n `;\n};\n"]}
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
  import { Theme } from '../../lib/theming/Theme';
3
- import { ButtonProps, ButtonSize } from './Button';
3
+ import { SizeProp } from '../../lib/types/props';
4
+ import { ButtonProps } from './Button';
4
5
  declare type ButtonIconProps = Pick<ButtonProps, 'size' | 'icon' | 'loading' | 'disabled' | 'use'> & {
5
6
  hasChildren: boolean;
6
7
  };
7
- export declare const getButtonIconSizes: (theme: Theme) => Record<ButtonSize, number>;
8
+ export declare const getButtonIconSizes: (theme: Theme) => Record<SizeProp, number>;
8
9
  export declare const ButtonIcon: React.FunctionComponent<ButtonIconProps>;
9
10
  export {};
@@ -9,6 +9,7 @@ var _chars = require("../../lib/chars");
9
9
  var _LoadingIcon = require("../../internal/icons2022/LoadingIcon");
10
10
 
11
11
 
12
+
12
13
  var _Button = require("./Button.styles");function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj, nodeInterop) {if (!nodeInterop && obj && obj.__esModule) {return obj;}if (obj === null || typeof obj !== "object" && typeof obj !== "function") {return { default: obj };}var cache = _getRequireWildcardCache(nodeInterop);if (cache && cache.has(obj)) {return cache.get(obj);}var newObj = {};var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var key in obj) {if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;if (desc && (desc.get || desc.set)) {Object.defineProperty(newObj, key, desc);} else {newObj[key] = obj[key];}}}newObj.default = obj;if (cache) {cache.set(obj, newObj);}return newObj;}
13
14
 
14
15
 
@@ -1 +1 @@
1
- {"version":3,"sources":["ButtonIcon.tsx"],"names":["getButtonIconSizes","theme","small","parseInt","btnIconSizeSmall","medium","btnIconSizeMedium","large","btnIconSizeLarge","ButtonIcon","icon","hasChildren","use","loading","size","ThemeContext","isLink","getSizeIconClassName","styles","iconLarge","iconMedium","iconSmall","space","ZERO_WIDTH_SPACE","style","display","alignItems","_icon","sizes","React","cloneElement","props","globalClasses","iconNoRightMargin","iconLink"],"mappings":"gGAAA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA,yC;;;;;;AAMO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,KAAD,EAA8C;AAC9E,SAAO;AACLC,IAAAA,KAAK,EAAEC,QAAQ,CAACF,KAAK,CAACG,gBAAP,CADV;AAELC,IAAAA,MAAM,EAAEF,QAAQ,CAACF,KAAK,CAACK,iBAAP,CAFX;AAGLC,IAAAA,KAAK,EAAEJ,QAAQ,CAACF,KAAK,CAACO,gBAAP,CAHV,EAAP;;AAKD,CANM,C;;AAQA,IAAMC,UAAoD,GAAG,SAAvDA,UAAuD;;;;;;AAM9D,aALJC,IAKI,QALJA,IAKI,CAJJC,WAII,QAJJA,WAII,CAHJC,GAGI,QAHJA,GAGI,qBAFJC,OAEI,CAFJA,OAEI,6BAFM,KAEN,iCADJC,IACI,CADJA,IACI,0BADG,OACH;AACJ,MAAMb,KAAK,GAAG,uBAAWc,0BAAX,CAAd;AACA,MAAMC,MAAM,GAAGJ,GAAG,KAAK,MAAvB;;AAEA,MAAMK,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAM;AACjC,YAAQH,IAAR;AACE,WAAK,OAAL;AACE,eAAOI,eAAOC,SAAP,CAAiBlB,KAAjB,CAAP;AACF,WAAK,QAAL;AACE,eAAOiB,eAAOE,UAAP,CAAkBnB,KAAlB,CAAP;AACF,WAAK,OAAL;AACA;AACE,eAAOiB,eAAOG,SAAP,CAAiBpB,KAAjB,CAAP,CAPJ;;AASD,GAVD;;AAYA,MAAMqB,KAAK,GAAG,+BAAYrB,KAAZ,IAAqBsB,uBAArB,GAAwC,EAAtD;AACA,MAAMC,KAA0B,GAAG,+BAAYvB,KAAZ;AAC/B;AACEwB,IAAAA,OAAO,EAAE,aADX;AAEEC,IAAAA,UAAU,EAAE,QAFd,EAD+B;;AAK/B,IALJ;;AAOA,MAAIC,KAAK,GAAGjB,IAAZ;AACA,MAAMkB,KAAK,GAAG5B,kBAAkB,CAACC,KAAD,CAAhC;AACA,MAAIS,IAAI,IAAI,+BAAYT,KAAZ,CAAR,IAA8B,yBAAaS,IAAb,CAAlC,EAAsD;AACpDiB,IAAAA,KAAK,gBAAGE,eAAMC,YAAN,CAAmBpB,IAAnB,EAAyB,EAAEI,IAAI,sBAAEJ,IAAI,CAACqB,KAAL,CAAWjB,IAAb,+BAAqBc,KAAK,CAACd,IAAD,CAAhC,EAAzB,CAAR;AACD;;AAED;AACE;AACE,MAAA,KAAK,EAAEU,KADT;AAEE,MAAA,SAAS,EAAE,iBAAGQ,sBAActB,IAAjB,EAAuBQ,eAAOR,IAAP,EAAvB,EAAsCO,oBAAoB,EAA1D;AACRC,qBAAOe,iBAAP,EADQ,IACqB,CAACtB,WADtB;AAERO,qBAAOgB,QAAP,CAAgBjC,KAAhB,CAFQ,IAEiBe,MAFjB,OAFb;;;AAOGM,IAAAA,KAPH;AAQGT,IAAAA,OAAO,gBAAG,6BAAC,wBAAD,IAAa,IAAI,EAAEC,IAAnB,GAAH,GAAiCa,KAR3C,CADF;;;AAYD,CAhDM,C","sourcesContent":["import React, { useContext } from 'react';\n\nimport { Theme } from '../../lib/theming/Theme';\nimport { isKonturIcon } from '../../lib/utils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ZERO_WIDTH_SPACE } from '../../lib/chars';\nimport { LoadingIcon } from '../../internal/icons2022/LoadingIcon';\n\nimport { ButtonProps, ButtonSize } from './Button';\nimport { globalClasses, styles } from './Button.styles';\n\ntype ButtonIconProps = Pick<ButtonProps, 'size' | 'icon' | 'loading' | 'disabled' | 'use'> & {\n hasChildren: boolean;\n};\n\nexport const getButtonIconSizes = (theme: Theme): Record<ButtonSize, number> => {\n return {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n};\n\nexport const ButtonIcon: React.FunctionComponent<ButtonIconProps> = ({\n icon,\n hasChildren,\n use,\n loading = false,\n size = 'small',\n}) => {\n const theme = useContext(ThemeContext);\n const isLink = use === 'link';\n\n const getSizeIconClassName = () => {\n switch (size) {\n case 'large':\n return styles.iconLarge(theme);\n case 'medium':\n return styles.iconMedium(theme);\n case 'small':\n default:\n return styles.iconSmall(theme);\n }\n };\n\n const space = isTheme2022(theme) ? ZERO_WIDTH_SPACE : '';\n const style: React.CSSProperties = isTheme2022(theme)\n ? {\n display: 'inline-flex',\n alignItems: 'center',\n }\n : {};\n\n let _icon = icon;\n const sizes = getButtonIconSizes(theme);\n if (icon && isTheme2022(theme) && isKonturIcon(icon)) {\n _icon = React.cloneElement(icon, { size: icon.props.size ?? sizes[size] });\n }\n\n return (\n <span\n style={style}\n className={cx(globalClasses.icon, styles.icon(), getSizeIconClassName(), {\n [styles.iconNoRightMargin()]: !hasChildren,\n [styles.iconLink(theme)]: isLink,\n })}\n >\n {space}\n {loading ? <LoadingIcon size={size} /> : _icon}\n </span>\n );\n};\n"]}
1
+ {"version":3,"sources":["ButtonIcon.tsx"],"names":["getButtonIconSizes","theme","small","parseInt","btnIconSizeSmall","medium","btnIconSizeMedium","large","btnIconSizeLarge","ButtonIcon","icon","hasChildren","use","loading","size","ThemeContext","isLink","getSizeIconClassName","styles","iconLarge","iconMedium","iconSmall","space","ZERO_WIDTH_SPACE","style","display","alignItems","_icon","sizes","React","cloneElement","props","globalClasses","iconNoRightMargin","iconLink"],"mappings":"gGAAA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;;AAIA,yC;;;;;;AAMO,IAAMA,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,KAAD,EAA4C;AAC5E,SAAO;AACLC,IAAAA,KAAK,EAAEC,QAAQ,CAACF,KAAK,CAACG,gBAAP,CADV;AAELC,IAAAA,MAAM,EAAEF,QAAQ,CAACF,KAAK,CAACK,iBAAP,CAFX;AAGLC,IAAAA,KAAK,EAAEJ,QAAQ,CAACF,KAAK,CAACO,gBAAP,CAHV,EAAP;;AAKD,CANM,C;;AAQA,IAAMC,UAAoD,GAAG,SAAvDA,UAAuD;;;;;;AAM9D,aALJC,IAKI,QALJA,IAKI,CAJJC,WAII,QAJJA,WAII,CAHJC,GAGI,QAHJA,GAGI,qBAFJC,OAEI,CAFJA,OAEI,6BAFM,KAEN,iCADJC,IACI,CADJA,IACI,0BADG,OACH;AACJ,MAAMb,KAAK,GAAG,uBAAWc,0BAAX,CAAd;AACA,MAAMC,MAAM,GAAGJ,GAAG,KAAK,MAAvB;;AAEA,MAAMK,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAM;AACjC,YAAQH,IAAR;AACE,WAAK,OAAL;AACE,eAAOI,eAAOC,SAAP,CAAiBlB,KAAjB,CAAP;AACF,WAAK,QAAL;AACE,eAAOiB,eAAOE,UAAP,CAAkBnB,KAAlB,CAAP;AACF,WAAK,OAAL;AACA;AACE,eAAOiB,eAAOG,SAAP,CAAiBpB,KAAjB,CAAP,CAPJ;;AASD,GAVD;;AAYA,MAAMqB,KAAK,GAAG,+BAAYrB,KAAZ,IAAqBsB,uBAArB,GAAwC,EAAtD;AACA,MAAMC,KAA0B,GAAG,+BAAYvB,KAAZ;AAC/B;AACEwB,IAAAA,OAAO,EAAE,aADX;AAEEC,IAAAA,UAAU,EAAE,QAFd,EAD+B;;AAK/B,IALJ;;AAOA,MAAIC,KAAK,GAAGjB,IAAZ;AACA,MAAMkB,KAAK,GAAG5B,kBAAkB,CAACC,KAAD,CAAhC;AACA,MAAIS,IAAI,IAAI,+BAAYT,KAAZ,CAAR,IAA8B,yBAAaS,IAAb,CAAlC,EAAsD;AACpDiB,IAAAA,KAAK,gBAAGE,eAAMC,YAAN,CAAmBpB,IAAnB,EAAyB,EAAEI,IAAI,sBAAEJ,IAAI,CAACqB,KAAL,CAAWjB,IAAb,+BAAqBc,KAAK,CAACd,IAAD,CAAhC,EAAzB,CAAR;AACD;;AAED;AACE;AACE,MAAA,KAAK,EAAEU,KADT;AAEE,MAAA,SAAS,EAAE,iBAAGQ,sBAActB,IAAjB,EAAuBQ,eAAOR,IAAP,EAAvB,EAAsCO,oBAAoB,EAA1D;AACRC,qBAAOe,iBAAP,EADQ,IACqB,CAACtB,WADtB;AAERO,qBAAOgB,QAAP,CAAgBjC,KAAhB,CAFQ,IAEiBe,MAFjB,OAFb;;;AAOGM,IAAAA,KAPH;AAQGT,IAAAA,OAAO,gBAAG,6BAAC,wBAAD,IAAa,IAAI,EAAEC,IAAnB,GAAH,GAAiCa,KAR3C,CADF;;;AAYD,CAhDM,C","sourcesContent":["import React, { useContext } from 'react';\n\nimport { Theme } from '../../lib/theming/Theme';\nimport { isKonturIcon } from '../../lib/utils';\nimport { cx } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ZERO_WIDTH_SPACE } from '../../lib/chars';\nimport { LoadingIcon } from '../../internal/icons2022/LoadingIcon';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { ButtonProps } from './Button';\nimport { globalClasses, styles } from './Button.styles';\n\ntype ButtonIconProps = Pick<ButtonProps, 'size' | 'icon' | 'loading' | 'disabled' | 'use'> & {\n hasChildren: boolean;\n};\n\nexport const getButtonIconSizes = (theme: Theme): Record<SizeProp, number> => {\n return {\n small: parseInt(theme.btnIconSizeSmall),\n medium: parseInt(theme.btnIconSizeMedium),\n large: parseInt(theme.btnIconSizeLarge),\n };\n};\n\nexport const ButtonIcon: React.FunctionComponent<ButtonIconProps> = ({\n icon,\n hasChildren,\n use,\n loading = false,\n size = 'small',\n}) => {\n const theme = useContext(ThemeContext);\n const isLink = use === 'link';\n\n const getSizeIconClassName = () => {\n switch (size) {\n case 'large':\n return styles.iconLarge(theme);\n case 'medium':\n return styles.iconMedium(theme);\n case 'small':\n default:\n return styles.iconSmall(theme);\n }\n };\n\n const space = isTheme2022(theme) ? ZERO_WIDTH_SPACE : '';\n const style: React.CSSProperties = isTheme2022(theme)\n ? {\n display: 'inline-flex',\n alignItems: 'center',\n }\n : {};\n\n let _icon = icon;\n const sizes = getButtonIconSizes(theme);\n if (icon && isTheme2022(theme) && isKonturIcon(icon)) {\n _icon = React.cloneElement(icon, { size: icon.props.size ?? sizes[size] });\n }\n\n return (\n <span\n style={style}\n className={cx(globalClasses.icon, styles.icon(), getSizeIconClassName(), {\n [styles.iconNoRightMargin()]: !hasChildren,\n [styles.iconLink(theme)]: isLink,\n })}\n >\n {space}\n {loading ? <LoadingIcon size={size} /> : _icon}\n </span>\n );\n};\n"]}