@skbkontur/react-ui 4.2.2 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (694) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/cjs/components/Autocomplete/Autocomplete.d.ts +9 -17
  3. package/cjs/components/Autocomplete/Autocomplete.js +13 -7
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Button/Button.d.ts +4 -5
  6. package/cjs/components/Button/Button.js +8 -3
  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/Button.styles.js +18 -18
  11. package/cjs/components/Button/Button.styles.js.map +1 -1
  12. package/cjs/components/Center/Center.d.ts +4 -3
  13. package/cjs/components/Center/Center.js +9 -3
  14. package/cjs/components/Center/Center.js.map +1 -1
  15. package/cjs/components/Checkbox/Checkbox.js +4 -2
  16. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  17. package/cjs/components/Checkbox/Checkbox.styles.d.ts +1 -1
  18. package/cjs/components/Checkbox/Checkbox.styles.js +1 -1
  19. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  20. package/cjs/components/ComboBox/ComboBox.d.ts +8 -13
  21. package/cjs/components/ComboBox/ComboBox.js +12 -2
  22. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  23. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -9
  24. package/cjs/components/CurrencyInput/CurrencyInput.js +25 -10
  25. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  26. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +3 -1
  27. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.js +14 -2
  28. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.js.map +1 -1
  29. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
  30. package/cjs/components/CurrencyLabel/CurrencyLabel.js +15 -15
  31. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  32. package/cjs/components/DateInput/DateFragmentsView.d.ts +1 -1
  33. package/cjs/components/DateInput/DateFragmentsView.js +10 -1
  34. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  35. package/cjs/components/DateInput/DateInput.d.ts +9 -12
  36. package/cjs/components/DateInput/DateInput.js +11 -3
  37. package/cjs/components/DateInput/DateInput.js.map +1 -1
  38. package/cjs/components/DateInput/helpers/DateInputKeyboardActions.js +1 -2
  39. package/cjs/components/DateInput/helpers/DateInputKeyboardActions.js.map +1 -1
  40. package/cjs/components/DateInput/helpers/SelectionHelpers.js +2 -2
  41. package/cjs/components/DateInput/helpers/SelectionHelpers.js.map +1 -1
  42. package/cjs/components/DatePicker/DatePicker.d.ts +7 -9
  43. package/cjs/components/DatePicker/DatePicker.js +23 -9
  44. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  45. package/cjs/components/DatePicker/Picker.js +5 -1
  46. package/cjs/components/DatePicker/Picker.js.map +1 -1
  47. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +5 -5
  48. package/cjs/components/DropdownMenu/DropdownMenu.js +9 -3
  49. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  50. package/cjs/components/FileUploader/FileUploader.js +2 -2
  51. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  52. package/cjs/components/FileUploader/FileUploader.md +8 -1
  53. package/cjs/components/FxInput/FxInput.d.ts +6 -6
  54. package/cjs/components/FxInput/FxInput.js +16 -11
  55. package/cjs/components/FxInput/FxInput.js.map +1 -1
  56. package/cjs/components/Gapped/Gapped.d.ts +7 -8
  57. package/cjs/components/Gapped/Gapped.js +12 -6
  58. package/cjs/components/Gapped/Gapped.js.map +1 -1
  59. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +7 -14
  60. package/cjs/components/GlobalLoader/GlobalLoader.js +13 -9
  61. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  62. package/cjs/components/GlobalLoader/GlobalLoaderView.d.ts +2 -2
  63. package/cjs/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
  64. package/cjs/components/Hint/Hint.d.ts +8 -12
  65. package/cjs/components/Hint/Hint.js +15 -5
  66. package/cjs/components/Hint/Hint.js.map +1 -1
  67. package/cjs/components/Hint/Hint.md +14 -0
  68. package/cjs/components/Input/Input.d.ts +4 -3
  69. package/cjs/components/Input/Input.js +10 -5
  70. package/cjs/components/Input/Input.js.map +1 -1
  71. package/cjs/components/Input/Input.md +5 -1
  72. package/cjs/components/Kebab/Kebab.d.ts +8 -15
  73. package/cjs/components/Kebab/Kebab.js +14 -5
  74. package/cjs/components/Kebab/Kebab.js.map +1 -1
  75. package/cjs/components/Link/Link.d.ts +5 -7
  76. package/cjs/components/Link/Link.js +12 -5
  77. package/cjs/components/Link/Link.js.map +1 -1
  78. package/cjs/components/Loader/Loader.d.ts +9 -5
  79. package/cjs/components/Loader/Loader.js +15 -4
  80. package/cjs/components/Loader/Loader.js.map +1 -1
  81. package/cjs/components/Loader/__stories__/LoaderAndButton.js +6 -0
  82. package/cjs/components/Loader/__stories__/LoaderAndButton.js.map +1 -1
  83. package/cjs/components/MenuItem/MenuItem.js +3 -1
  84. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  85. package/cjs/components/Modal/Modal.d.ts +4 -3
  86. package/cjs/components/Modal/Modal.js +9 -4
  87. package/cjs/components/Modal/Modal.js.map +1 -1
  88. package/cjs/components/Modal/Modal.styles.d.ts +2 -2
  89. package/cjs/components/Modal/Modal.styles.js +2 -2
  90. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  91. package/cjs/components/Modal/ModalBody.js +2 -2
  92. package/cjs/components/Modal/ModalBody.js.map +1 -1
  93. package/cjs/components/Paging/Paging.d.ts +7 -10
  94. package/cjs/components/Paging/Paging.js +16 -6
  95. package/cjs/components/Paging/Paging.js.map +1 -1
  96. package/cjs/components/Paging/PagingDefaultComponent.d.ts +3 -3
  97. package/cjs/components/Paging/PagingDefaultComponent.js.map +1 -1
  98. package/cjs/components/PasswordInput/PasswordInput.d.ts +4 -3
  99. package/cjs/components/PasswordInput/PasswordInput.js +14 -7
  100. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  101. package/cjs/components/Radio/Radio.d.ts +4 -3
  102. package/cjs/components/Radio/Radio.js +11 -4
  103. package/cjs/components/Radio/Radio.js.map +1 -1
  104. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -4
  105. package/cjs/components/RadioGroup/RadioGroup.js +4 -2
  106. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  107. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js +2 -2
  108. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js.map +1 -1
  109. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +7 -8
  110. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js +4 -4
  111. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js.map +1 -1
  112. package/cjs/components/ScrollContainer/ScrollContainer.js +12 -6
  113. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  114. package/cjs/components/Select/Item.d.ts +4 -2
  115. package/cjs/components/Select/Item.js +3 -0
  116. package/cjs/components/Select/Item.js.map +1 -1
  117. package/cjs/components/Select/Select.d.ts +3 -12
  118. package/cjs/components/Select/Select.js +8 -1
  119. package/cjs/components/Select/Select.js.map +1 -1
  120. package/cjs/components/Select/Select.styles.js +4 -4
  121. package/cjs/components/Select/Select.styles.js.map +1 -1
  122. package/cjs/components/SidePage/SidePage.d.ts +5 -6
  123. package/cjs/components/SidePage/SidePage.js +8 -1
  124. package/cjs/components/SidePage/SidePage.js.map +1 -1
  125. package/cjs/components/SidePage/SidePageFooter.d.ts +6 -4
  126. package/cjs/components/SidePage/SidePageFooter.js +4 -0
  127. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  128. package/cjs/components/Spinner/Spinner.d.ts +4 -2
  129. package/cjs/components/Spinner/Spinner.js +10 -4
  130. package/cjs/components/Spinner/Spinner.js.map +1 -1
  131. package/cjs/components/Spinner/Spinner.styles.d.ts +1 -1
  132. package/cjs/components/Spinner/Spinner.styles.js +7 -7
  133. package/cjs/components/Spinner/Spinner.styles.js.map +1 -1
  134. package/cjs/components/Sticky/Sticky.d.ts +5 -4
  135. package/cjs/components/Sticky/Sticky.js +9 -2
  136. package/cjs/components/Sticky/Sticky.js.map +1 -1
  137. package/cjs/components/Tabs/Indicator.d.ts +1 -1
  138. package/cjs/components/Tabs/Indicator.js +1 -1
  139. package/cjs/components/Tabs/Indicator.js.map +1 -1
  140. package/cjs/components/Tabs/Tab.d.ts +4 -4
  141. package/cjs/components/Tabs/Tab.js +11 -13
  142. package/cjs/components/Tabs/Tab.js.map +1 -1
  143. package/cjs/components/Tabs/Tabs.d.ts +4 -4
  144. package/cjs/components/Tabs/Tabs.js +12 -3
  145. package/cjs/components/Tabs/Tabs.js.map +1 -1
  146. package/cjs/components/Textarea/Textarea.d.ts +8 -10
  147. package/cjs/components/Textarea/Textarea.js +13 -7
  148. package/cjs/components/Textarea/Textarea.js.map +1 -1
  149. package/cjs/components/Textarea/TextareaCounter.d.ts +2 -2
  150. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  151. package/cjs/components/Toast/Toast.js +1 -1
  152. package/cjs/components/Toast/Toast.js.map +1 -1
  153. package/cjs/components/Toggle/Toggle.d.ts +5 -6
  154. package/cjs/components/Toggle/Toggle.js +10 -4
  155. package/cjs/components/Toggle/Toggle.js.map +1 -1
  156. package/cjs/components/TokenInput/TokenInput.d.ts +19 -16
  157. package/cjs/components/TokenInput/TokenInput.js +76 -59
  158. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  159. package/cjs/components/TokenInput/TokenInputMenu.d.ts +2 -1
  160. package/cjs/components/TokenInput/TokenInputMenu.js +1 -1
  161. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  162. package/cjs/components/Tooltip/Tooltip.d.ts +12 -16
  163. package/cjs/components/Tooltip/Tooltip.js +25 -14
  164. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  165. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +6 -5
  166. package/cjs/components/TooltipMenu/TooltipMenu.js +11 -5
  167. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  168. package/cjs/hooks/useEffectWithoutInitCall.d.ts +2 -2
  169. package/cjs/hooks/useEffectWithoutInitCall.js +2 -2
  170. package/cjs/hooks/useEffectWithoutInitCall.js.map +1 -1
  171. package/cjs/hooks/useMemoObject.d.ts +2 -1
  172. package/cjs/hooks/useMemoObject.js +2 -0
  173. package/cjs/hooks/useMemoObject.js.map +1 -1
  174. package/cjs/internal/BGRuler.d.ts +13 -15
  175. package/cjs/internal/BGRuler.js +16 -8
  176. package/cjs/internal/BGRuler.js.map +1 -1
  177. package/cjs/internal/Calendar/Calendar.d.ts +4 -13
  178. package/cjs/internal/Calendar/Calendar.js +10 -5
  179. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  180. package/cjs/internal/Calendar/DayCellView.styles.js +1 -1
  181. package/cjs/internal/Calendar/DayCellView.styles.js.map +1 -1
  182. package/cjs/internal/Calendar/Month.js +16 -11
  183. package/cjs/internal/Calendar/Month.js.map +1 -1
  184. package/cjs/internal/Calendar/MonthViewModel.d.ts +1 -1
  185. package/cjs/internal/Calendar/config.d.ts +1 -8
  186. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -1
  187. package/cjs/internal/CommonWrapper/CommonWrapper.js +5 -4
  188. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  189. package/cjs/internal/ComponentCombinator.d.ts +6 -8
  190. package/cjs/internal/ComponentCombinator.js +6 -2
  191. package/cjs/internal/ComponentCombinator.js.map +1 -1
  192. package/cjs/internal/ComponentTable.d.ts +7 -8
  193. package/cjs/internal/ComponentTable.js +14 -3
  194. package/cjs/internal/ComponentTable.js.map +1 -1
  195. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +6 -6
  196. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +14 -8
  197. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  198. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
  199. package/cjs/internal/CustomComboBox/ComboBoxView.js +18 -10
  200. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  201. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +4 -5
  202. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
  203. package/cjs/internal/DataTids/DataTids.d.ts +5 -5
  204. package/cjs/internal/DataTids/DataTids.js +4 -0
  205. package/cjs/internal/DataTids/DataTids.js.map +1 -1
  206. package/cjs/internal/DateSelect/DateSelect.d.ts +4 -6
  207. package/cjs/internal/DateSelect/DateSelect.js +16 -10
  208. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  209. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  210. package/cjs/internal/DropdownContainer/DropdownContainer.js +8 -5
  211. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  212. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +1 -1
  213. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -1
  214. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
  215. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  216. package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -3
  217. package/cjs/internal/InputLikeText/InputLikeText.js +11 -4
  218. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  219. package/cjs/internal/InternalMenu/InternalMenu.d.ts +3 -9
  220. package/cjs/internal/InternalMenu/InternalMenu.js +36 -14
  221. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  222. package/cjs/internal/MaskedInput/MaskedInput.d.ts +5 -2
  223. package/cjs/internal/MaskedInput/MaskedInput.js +20 -7
  224. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  225. package/cjs/internal/Menu/Menu.d.ts +4 -7
  226. package/cjs/internal/Menu/Menu.js +14 -4
  227. package/cjs/internal/Menu/Menu.js.map +1 -1
  228. package/cjs/internal/MobilePopup/MobilePopup.js +1 -1
  229. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  230. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +1 -1
  231. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  232. package/cjs/internal/PerformanceMetrics/PerformanceMetrics.js.map +1 -1
  233. package/cjs/internal/Popup/Popup.d.ts +11 -17
  234. package/cjs/internal/Popup/Popup.js +38 -19
  235. package/cjs/internal/Popup/Popup.js.map +1 -1
  236. package/cjs/internal/Popup/PopupHelper.d.ts +1 -1
  237. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  238. package/cjs/internal/Popup/PopupPin.d.ts +1 -1
  239. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  240. package/cjs/internal/PopupMenu/PopupMenu.d.ts +8 -11
  241. package/cjs/internal/PopupMenu/PopupMenu.js +8 -1
  242. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  243. package/cjs/internal/RenderLayer/RenderLayer.d.ts +5 -4
  244. package/cjs/internal/RenderLayer/RenderLayer.js +8 -2
  245. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  246. package/cjs/internal/ThemePlayground/AnotherInputsPlayground.d.ts +11 -6
  247. package/cjs/internal/ThemePlayground/AnotherInputsPlayground.js +7 -0
  248. package/cjs/internal/ThemePlayground/AnotherInputsPlayground.js.map +1 -1
  249. package/cjs/internal/ThemePlayground/CurrencyInputPlayground.d.ts +7 -6
  250. package/cjs/internal/ThemePlayground/CurrencyInputPlayground.js +2 -3
  251. package/cjs/internal/ThemePlayground/CurrencyInputPlayground.js.map +1 -1
  252. package/cjs/internal/ThemePlayground/FxInputPlayground.d.ts +6 -4
  253. package/cjs/internal/ThemePlayground/FxInputPlayground.js +5 -5
  254. package/cjs/internal/ThemePlayground/FxInputPlayground.js.map +1 -1
  255. package/cjs/internal/ThemePlayground/HintPlayground.d.ts +1 -1
  256. package/cjs/internal/ThemePlayground/HintPlayground.js.map +1 -1
  257. package/cjs/internal/ThemePlayground/PagingPlayground.d.ts +6 -6
  258. package/cjs/internal/ThemePlayground/PagingPlayground.js +5 -2
  259. package/cjs/internal/ThemePlayground/PagingPlayground.js.map +1 -1
  260. package/cjs/internal/ThemePlayground/Playground.d.ts +1 -1
  261. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  262. package/cjs/internal/ThemePlayground/SelectPlayground.d.ts +9 -6
  263. package/cjs/internal/ThemePlayground/SelectPlayground.js +6 -0
  264. package/cjs/internal/ThemePlayground/SelectPlayground.js.map +1 -1
  265. package/cjs/internal/ThemePlayground/SizesGroup.d.ts +2 -2
  266. package/cjs/internal/ThemePlayground/SizesGroup.js +2 -0
  267. package/cjs/internal/ThemePlayground/SizesGroup.js.map +1 -1
  268. package/cjs/internal/ThemePlayground/SwitcherPlayground.d.ts +9 -8
  269. package/cjs/internal/ThemePlayground/SwitcherPlayground.js +6 -1
  270. package/cjs/internal/ThemePlayground/SwitcherPlayground.js.map +1 -1
  271. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +14 -4
  272. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  273. package/cjs/internal/ThemePlayground/ThemeEditor.d.ts +1 -4
  274. package/cjs/internal/ThemePlayground/ThemeEditor.js.map +1 -1
  275. package/cjs/internal/ThemePlayground/TogglePlayground.d.ts +2 -7
  276. package/cjs/internal/ThemePlayground/TogglePlayground.js +4 -10
  277. package/cjs/internal/ThemePlayground/TogglePlayground.js.map +1 -1
  278. package/cjs/internal/ThemePlayground/TokenInputPlayground.d.ts +6 -4
  279. package/cjs/internal/ThemePlayground/TokenInputPlayground.js +3 -0
  280. package/cjs/internal/ThemePlayground/TokenInputPlayground.js.map +1 -1
  281. package/cjs/internal/ThemePlayground/VariableValue.d.ts +6 -8
  282. package/cjs/internal/ThemePlayground/VariableValue.js +6 -1
  283. package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
  284. package/cjs/internal/ThemePlayground/helpers.d.ts +1 -1
  285. package/cjs/internal/ThemePlayground/helpers.js +4 -2
  286. package/cjs/internal/ThemePlayground/helpers.js.map +1 -1
  287. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  288. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -11
  289. package/cjs/internal/ZIndex/ZIndex.js +7 -7
  290. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  291. package/cjs/internal/themes/DefaultTheme.js +1 -1
  292. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  293. package/cjs/lib/ConditionalHandler.js.map +1 -1
  294. package/cjs/lib/InstanceWithAnchorElement.d.ts +1 -1
  295. package/cjs/lib/InstanceWithAnchorElement.js.map +1 -1
  296. package/cjs/lib/ModalStack.js +2 -2
  297. package/cjs/lib/ModalStack.js.map +1 -1
  298. package/cjs/lib/SSRSafe.d.ts +2 -1
  299. package/cjs/lib/SSRSafe.js +9 -1
  300. package/cjs/lib/SSRSafe.js.map +1 -1
  301. package/cjs/lib/animation/index.js +1 -0
  302. package/cjs/lib/animation/index.js.map +1 -1
  303. package/cjs/lib/callChildRef/callChildRef.js +1 -1
  304. package/cjs/lib/callChildRef/callChildRef.js.map +1 -1
  305. package/cjs/lib/createPropsGetter.d.ts +2 -1
  306. package/cjs/lib/createPropsGetter.js +3 -0
  307. package/cjs/lib/createPropsGetter.js.map +1 -1
  308. package/cjs/lib/date/InternalDateCalculator.d.ts +1 -1
  309. package/cjs/lib/date/InternalDateCalculator.js +1 -1
  310. package/cjs/lib/date/InternalDateCalculator.js.map +1 -1
  311. package/cjs/lib/date/InternalDateValidator.d.ts +1 -1
  312. package/cjs/lib/date/InternalDateValidator.js +9 -2
  313. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  314. package/cjs/lib/extractKeyboardAction.d.ts +1 -1
  315. package/cjs/lib/extractKeyboardAction.js.map +1 -1
  316. package/cjs/lib/filterProps.js +0 -1
  317. package/cjs/lib/filterProps.js.map +1 -1
  318. package/cjs/lib/listenFocusOutside.d.ts +1 -1
  319. package/cjs/lib/listenFocusOutside.js.map +1 -1
  320. package/cjs/lib/locale/useLocaleForControl.d.ts +1 -1
  321. package/cjs/lib/locale/useLocaleForControl.js.map +1 -1
  322. package/cjs/lib/memo.d.ts +3 -1
  323. package/cjs/lib/memo.js +3 -3
  324. package/cjs/lib/memo.js.map +1 -1
  325. package/cjs/lib/net/fetch.js +2 -2
  326. package/cjs/lib/net/fetch.js.map +1 -1
  327. package/cjs/lib/reactGetTextContent.js +0 -1
  328. package/cjs/lib/reactGetTextContent.js.map +1 -1
  329. package/cjs/lib/rootNode/getRootNode.d.ts +3 -3
  330. package/cjs/lib/rootNode/getRootNode.js +7 -7
  331. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  332. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +9 -9
  333. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  334. package/cjs/lib/styles/ColorFactory.js +2 -2
  335. package/cjs/lib/styles/ColorFactory.js.map +1 -1
  336. package/cjs/lib/styles/ColorFunctions.js.map +1 -1
  337. package/cjs/lib/theming/AnimationKeyframes.d.ts +3 -5
  338. package/cjs/lib/theming/AnimationKeyframes.js +8 -22
  339. package/cjs/lib/theming/AnimationKeyframes.js.map +1 -1
  340. package/cjs/lib/theming/Emotion.js +1 -0
  341. package/cjs/lib/theming/Emotion.js.map +1 -1
  342. package/cjs/lib/theming/ThemeFactory.d.ts +1 -1
  343. package/cjs/lib/theming/ThemeFactory.js +3 -1
  344. package/cjs/lib/theming/ThemeFactory.js.map +1 -1
  345. package/cjs/lib/theming/ThemeHelpers.d.ts +2 -2
  346. package/cjs/lib/theming/ThemeHelpers.js +1 -1
  347. package/cjs/lib/theming/ThemeHelpers.js.map +1 -1
  348. package/cjs/lib/utils.d.ts +3 -1
  349. package/cjs/lib/utils.js +5 -2
  350. package/cjs/lib/utils.js.map +1 -1
  351. package/cjs/lib/withClassWrapper.js +1 -4
  352. package/cjs/lib/withClassWrapper.js.map +1 -1
  353. package/cjs/typings/event-types.d.ts +2 -2
  354. package/components/Autocomplete/Autocomplete/Autocomplete.js +26 -13
  355. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  356. package/components/Autocomplete/Autocomplete.d.ts +9 -17
  357. package/components/Button/Button/Button.js +11 -5
  358. package/components/Button/Button/Button.js.map +1 -1
  359. package/components/Button/Button.d.ts +4 -5
  360. package/components/Button/Button.mixins/Button.mixins.js +1 -1
  361. package/components/Button/Button.mixins/Button.mixins.js.map +1 -1
  362. package/components/Button/Button.styles/Button.styles.js +18 -18
  363. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  364. package/components/Center/Center/Center.js +7 -5
  365. package/components/Center/Center/Center.js.map +1 -1
  366. package/components/Center/Center.d.ts +4 -3
  367. package/components/Checkbox/Checkbox/Checkbox.js +5 -2
  368. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  369. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +1 -1
  370. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  371. package/components/Checkbox/Checkbox.styles.d.ts +1 -1
  372. package/components/ComboBox/ComboBox/ComboBox.js +3 -1
  373. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  374. package/components/ComboBox/ComboBox.d.ts +8 -13
  375. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +36 -21
  376. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  377. package/components/CurrencyInput/CurrencyInput.d.ts +6 -9
  378. package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js +4 -2
  379. package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js.map +1 -1
  380. package/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +3 -1
  381. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +21 -15
  382. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  383. package/components/CurrencyLabel/CurrencyLabel.d.ts +3 -9
  384. package/components/DateInput/DateFragmentsView/DateFragmentsView.js +11 -1
  385. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  386. package/components/DateInput/DateFragmentsView.d.ts +1 -1
  387. package/components/DateInput/DateInput/DateInput.js +18 -5
  388. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  389. package/components/DateInput/DateInput.d.ts +9 -12
  390. package/components/DateInput/helpers/DateInputKeyboardActions/DateInputKeyboardActions.js +0 -1
  391. package/components/DateInput/helpers/DateInputKeyboardActions/DateInputKeyboardActions.js.map +1 -1
  392. package/components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js +2 -2
  393. package/components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js.map +1 -1
  394. package/components/DatePicker/DatePicker/DatePicker.js +25 -21
  395. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  396. package/components/DatePicker/DatePicker.d.ts +7 -9
  397. package/components/DatePicker/Picker/Picker.js +5 -1
  398. package/components/DatePicker/Picker/Picker.js.map +1 -1
  399. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +8 -2
  400. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  401. package/components/DropdownMenu/DropdownMenu.d.ts +5 -5
  402. package/components/FileUploader/FileUploader/FileUploader.js +2 -2
  403. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  404. package/components/FileUploader/FileUploader.md +8 -1
  405. package/components/FxInput/FxInput/FxInput.js +15 -10
  406. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  407. package/components/FxInput/FxInput.d.ts +6 -6
  408. package/components/Gapped/Gapped/Gapped.js +17 -8
  409. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  410. package/components/Gapped/Gapped.d.ts +7 -8
  411. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +35 -16
  412. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  413. package/components/GlobalLoader/GlobalLoader.d.ts +7 -14
  414. package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js.map +1 -1
  415. package/components/GlobalLoader/GlobalLoaderView.d.ts +2 -2
  416. package/components/Hint/Hint/Hint.js +30 -18
  417. package/components/Hint/Hint/Hint.js.map +1 -1
  418. package/components/Hint/Hint.d.ts +8 -12
  419. package/components/Hint/Hint.md +14 -0
  420. package/components/Input/Input/Input.js +13 -8
  421. package/components/Input/Input/Input.js.map +1 -1
  422. package/components/Input/Input.d.ts +4 -3
  423. package/components/Input/Input.md +5 -1
  424. package/components/Kebab/Kebab/Kebab.js +19 -8
  425. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  426. package/components/Kebab/Kebab.d.ts +8 -15
  427. package/components/Link/Link/Link.js +10 -7
  428. package/components/Link/Link/Link.js.map +1 -1
  429. package/components/Link/Link.d.ts +5 -7
  430. package/components/Loader/Loader/Loader.js +22 -17
  431. package/components/Loader/Loader/Loader.js.map +1 -1
  432. package/components/Loader/Loader.d.ts +9 -5
  433. package/components/Loader/__stories__/LoaderAndButton/LoaderAndButton.js.map +1 -1
  434. package/components/MenuItem/MenuItem/MenuItem.js +4 -1
  435. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  436. package/components/Modal/Modal/Modal.js +5 -3
  437. package/components/Modal/Modal/Modal.js.map +1 -1
  438. package/components/Modal/Modal.d.ts +4 -3
  439. package/components/Modal/Modal.styles/Modal.styles.js +2 -2
  440. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  441. package/components/Modal/Modal.styles.d.ts +2 -2
  442. package/components/Modal/ModalBody/ModalBody.js +2 -2
  443. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  444. package/components/Paging/Paging/Paging.js +25 -15
  445. package/components/Paging/Paging/Paging.js.map +1 -1
  446. package/components/Paging/Paging.d.ts +7 -10
  447. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js.map +1 -1
  448. package/components/Paging/PagingDefaultComponent.d.ts +3 -3
  449. package/components/PasswordInput/PasswordInput/PasswordInput.js +14 -13
  450. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  451. package/components/PasswordInput/PasswordInput.d.ts +4 -3
  452. package/components/Radio/Radio/Radio.js +11 -6
  453. package/components/Radio/Radio/Radio.js.map +1 -1
  454. package/components/Radio/Radio.d.ts +4 -3
  455. package/components/RadioGroup/RadioGroup/RadioGroup.js +10 -10
  456. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  457. package/components/RadioGroup/RadioGroup.d.ts +2 -4
  458. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js +3 -1
  459. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js.map +1 -1
  460. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +11 -7
  461. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  462. package/components/ScrollContainer/ScrollContainer.d.ts +7 -8
  463. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js +4 -4
  464. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js.map +1 -1
  465. package/components/Select/Item/Item.js.map +1 -1
  466. package/components/Select/Item.d.ts +4 -2
  467. package/components/Select/Select/Select.js +4 -3
  468. package/components/Select/Select/Select.js.map +1 -1
  469. package/components/Select/Select.d.ts +3 -12
  470. package/components/Select/Select.styles/Select.styles.js +4 -4
  471. package/components/Select/Select.styles/Select.styles.js.map +1 -1
  472. package/components/SidePage/SidePage/SidePage.js +14 -9
  473. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  474. package/components/SidePage/SidePage.d.ts +5 -6
  475. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  476. package/components/SidePage/SidePageFooter.d.ts +6 -4
  477. package/components/Spinner/Spinner/Spinner.js +8 -6
  478. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  479. package/components/Spinner/Spinner.d.ts +4 -2
  480. package/components/Spinner/Spinner.styles/Spinner.styles.js +3 -3
  481. package/components/Spinner/Spinner.styles/Spinner.styles.js.map +1 -1
  482. package/components/Spinner/Spinner.styles.d.ts +1 -1
  483. package/components/Sticky/Sticky/Sticky.js +7 -4
  484. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  485. package/components/Sticky/Sticky.d.ts +5 -4
  486. package/components/Tabs/Indicator/Indicator.js +1 -1
  487. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  488. package/components/Tabs/Indicator.d.ts +1 -1
  489. package/components/Tabs/Tab/Tab.js +15 -7
  490. package/components/Tabs/Tab/Tab.js.map +1 -1
  491. package/components/Tabs/Tab.d.ts +4 -4
  492. package/components/Tabs/Tabs/Tabs.js +10 -8
  493. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  494. package/components/Tabs/Tabs.d.ts +4 -4
  495. package/components/Textarea/Textarea/Textarea.js +23 -15
  496. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  497. package/components/Textarea/Textarea.d.ts +8 -10
  498. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  499. package/components/Textarea/TextareaCounter.d.ts +2 -2
  500. package/components/Toast/Toast/Toast.js +1 -1
  501. package/components/Toast/Toast/Toast.js.map +1 -1
  502. package/components/Toggle/Toggle/Toggle.js +12 -7
  503. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  504. package/components/Toggle/Toggle.d.ts +5 -6
  505. package/components/TokenInput/TokenInput/TokenInput.js +107 -77
  506. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  507. package/components/TokenInput/TokenInput.d.ts +19 -16
  508. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +1 -1
  509. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  510. package/components/TokenInput/TokenInputMenu.d.ts +2 -1
  511. package/components/Tooltip/Tooltip/Tooltip.js +53 -32
  512. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  513. package/components/Tooltip/Tooltip.d.ts +12 -16
  514. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +15 -13
  515. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  516. package/components/TooltipMenu/TooltipMenu.d.ts +6 -5
  517. package/hooks/useEffectWithoutInitCall/useEffectWithoutInitCall.js +2 -2
  518. package/hooks/useEffectWithoutInitCall/useEffectWithoutInitCall.js.map +1 -1
  519. package/hooks/useEffectWithoutInitCall.d.ts +2 -2
  520. package/hooks/useMemoObject/useMemoObject.js.map +1 -1
  521. package/hooks/useMemoObject.d.ts +2 -1
  522. package/internal/BGRuler/BGRuler.js +11 -6
  523. package/internal/BGRuler/BGRuler.js.map +1 -1
  524. package/internal/BGRuler.d.ts +13 -15
  525. package/internal/Calendar/Calendar/Calendar.js +11 -5
  526. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  527. package/internal/Calendar/Calendar.d.ts +4 -13
  528. package/internal/Calendar/DayCellView.styles/DayCellView.styles.js +1 -1
  529. package/internal/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  530. package/internal/Calendar/Month/Month.js +20 -11
  531. package/internal/Calendar/Month/Month.js.map +1 -1
  532. package/internal/Calendar/MonthViewModel.d.ts +1 -1
  533. package/internal/Calendar/config.d.ts +1 -8
  534. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +3 -2
  535. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  536. package/internal/CommonWrapper/CommonWrapper.d.ts +1 -1
  537. package/internal/ComponentCombinator/ComponentCombinator.js +8 -5
  538. package/internal/ComponentCombinator/ComponentCombinator.js.map +1 -1
  539. package/internal/ComponentCombinator.d.ts +6 -8
  540. package/internal/ComponentTable/ComponentTable.js +16 -4
  541. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  542. package/internal/ComponentTable.d.ts +7 -8
  543. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +18 -19
  544. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  545. package/internal/CustomComboBox/ComboBoxMenu.d.ts +6 -6
  546. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +21 -10
  547. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  548. package/internal/CustomComboBox/ComboBoxView.d.ts +4 -12
  549. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +4 -5
  550. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
  551. package/internal/DataTids/DataTids/DataTids.js.map +1 -1
  552. package/internal/DataTids/DataTids.d.ts +5 -5
  553. package/internal/DateSelect/DateSelect/DateSelect.js +15 -12
  554. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  555. package/internal/DateSelect/DateSelect.d.ts +4 -6
  556. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +6 -10
  557. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  558. package/internal/DropdownContainer/DropdownContainer.d.ts +4 -7
  559. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -1
  560. package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +1 -1
  561. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
  562. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  563. package/internal/InputLikeText/InputLikeText/InputLikeText.js +9 -4
  564. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  565. package/internal/InputLikeText/InputLikeText.d.ts +4 -3
  566. package/internal/InternalMenu/InternalMenu/InternalMenu.js +38 -17
  567. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  568. package/internal/InternalMenu/InternalMenu.d.ts +3 -9
  569. package/internal/MaskedInput/MaskedInput/MaskedInput.js +16 -7
  570. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  571. package/internal/MaskedInput/MaskedInput.d.ts +5 -2
  572. package/internal/Menu/Menu/Menu.js +16 -4
  573. package/internal/Menu/Menu/Menu.js.map +1 -1
  574. package/internal/Menu/Menu.d.ts +4 -7
  575. package/internal/MobilePopup/MobilePopup/MobilePopup.js +1 -1
  576. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  577. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +1 -1
  578. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  579. package/internal/PerformanceMetrics/PerformanceMetrics/PerformanceMetrics.js.map +1 -1
  580. package/internal/Popup/Popup/Popup.js +52 -35
  581. package/internal/Popup/Popup/Popup.js.map +1 -1
  582. package/internal/Popup/Popup.d.ts +11 -17
  583. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  584. package/internal/Popup/PopupHelper.d.ts +1 -1
  585. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  586. package/internal/Popup/PopupPin.d.ts +1 -1
  587. package/internal/PopupMenu/PopupMenu/PopupMenu.js +12 -4
  588. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  589. package/internal/PopupMenu/PopupMenu.d.ts +8 -11
  590. package/internal/RenderLayer/RenderLayer/RenderLayer.js +8 -4
  591. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  592. package/internal/RenderLayer/RenderLayer.d.ts +5 -4
  593. package/internal/ThemePlayground/AnotherInputsPlayground/AnotherInputsPlayground.js.map +1 -1
  594. package/internal/ThemePlayground/AnotherInputsPlayground.d.ts +11 -6
  595. package/internal/ThemePlayground/CurrencyInputPlayground/CurrencyInputPlayground.js.map +1 -1
  596. package/internal/ThemePlayground/CurrencyInputPlayground.d.ts +7 -6
  597. package/internal/ThemePlayground/FxInputPlayground/FxInputPlayground.js +10 -6
  598. package/internal/ThemePlayground/FxInputPlayground/FxInputPlayground.js.map +1 -1
  599. package/internal/ThemePlayground/FxInputPlayground.d.ts +6 -4
  600. package/internal/ThemePlayground/HintPlayground/HintPlayground.js.map +1 -1
  601. package/internal/ThemePlayground/HintPlayground.d.ts +1 -1
  602. package/internal/ThemePlayground/PagingPlayground/PagingPlayground.js +2 -2
  603. package/internal/ThemePlayground/PagingPlayground/PagingPlayground.js.map +1 -1
  604. package/internal/ThemePlayground/PagingPlayground.d.ts +6 -6
  605. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  606. package/internal/ThemePlayground/Playground.d.ts +1 -1
  607. package/internal/ThemePlayground/SelectPlayground/SelectPlayground.js.map +1 -1
  608. package/internal/ThemePlayground/SelectPlayground.d.ts +9 -6
  609. package/internal/ThemePlayground/SizesGroup/SizesGroup.js.map +1 -1
  610. package/internal/ThemePlayground/SizesGroup.d.ts +2 -2
  611. package/internal/ThemePlayground/SwitcherPlayground/SwitcherPlayground.js.map +1 -1
  612. package/internal/ThemePlayground/SwitcherPlayground.d.ts +9 -8
  613. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +13 -3
  614. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  615. package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js.map +1 -1
  616. package/internal/ThemePlayground/ThemeEditor.d.ts +1 -4
  617. package/internal/ThemePlayground/TogglePlayground/TogglePlayground.js +5 -17
  618. package/internal/ThemePlayground/TogglePlayground/TogglePlayground.js.map +1 -1
  619. package/internal/ThemePlayground/TogglePlayground.d.ts +2 -7
  620. package/internal/ThemePlayground/TokenInputPlayground/TokenInputPlayground.js.map +1 -1
  621. package/internal/ThemePlayground/TokenInputPlayground.d.ts +6 -4
  622. package/internal/ThemePlayground/VariableValue/VariableValue.js +4 -2
  623. package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
  624. package/internal/ThemePlayground/VariableValue.d.ts +6 -8
  625. package/internal/ThemePlayground/helpers/helpers.js +0 -1
  626. package/internal/ThemePlayground/helpers/helpers.js.map +1 -1
  627. package/internal/ThemePlayground/helpers.d.ts +1 -1
  628. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  629. package/internal/ZIndex/ZIndex/ZIndex.js +21 -16
  630. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  631. package/internal/ZIndex/ZIndex.d.ts +7 -11
  632. package/internal/themes/DefaultTheme/DefaultTheme.js +6 -6
  633. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  634. package/lib/ConditionalHandler/ConditionalHandler.js.map +1 -1
  635. package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js.map +1 -1
  636. package/lib/InstanceWithAnchorElement.d.ts +1 -1
  637. package/lib/ModalStack/ModalStack.js +2 -2
  638. package/lib/ModalStack/ModalStack.js.map +1 -1
  639. package/lib/SSRSafe/SSRSafe.js +7 -0
  640. package/lib/SSRSafe/SSRSafe.js.map +1 -1
  641. package/lib/SSRSafe.d.ts +2 -1
  642. package/lib/animation/index/index.js +1 -1
  643. package/lib/animation/index/index.js.map +1 -1
  644. package/lib/callChildRef/callChildRef/callChildRef.js +1 -1
  645. package/lib/callChildRef/callChildRef/callChildRef.js.map +1 -1
  646. package/lib/createPropsGetter/createPropsGetter.js +1 -0
  647. package/lib/createPropsGetter/createPropsGetter.js.map +1 -1
  648. package/lib/createPropsGetter.d.ts +2 -1
  649. package/lib/date/InternalDateCalculator/InternalDateCalculator.js +1 -2
  650. package/lib/date/InternalDateCalculator/InternalDateCalculator.js.map +1 -1
  651. package/lib/date/InternalDateCalculator.d.ts +1 -1
  652. package/lib/date/InternalDateValidator/InternalDateValidator.js +8 -2
  653. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  654. package/lib/date/InternalDateValidator.d.ts +1 -1
  655. package/lib/extractKeyboardAction/extractKeyboardAction.js.map +1 -1
  656. package/lib/extractKeyboardAction.d.ts +1 -1
  657. package/lib/filterProps/filterProps.js +0 -1
  658. package/lib/filterProps/filterProps.js.map +1 -1
  659. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  660. package/lib/listenFocusOutside.d.ts +1 -1
  661. package/lib/locale/useLocaleForControl/useLocaleForControl.js.map +1 -1
  662. package/lib/locale/useLocaleForControl.d.ts +1 -1
  663. package/lib/memo/memo.js +2 -4
  664. package/lib/memo/memo.js.map +1 -1
  665. package/lib/memo.d.ts +3 -1
  666. package/lib/net/fetch/fetch.js +2 -2
  667. package/lib/net/fetch/fetch.js.map +1 -1
  668. package/lib/reactGetTextContent/reactGetTextContent.js +0 -1
  669. package/lib/reactGetTextContent/reactGetTextContent.js.map +1 -1
  670. package/lib/rootNode/getRootNode/getRootNode.js +8 -8
  671. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  672. package/lib/rootNode/getRootNode.d.ts +3 -3
  673. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  674. package/lib/rootNode/rootNodeDecorator.d.ts +9 -9
  675. package/lib/styles/ColorFactory/ColorFactory.js +3 -1
  676. package/lib/styles/ColorFactory/ColorFactory.js.map +1 -1
  677. package/lib/styles/ColorFunctions/ColorFunctions.js.map +1 -1
  678. package/lib/theming/AnimationKeyframes/AnimationKeyframes.js +8 -14
  679. package/lib/theming/AnimationKeyframes/AnimationKeyframes.js.map +1 -1
  680. package/lib/theming/AnimationKeyframes.d.ts +3 -5
  681. package/lib/theming/Emotion/Emotion.js.map +1 -1
  682. package/lib/theming/ThemeFactory/ThemeFactory.js +4 -1
  683. package/lib/theming/ThemeFactory/ThemeFactory.js.map +1 -1
  684. package/lib/theming/ThemeFactory.d.ts +1 -1
  685. package/lib/theming/ThemeHelpers/ThemeHelpers.js +1 -1
  686. package/lib/theming/ThemeHelpers/ThemeHelpers.js.map +1 -1
  687. package/lib/theming/ThemeHelpers.d.ts +2 -2
  688. package/lib/utils/utils.js +2 -2
  689. package/lib/utils/utils.js.map +1 -1
  690. package/lib/utils.d.ts +3 -1
  691. package/lib/withClassWrapper/withClassWrapper.js +1 -4
  692. package/lib/withClassWrapper/withClassWrapper.js.map +1 -1
  693. package/package.json +4 -4
  694. package/typings/event-types.d.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["Kebab.tsx"],"names":["Kebab","rootNode","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","disabled","props","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","handleFocus","handleBlur","styles","kebab","theme","opened","focused","renderIcon","e","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","requestAnimationFrame","keyListener","isTabPressed","componentDidMount","LayoutEvents","addListener","componentWillUnmount","render","ThemeFactory","create","popupPinOffset","kebabPinOffset","popupMargin","kebabMargin","popupPinSize","kebabPinSize","renderMain","positions","setRootNode","disableAnimations","menuMaxHeight","onOpen","onClose","children","icon","iconsmall","size","iconmedium","iconlarge","React","Component","__KONTUR_REACT_UI__","propTypes","defaultProps","isTestEnv","PropTypes","node","bool","oneOfType","string","number","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { PopupMenu, PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MenuKebabIcon } from '../../internal/icons/16px';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles } from './Kebab.styles';\n\nexport interface KebabProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n disabled?: boolean;\n size: 'small' | 'medium' | 'large';\n /**\n * Список позиций доступных для расположения выпадашки.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions: PopupPositionsType[];\n menuMaxHeight?: number | string;\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n /**\n * Кастомная иконка\n */\n icon?: React.ReactNode;\n}\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\n@rootNode\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n\n public static propTypes = {};\n\n public static defaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n size: 'small',\n disableAnimations: isTestEnv,\n icon: <MenuKebabIcon />,\n };\n\n public state = {\n focusedByTab: false,\n anchor: null,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.kebabPinOffset,\n popupMargin: theme.kebabMargin,\n popupPinSize: theme.kebabPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled, positions } = this.props;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n popupHasPin\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={this.props.disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled } = this.props;\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={cx({\n [styles.kebab(this.theme)]: true,\n [styles.opened(this.theme)]: captionProps.opened,\n [styles.disabled()]: disabled,\n [styles.focused(this.theme)]: this.state.focusedByTab,\n })}\n >\n {this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState({\n focusedByTab: !isOpened && restoreFocus,\n });\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\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 }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n return (\n <div\n className={cx({\n [styles.icon()]: true,\n [styles.iconsmall()]: this.props.size === 'small',\n [styles.iconmedium()]: this.props.size === 'medium',\n [styles.iconlarge()]: this.props.size === 'large',\n })}\n >\n {this.props.icon}\n </div>\n );\n }\n}\n\nKebab.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n menuMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * Размер кебаба small 14px | large 20px\n */\n size: PropTypes.string,\n\n /**\n * Коллбек, вызывающийся перед закрытием кебаба\n */\n onClose: PropTypes.func,\n\n /**\n * Коллбек, вызывающийся перед открытием кебаба\n */\n onOpen: PropTypes.func,\n};\n"]}
1
+ {"version":3,"sources":["Kebab.tsx"],"names":["Kebab","rootNode","getProps","defaultProps","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","disabled","props","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","handleFocus","handleBlur","styles","kebab","theme","opened","focused","renderIcon","e","isKeyEnter","isKeySpace","isKeyArrowVertical","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","requestAnimationFrame","keyListener","isTabPressed","componentDidMount","LayoutEvents","addListener","componentWillUnmount","render","ThemeFactory","create","popupPinOffset","kebabPinOffset","popupMargin","kebabMargin","popupPinSize","kebabPinSize","renderMain","positions","disableAnimations","onOpen","onClose","setRootNode","menuMaxHeight","children","size","icon","iconsmall","iconmedium","iconlarge","React","Component","__KONTUR_REACT_UI__","propTypes","isTestEnv","PropTypes","node","bool","oneOfType","string","number","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isKeyArrowVertical, isKeyEnter, isKeySpace, someKeys } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { PopupMenu, PopupMenuCaptionProps, PopupMenuProps } from '../../internal/PopupMenu';\nimport { Nullable } from '../../typings/utility-types';\nimport { PopupPositionsType } from '../../internal/Popup';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { MenuKebabIcon } from '../../internal/icons/16px';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Kebab.styles';\n\nexport interface KebabProps extends CommonProps, Pick<PopupMenuProps, 'onOpen' | 'onClose'> {\n disabled?: boolean;\n size?: 'small' | 'medium' | 'large';\n /**\n * Список позиций доступных для расположения выпадашки.\n *\n * Если во всех позициях выпадашка вылезает за пределы `viewport`, будет использована первая из этого списка.\n *\n * **Возможные значения**: `top left`, `top center`, `top right`, `right top`, `right middle`, `right bottom`, `bottom left`, `bottom center`, `bottom right`, `left top`, `left middle`, `left bottom`\n * @default ['bottom left', 'bottom right', 'top left', 'top right']\n */\n positions?: PopupPositionsType[];\n menuMaxHeight?: number | string;\n /**\n * Не показывать анимацию\n */\n disableAnimations?: boolean;\n /**\n * Кастомная иконка\n */\n icon?: React.ReactNode;\n}\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\ntype DefaultProps = Required<\n Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations' | 'icon'>\n>;\n\n@rootNode\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n\n public static propTypes = {};\n\n public static defaultProps: DefaultProps = {\n onOpen: () => undefined,\n onClose: () => undefined,\n positions: ['bottom left', 'bottom right', 'top left', 'top right'],\n size: 'small',\n disableAnimations: isTestEnv,\n icon: <MenuKebabIcon />,\n };\n\n private getProps = createPropsGetter(Kebab.defaultProps);\n\n public state: KebabState = {\n focusedByTab: false,\n anchor: null,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private listener: {\n remove: () => void;\n } = {\n remove: () => undefined,\n };\n\n public componentDidMount() {\n /** addListener'у нужен колбэк в аргумент */\n this.listener = LayoutEvents.addListener(() => undefined);\n }\n\n public componentWillUnmount() {\n this.listener.remove();\n }\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.kebabPinOffset,\n popupMargin: theme.kebabMargin,\n popupPinSize: theme.kebabPinSize,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { disabled } = this.props;\n const { positions, disableAnimations, onOpen, onClose } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <PopupMenu\n popupHasPin\n positions={positions}\n onChangeMenuState={this.handleChangeMenuState}\n caption={this.renderCaption}\n disableAnimations={disableAnimations}\n menuMaxHeight={this.props.menuMaxHeight}\n onOpen={onOpen}\n onClose={onClose}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled } = this.props;\n const handleCaptionKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!disabled) {\n this.handleCaptionKeyDown(event, captionProps.openMenu);\n }\n };\n\n const handleCaptionClick = () => {\n if (!disabled) {\n captionProps.toggleMenu();\n }\n };\n\n return (\n <span\n tabIndex={disabled ? -1 : 0}\n onClick={handleCaptionClick}\n onKeyDown={handleCaptionKeyDown}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n className={cx({\n [styles.kebab(this.theme)]: true,\n [styles.opened(this.theme)]: captionProps.opened,\n [styles.disabled()]: disabled,\n [styles.focused(this.theme)]: this.state.focusedByTab,\n })}\n >\n {this.renderIcon()}\n </span>\n );\n };\n\n private handleCaptionKeyDown = (\n e: React.KeyboardEvent<HTMLDivElement>,\n openMenu: PopupMenuCaptionProps['openMenu'],\n ) => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n openMenu(true);\n }\n };\n\n private handleChangeMenuState = (isOpened: boolean, restoreFocus: boolean): void => {\n this.setState({\n focusedByTab: !isOpened && restoreFocus,\n });\n };\n\n private handleFocus = () => {\n if (!this.props.disabled) {\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 }\n };\n\n private handleBlur = () => {\n this.setState({\n focusedByTab: false,\n });\n };\n\n private renderIcon() {\n const { size, icon } = this.getProps();\n return (\n <div\n className={cx({\n [styles.icon()]: true,\n [styles.iconsmall()]: size === 'small',\n [styles.iconmedium()]: size === 'medium',\n [styles.iconlarge()]: size === 'large',\n })}\n >\n {icon}\n </div>\n );\n }\n}\n\nKebab.propTypes = {\n children: PropTypes.node,\n disabled: PropTypes.bool,\n menuMaxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n /**\n * Размер кебаба small 14px | large 20px\n */\n size: PropTypes.string,\n\n /**\n * Коллбек, вызывающийся перед закрытием кебаба\n */\n onClose: PropTypes.func,\n\n /**\n * Коллбек, вызывающийся перед открытием кебаба\n */\n onOpen: PropTypes.func,\n};\n"]}
@@ -47,6 +47,7 @@ export interface LinkState {
47
47
  export declare const LinkDataTids: {
48
48
  readonly root: "Link__root";
49
49
  };
50
+ declare type DefaultProps = Required<Pick<LinkProps, 'href' | 'use'>>;
50
51
  /**
51
52
  * Элемент ссылки из HTML.
52
53
  */
@@ -58,13 +59,9 @@ export declare class Link extends React.Component<LinkProps, LinkState> {
58
59
  icon: PropTypes.Requireable<PropTypes.ReactNodeLike>;
59
60
  use: PropTypes.Requireable<string>;
60
61
  };
61
- static defaultProps: {
62
- href: string;
63
- use: string;
64
- };
65
- state: {
66
- focusedByTab: boolean;
67
- };
62
+ static defaultProps: DefaultProps;
63
+ private getProps;
64
+ state: LinkState;
68
65
  private theme;
69
66
  private setRootNode;
70
67
  render(): JSX.Element;
@@ -73,3 +70,4 @@ export declare class Link extends React.Component<LinkProps, LinkState> {
73
70
  private _handleBlur;
74
71
  private _handleClick;
75
72
  }
73
+ export {};
@@ -10,6 +10,7 @@ var _Spinner = require("../Spinner");
10
10
  var _CommonWrapper = require("../../internal/CommonWrapper");
11
11
  var _Emotion = require("../../lib/theming/Emotion");
12
12
  var _rootNodeDecorator = require("../../lib/rootNode/rootNodeDecorator");
13
+ var _createPropsGetter = require("../../lib/createPropsGetter");
13
14
 
14
15
  var _Link = require("./Link.styles");var _excluded = ["disabled", "href", "icon", "use", "loading", "_button", "_buttonOpened", "rel"];var _class, _class2, _temp;
15
16
 
@@ -62,12 +63,15 @@ var _Link = require("./Link.styles");var _excluded = ["disabled", "href", "icon"
62
63
 
63
64
 
64
65
  var LinkDataTids = {
65
- root: 'Link__root' };
66
+ root: 'Link__root' };exports.LinkDataTids = LinkDataTids;
67
+
68
+
69
+
66
70
 
67
71
 
68
72
  /**
69
73
  * Элемент ссылки из HTML.
70
- */exports.LinkDataTids = LinkDataTids;var
74
+ */var
71
75
 
72
76
  Link = (0, _rootNodeDecorator.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Link, _React$Component);function Link() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
73
77
 
@@ -87,6 +91,8 @@ Link = (0, _rootNodeDecorator.rootNode)(_class = (_temp = _class2 = /*#__PURE__*
87
91
 
88
92
 
89
93
 
94
+ getProps = (0, _createPropsGetter.createPropsGetter)(Link.defaultProps);_this.
95
+
90
96
  state = {
91
97
  focusedByTab: false };_this.
92
98
 
@@ -161,7 +167,7 @@ Link = (0, _rootNodeDecorator.rootNode)(_class = (_temp = _class2 = /*#__PURE__*
161
167
 
162
168
  };_this.
163
169
 
164
- _handleFocus = function (event) {
170
+ _handleFocus = function () {
165
171
  if (!_this.props.disabled) {
166
172
  // focus event fires before keyDown eventlistener
167
173
  // so we should check tabPressed in async way
@@ -178,11 +184,12 @@ Link = (0, _rootNodeDecorator.rootNode)(_class = (_temp = _class2 = /*#__PURE__*
178
184
  };_this.
179
185
 
180
186
  _handleClick = function (event) {
181
- var _this$props = _this.props,href = _this$props.href,onClick = _this$props.onClick,disabled = _this$props.disabled,loading = _this$props.loading;
187
+ var _this$props = _this.props,onClick = _this$props.onClick,disabled = _this$props.disabled,loading = _this$props.loading;
188
+ var href = _this.getProps().href;
182
189
  if (!href) {
183
190
  event.preventDefault();
184
191
  }
185
192
  if (onClick && !disabled && !loading) {
186
193
  onClick(event);
187
194
  }
188
- };return _this;}var _proto = Link.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.props), _this2.renderMain);});};return Link;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Link', _class2.propTypes = { disabled: _propTypes.default.bool, href: _propTypes.default.string, icon: _propTypes.default.node, use: _propTypes.default.oneOf(['default', 'success', 'danger', 'grayed']) }, _class2.defaultProps = { href: '', use: 'default' }, _temp)) || _class;exports.Link = Link;
195
+ };return _this;}var _proto = Link.prototype;_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.getProps()), _this2.renderMain);});};return Link;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Link', _class2.propTypes = { disabled: _propTypes.default.bool, href: _propTypes.default.string, icon: _propTypes.default.node, use: _propTypes.default.oneOf(['default', 'success', 'danger', 'grayed']) }, _class2.defaultProps = { href: '', use: 'default' }, _temp)) || _class;exports.Link = Link;
@@ -1 +1 @@
1
- {"version":3,"sources":["Link.tsx"],"names":["LinkDataTids","root","Link","rootNode","state","focusedByTab","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","rest","iconElement","styles","theme","arrow","focused","linkProps","className","button","buttonOpened","useDefault","useSuccess","useDanger","useGrayed","useGrayedFocus","focus","onClick","_handleClick","onFocus","_handleFocus","onBlur","_handleBlur","tabIndex","children","event","requestAnimationFrame","keyListener","isTabPressed","setState","preventDefault","render","setRootNode","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","node","oneOf","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './Link.styles';\n\nexport interface LinkProps\n extends CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n }\n > {}\n\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps = {\n href: '',\n use: 'default',\n };\n\n public state = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<LinkProps>) => {\n const { disabled, href, icon, use, loading, _button, _buttonOpened, rel: relOrigin, ...rest } = props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <span className={styles.icon(this.theme)}>{loading ? <Spinner caption={null} dimmed inline /> : icon}</span>\n );\n }\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n\n const focused = !disabled && this.state.focusedByTab;\n\n const linkProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.button(this.theme)]: !!_button,\n [styles.buttonOpened(this.theme)]: !!_buttonOpened,\n [styles.useDefault(this.theme)]: use === 'default',\n [styles.useSuccess(this.theme)]: use === 'success',\n [styles.useDanger(this.theme)]: use === 'danger',\n [styles.useGrayed(this.theme)]: use === 'grayed',\n [styles.useGrayedFocus(this.theme)]: use === 'grayed' && focused,\n [styles.focus(this.theme)]: focused,\n [styles.disabled(this.theme)]: !!disabled || !!loading,\n }),\n href,\n rel,\n onClick: this._handleClick,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n return (\n <a data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {iconElement}\n {this.props.children}\n {arrow}\n </a>\n );\n };\n\n private _handleFocus = (event: React.FocusEvent<HTMLAnchorElement>) => {\n if (!this.props.disabled) {\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 }\n };\n\n private _handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private _handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n const { href, onClick, disabled, loading } = this.props;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n}\n"]}
1
+ {"version":3,"sources":["Link.tsx"],"names":["LinkDataTids","root","Link","rootNode","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","rest","iconElement","styles","theme","arrow","focused","linkProps","className","button","buttonOpened","useDefault","useSuccess","useDanger","useGrayed","useGrayedFocus","focus","onClick","_handleClick","onFocus","_handleFocus","onBlur","_handleBlur","tabIndex","children","requestAnimationFrame","keyListener","isTabPressed","setState","event","preventDefault","render","setRootNode","React","Component","__KONTUR_REACT_UI__","propTypes","PropTypes","bool","string","node","oneOf"],"mappings":"qdAAA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDO,IAAMA,YAAY,GAAG;AAC1BC,EAAAA,IAAI,EAAE,YADoB,EAArB,C;;;;;;AAOP;AACA;AACA,G;;AAEaC,I,OADZC,2B;;;;;;;;;;;;;;;;;;AAmBSC,IAAAA,Q,GAAW,0CAAkBF,IAAI,CAACG,YAAvB,C;;AAEZC,IAAAA,K,GAAmB;AACxBC,MAAAA,YAAY,EAAE,KADU,E;;;;;;;;;;;;;;;;;;;;;AAsBlBC,IAAAA,U,GAAa,UAACC,KAAD,EAAyD;AAC5E,UAAQC,QAAR,GAAgGD,KAAhG,CAAQC,QAAR,CAAkBC,IAAlB,GAAgGF,KAAhG,CAAkBE,IAAlB,CAAwBC,IAAxB,GAAgGH,KAAhG,CAAwBG,IAAxB,CAA8BC,GAA9B,GAAgGJ,KAAhG,CAA8BI,GAA9B,CAAmCC,OAAnC,GAAgGL,KAAhG,CAAmCK,OAAnC,CAA4CC,OAA5C,GAAgGN,KAAhG,CAA4CM,OAA5C,CAAqDC,aAArD,GAAgGP,KAAhG,CAAqDO,aAArD,CAAyEC,SAAzE,GAAgGR,KAAhG,CAAoES,GAApE,CAAuFC,IAAvF,+CAAgGV,KAAhG;;AAEA,UAAIW,WAAW,GAAG,IAAlB;AACA,UAAIR,IAAJ,EAAU;AACRQ,QAAAA,WAAW;AACT,+CAAM,SAAS,EAAEC,aAAOT,IAAP,CAAY,MAAKU,KAAjB,CAAjB,IAA2CR,OAAO,gBAAG,6BAAC,gBAAD,IAAS,OAAO,EAAE,IAAlB,EAAwB,MAAM,MAA9B,EAA+B,MAAM,MAArC,GAAH,GAA8CF,IAAhG,CADF;;AAGD;;AAED,UAAIW,KAAK,GAAG,IAAZ;AACA,UAAIR,OAAJ,EAAa;AACXQ,QAAAA,KAAK,gBAAG,uCAAM,SAAS,EAAEF,aAAOE,KAAP,EAAjB,GAAR;AACD;;AAED,UAAIL,GAAG,GAAGD,SAAV;AACA,UAAI,OAAOC,GAAP,KAAe,WAAf,IAA8BP,IAAlC,EAAwC;AACtCO,QAAAA,GAAG,iBAAc,2BAAeP,IAAf,IAAuB,aAAvB,GAAuC,EAArD,CAAH;AACD;;AAED,UAAMa,OAAO,GAAG,CAACd,QAAD,IAAa,MAAKJ,KAAL,CAAWC,YAAxC;;AAEA,UAAMkB,SAAS,GAAG;AAChBC,QAAAA,SAAS,EAAE;AACRL,qBAAOpB,IAAP,CAAY,MAAKqB,KAAjB,CADQ,IACkB,IADlB;AAERD,qBAAOM,MAAP,CAAc,MAAKL,KAAnB,CAFQ,IAEoB,CAAC,CAACP,OAFtB;AAGRM,qBAAOO,YAAP,CAAoB,MAAKN,KAAzB,CAHQ,IAG0B,CAAC,CAACN,aAH5B;AAIRK,qBAAOQ,UAAP,CAAkB,MAAKP,KAAvB,CAJQ,IAIwBT,GAAG,KAAK,SAJhC;AAKRQ,qBAAOS,UAAP,CAAkB,MAAKR,KAAvB,CALQ,IAKwBT,GAAG,KAAK,SALhC;AAMRQ,qBAAOU,SAAP,CAAiB,MAAKT,KAAtB,CANQ,IAMuBT,GAAG,KAAK,QAN/B;AAORQ,qBAAOW,SAAP,CAAiB,MAAKV,KAAtB,CAPQ,IAOuBT,GAAG,KAAK,QAP/B;AAQRQ,qBAAOY,cAAP,CAAsB,MAAKX,KAA3B,CARQ,IAQ4BT,GAAG,KAAK,QAAR,IAAoBW,OARhD;AASRH,qBAAOa,KAAP,CAAa,MAAKZ,KAAlB,CATQ,IASmBE,OATnB;AAURH,qBAAOX,QAAP,CAAgB,MAAKY,KAArB,CAVQ,IAUsB,CAAC,CAACZ,QAAF,IAAc,CAAC,CAACI,OAVtC,OADK;;AAahBH,QAAAA,IAAI,EAAJA,IAbgB;AAchBO,QAAAA,GAAG,EAAHA,GAdgB;AAehBiB,QAAAA,OAAO,EAAE,MAAKC,YAfE;AAgBhBC,QAAAA,OAAO,EAAE,MAAKC,YAhBE;AAiBhBC,QAAAA,MAAM,EAAE,MAAKC,WAjBG;AAkBhBC,QAAAA,QAAQ,EAAE/B,QAAQ,IAAII,OAAZ,GAAsB,CAAC,CAAvB,GAA2B,MAAKL,KAAL,CAAWgC,QAlBhC,EAAlB;;;AAqBA;AACE,mEAAG,YAAUzC,YAAY,CAACC,IAA1B,IAAoCkB,IAApC,EAA8CM,SAA9C;AACGL,QAAAA,WADH;AAEG,cAAKX,KAAL,CAAWiC,QAFd;AAGGnB,QAAAA,KAHH,CADF;;;AAOD,K;;AAEOe,IAAAA,Y,GAAe,YAAM;AAC3B,UAAI,CAAC,MAAK7B,KAAL,CAAWC,QAAhB,EAA0B;AACxB;AACA;AACAiC,QAAAA,qBAAqB,CAAC,YAAM;AAC1B,cAAIC,yBAAYC,YAAhB,EAA8B;AAC5B,kBAAKC,QAAL,CAAc,EAAEvC,YAAY,EAAE,IAAhB,EAAd;AACD;AACF,SAJoB,CAArB;AAKD;AACF,K;;AAEOiC,IAAAA,W,GAAc,YAAM;AAC1B,YAAKM,QAAL,CAAc,EAAEvC,YAAY,EAAE,KAAhB,EAAd;AACD,K;;AAEO6B,IAAAA,Y,GAAe,UAACW,KAAD,EAAgD;AACrE,wBAAuC,MAAKtC,KAA5C,CAAQ0B,OAAR,eAAQA,OAAR,CAAiBzB,QAAjB,eAAiBA,QAAjB,CAA2BI,OAA3B,eAA2BA,OAA3B;AACA,UAAMH,IAAI,GAAG,MAAKP,QAAL,GAAgBO,IAA7B;AACA,UAAI,CAACA,IAAL,EAAW;AACToC,QAAAA,KAAK,CAACC,cAAN;AACD;AACD,UAAIb,OAAO,IAAI,CAACzB,QAAZ,IAAwB,CAACI,OAA7B,EAAsC;AACpCqB,QAAAA,OAAO,CAACY,KAAD,CAAP;AACD;AACF,K,kDA5FME,M,GAAP,kBAA6B,mBAC3B,oBACE,6BAAC,0BAAD,CAAc,QAAd,QACG,UAAC3B,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,6BAAC,4BAAD,2BAAe,WAAW,EAAE,MAAI,CAAC4B,WAAjC,IAAkD,MAAI,CAAC9C,QAAL,EAAlD,GACG,MAAI,CAACI,UADR,CADF,CAKD,CARH,CADF,CAYD,C,eAxCuB2C,eAAMC,S,WAChBC,mB,GAAsB,M,UAEtBC,S,GAAY,EACxB5C,QAAQ,EAAE6C,mBAAUC,IADI,EAGxB7C,IAAI,EAAE4C,mBAAUE,MAHQ,EAKxB7C,IAAI,EAAE2C,mBAAUG,IALQ,EAOxB7C,GAAG,EAAE0C,mBAAUI,KAAV,CAAgB,CAAC,SAAD,EAAY,SAAZ,EAAuB,QAAvB,EAAiC,QAAjC,CAAhB,CAPmB,E,UAUZtD,Y,GAA6B,EACzCM,IAAI,EAAE,EADmC,EAEzCE,GAAG,EAAE,SAFoC,E","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonWrapper, CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\nimport { createPropsGetter, DefaultizedProps } from '../../lib/createPropsGetter';\n\nimport { styles } from './Link.styles';\n\nexport interface LinkProps\n extends CommonProps,\n Override<\n React.AnchorHTMLAttributes<HTMLAnchorElement>,\n {\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * HTML-атрибут `href`.\n */\n href?: string;\n /**\n * Добавляет ссылке иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Тема ссылки.\n */\n use?: 'default' | 'success' | 'danger' | 'grayed';\n /**\n * @ignore\n */\n _button?: boolean;\n /**\n * @ignore\n */\n _buttonOpened?: boolean;\n /**\n * HTML-атрибут `tabindex`.\n */\n tabIndex?: number;\n /**\n * Переводит ссылку в состояние загрузки.\n */\n loading?: boolean;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n }\n > {}\n\nexport interface LinkState {\n focusedByTab: boolean;\n}\n\nexport const LinkDataTids = {\n root: 'Link__root',\n} as const;\n\ntype DefaultProps = Required<Pick<LinkProps, 'href' | 'use'>>;\ntype DefaultizedLinkProps = DefaultizedProps<LinkProps, DefaultProps>;\n\n/**\n * Элемент ссылки из HTML.\n */\n@rootNode\nexport class Link extends React.Component<LinkProps, LinkState> {\n public static __KONTUR_REACT_UI__ = 'Link';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n use: PropTypes.oneOf(['default', 'success', 'danger', 'grayed']),\n };\n\n public static defaultProps: DefaultProps = {\n href: '',\n use: 'default',\n };\n\n private getProps = createPropsGetter(Link.defaultProps);\n\n public state: LinkState = {\n focusedByTab: false,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const { disabled, href, icon, use, loading, _button, _buttonOpened, rel: relOrigin, ...rest } = props;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <span className={styles.icon(this.theme)}>{loading ? <Spinner caption={null} dimmed inline /> : icon}</span>\n );\n }\n\n let arrow = null;\n if (_button) {\n arrow = <span className={styles.arrow()} />;\n }\n\n let rel = relOrigin;\n if (typeof rel === 'undefined' && href) {\n rel = `noopener${isExternalLink(href) ? ' noreferrer' : ''}`;\n }\n\n const focused = !disabled && this.state.focusedByTab;\n\n const linkProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.button(this.theme)]: !!_button,\n [styles.buttonOpened(this.theme)]: !!_buttonOpened,\n [styles.useDefault(this.theme)]: use === 'default',\n [styles.useSuccess(this.theme)]: use === 'success',\n [styles.useDanger(this.theme)]: use === 'danger',\n [styles.useGrayed(this.theme)]: use === 'grayed',\n [styles.useGrayedFocus(this.theme)]: use === 'grayed' && focused,\n [styles.focus(this.theme)]: focused,\n [styles.disabled(this.theme)]: !!disabled || !!loading,\n }),\n href,\n rel,\n onClick: this._handleClick,\n onFocus: this._handleFocus,\n onBlur: this._handleBlur,\n tabIndex: disabled || loading ? -1 : this.props.tabIndex,\n };\n\n return (\n <a data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {iconElement}\n {this.props.children}\n {arrow}\n </a>\n );\n };\n\n private _handleFocus = () => {\n if (!this.props.disabled) {\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 }\n };\n\n private _handleBlur = () => {\n this.setState({ focusedByTab: false });\n };\n\n private _handleClick = (event: React.MouseEvent<HTMLAnchorElement>) => {\n const { onClick, disabled, loading } = this.props;\n const href = this.getProps().href;\n if (!href) {\n event.preventDefault();\n }\n if (onClick && !disabled && !loading) {\n onClick(event);\n }\n };\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import { AnyObject } from '../../lib/utils';
3
4
  import { SpinnerProps } from '../Spinner';
4
5
  import { CommonProps } from '../../internal/CommonWrapper';
5
6
  export interface LoaderProps extends CommonProps {
@@ -8,7 +9,7 @@ export interface LoaderProps extends CommonProps {
8
9
  * Флаг переключения состояния лоадера
9
10
  * @default false
10
11
  */
11
- active: boolean;
12
+ active?: boolean;
12
13
  caption?: SpinnerProps['caption'];
13
14
  /**
14
15
  * Компонент заменяющий спиннер.
@@ -20,29 +21,31 @@ export interface LoaderProps extends CommonProps {
20
21
  * Время в миллисекундах для показа вуали без спиннера.
21
22
  * @default 300
22
23
  */
23
- delayBeforeSpinnerShow: number;
24
+ delayBeforeSpinnerShow?: number;
24
25
  /**
25
26
  * Минимальное время в миллисекундах для показа спиннера
26
27
  * @default 1000
27
28
  */
28
- minimalDelayBeforeSpinnerHide: number;
29
+ minimalDelayBeforeSpinnerHide?: number;
29
30
  }
30
31
  export interface LoaderState {
31
32
  isStickySpinner: boolean;
32
33
  isSpinnerVisible: boolean;
33
34
  isLoaderActive: boolean;
34
- spinnerStyle?: object;
35
+ spinnerStyle?: AnyObject;
35
36
  }
36
37
  export declare const LoaderDataTids: {
37
38
  readonly veil: "Loader__Veil";
38
39
  readonly spinner: "Loader__Spinner";
39
40
  };
41
+ declare type DefaultProps = Required<Pick<LoaderProps, 'type' | 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>>;
40
42
  /**
41
43
  * DRAFT - лоадер-контейнер
42
44
  */
43
45
  export declare class Loader extends React.Component<LoaderProps, LoaderState> {
44
46
  static __KONTUR_REACT_UI__: string;
45
- static defaultProps: Partial<LoaderProps>;
47
+ static defaultProps: DefaultProps;
48
+ private getProps;
46
49
  static propTypes: {
47
50
  /**
48
51
  * показываем лоадер или нет
@@ -102,3 +105,4 @@ export declare class Loader extends React.Component<LoaderProps, LoaderState> {
102
105
  private makeObservable;
103
106
  private makeUnobservable;
104
107
  }
108
+ export {};
@@ -2,6 +2,7 @@
2
2
  var _propTypes = _interopRequireDefault(require("prop-types"));
3
3
  var _lodash = _interopRequireDefault(require("lodash.debounce"));
4
4
 
5
+
5
6
  var LayoutEvents = _interopRequireWildcard(require("../../lib/LayoutEvents"));
6
7
  var _Spinner = require("../Spinner");
7
8
 
@@ -15,6 +16,7 @@ var _taskWithDelayAndMinimalDuration = require("../../lib/taskWithDelayAndMinima
15
16
  var _tabbableHelpers = require("../../lib/dom/tabbableHelpers");
16
17
  var _rootNode = require("../../lib/rootNode");
17
18
  var _getDOMRect2 = require("../../lib/dom/getDOMRect");
19
+ var _createPropsGetter = require("../../lib/createPropsGetter");
18
20
 
19
21
  var _Loader = require("./Loader.styles");var _class, _class2, _temp;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;}
20
22
 
@@ -53,12 +55,16 @@ var _Loader = require("./Loader.styles");var _class, _class2, _temp;function _ge
53
55
 
54
56
  var LoaderDataTids = {
55
57
  veil: 'Loader__Veil',
56
- spinner: 'Loader__Spinner' };
58
+ spinner: 'Loader__Spinner' };exports.LoaderDataTids = LoaderDataTids;
59
+
60
+
61
+
62
+
57
63
 
58
64
 
59
65
  /**
60
66
  * DRAFT - лоадер-контейнер
61
- */exports.LoaderDataTids = LoaderDataTids;var
67
+ */var
62
68
 
63
69
  Loader = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(Loader, _React$Component);
64
70
 
@@ -116,11 +122,16 @@ Loader = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
116
122
 
117
123
 
118
124
 
125
+
126
+
119
127
 
120
128
 
121
129
 
122
130
  function Loader(props) {var _this;
123
- _this = _React$Component.call(this, props) || this;_this.
131
+ _this = _React$Component.call(this, props) || this;_this.getProps = (0, _createPropsGetter.createPropsGetter)(Loader.defaultProps);_this.
132
+
133
+
134
+
124
135
 
125
136
 
126
137
 
@@ -394,7 +405,7 @@ Loader = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE__*/functi
394
405
  makeUnobservable = function () {var _this$childrenObserve;
395
406
  (_this$childrenObserve = _this.childrenObserver) == null ? void 0 : _this$childrenObserve.disconnect();
396
407
  _this.childrenObserver = null;
397
- };_this.spinnerContainerNode = null;_this.childrenContainerNode = null;_this.childrenObserver = null;_this.spinnerNode = null;_this.state = { isStickySpinner: false, isSpinnerVisible: false, isLoaderActive: false };_this.spinnerTask = new _taskWithDelayAndMinimalDuration.TaskWithDelayAndMinimalDuration({ delayBeforeTaskStart: _this.props.delayBeforeSpinnerShow, durationOfTask: _this.props.minimalDelayBeforeSpinnerHide, taskStartCallback: function taskStartCallback() {return _this.setState({ isSpinnerVisible: true });}, taskStopCallback: function taskStopCallback() {return _this.setState({ isSpinnerVisible: false });} });return _this;}var _proto = Loader.prototype;_proto.componentDidMount = function componentDidMount() {this.checkSpinnerPosition();this.props.active && this.spinnerTask.start();this.layoutEvents = LayoutEvents.addListener((0, _lodash.default)(this.checkSpinnerPosition, 10));if (this.props.active) {this.disableChildrenFocus();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var _this$props = this.props,component = _this$props.component,active = _this$props.active,delayBeforeSpinnerShow = _this$props.delayBeforeSpinnerShow,minimalDelayBeforeSpinnerHide = _this$props.minimalDelayBeforeSpinnerHide;var isLoaderActive = this.state.isLoaderActive;if (active && !prevProps.active || prevProps.component !== component) {this.checkSpinnerPosition();}if (delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow || minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide) {this.spinnerTask.update({ delayBeforeTaskStart: delayBeforeSpinnerShow, durationOfTask: minimalDelayBeforeSpinnerHide });}if (active !== prevProps.active) {active ? this.spinnerTask.start() : this.spinnerTask.stop();}if (isLoaderActive !== prevState.isLoaderActive) {if (isLoaderActive) {this.disableChildrenFocus();} else {this.enableChildrenFocus();}}};_proto.componentWillUnmount = function componentWillUnmount() {this.makeUnobservable();if (this.layoutEvents) {this.layoutEvents.remove();}this.spinnerTask.clearTask();};Loader.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {if (props.active && !state.isLoaderActive) {return { isLoaderActive: true };}if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {return { isLoaderActive: false };}return state;};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _cx;var _this$props2 = this.props,type = _this$props2.type,caption = _this$props2.caption,component = _this$props2.component;var isLoaderActive = this.state.isLoaderActive;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { className: _Loader.styles.loader(), "data-tid": isLoaderActive ? LoaderDataTids.veil : '' }, /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { priority: 'Loader', applyZIndex: isLoaderActive, coverChildren: isLoaderActive, style: { height: '100%' }, wrapperRef: this.childrenRef }, this.props.children), isLoaderActive && /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { wrapperRef: this.spinnerRef, priority: 'Loader', className: (0, _Emotion.cx)((_cx = {}, _cx[_Loader.styles.active(this.theme)] = isLoaderActive, _cx)) }, this.state.isSpinnerVisible && this.renderSpinner(type, caption, component))));};_proto.renderSpinner = function renderSpinner(type, caption, component) {var _cx2,_this3 = this;return /*#__PURE__*/_react.default.createElement("span", { "data-tid": LoaderDataTids.spinner, className: (0, _Emotion.cx)(_Loader.styles.spinnerContainer(), (_cx2 = {}, _cx2[_Loader.styles.spinnerContainerSticky()] = this.state.isStickySpinner, _cx2)), style: this.state.spinnerStyle }, /*#__PURE__*/_react.default.createElement("div", { className: _Loader.styles.spinnerComponentWrapper(), ref: function ref(element) {_this3.spinnerNode = element;} }, component !== undefined ? component : /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: type, caption: caption })));};return Loader;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Loader', _class2.defaultProps = { type: _Spinner.Spinner.Types.normal, active: false, delayBeforeSpinnerShow: _currentEnvironment.isTestEnv ? 0 : 300, minimalDelayBeforeSpinnerHide: _currentEnvironment.isTestEnv ? 0 : 1000 }, _class2.propTypes = { /**
408
+ };_this.spinnerContainerNode = null;_this.childrenContainerNode = null;_this.childrenObserver = null;_this.spinnerNode = null;_this.state = { isStickySpinner: false, isSpinnerVisible: false, isLoaderActive: false };_this.spinnerTask = new _taskWithDelayAndMinimalDuration.TaskWithDelayAndMinimalDuration({ delayBeforeTaskStart: _this.getProps().delayBeforeSpinnerShow, durationOfTask: _this.getProps().minimalDelayBeforeSpinnerHide, taskStartCallback: function taskStartCallback() {return _this.setState({ isSpinnerVisible: true });}, taskStopCallback: function taskStopCallback() {return _this.setState({ isSpinnerVisible: false });} });return _this;}var _proto = Loader.prototype;_proto.componentDidMount = function componentDidMount() {var active = this.getProps().active;this.checkSpinnerPosition();active && this.spinnerTask.start();this.layoutEvents = LayoutEvents.addListener((0, _lodash.default)(this.checkSpinnerPosition, 10));if (active) {this.disableChildrenFocus();}};_proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {var component = this.props.component;var _this$getProps = this.getProps(),active = _this$getProps.active,delayBeforeSpinnerShow = _this$getProps.delayBeforeSpinnerShow,minimalDelayBeforeSpinnerHide = _this$getProps.minimalDelayBeforeSpinnerHide;var isLoaderActive = this.state.isLoaderActive;if (active && !prevProps.active || prevProps.component !== component) {this.checkSpinnerPosition();}if (delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow || minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide) {this.spinnerTask.update({ delayBeforeTaskStart: delayBeforeSpinnerShow, durationOfTask: minimalDelayBeforeSpinnerHide });}if (active !== prevProps.active) {active ? this.spinnerTask.start() : this.spinnerTask.stop();}if (isLoaderActive !== prevState.isLoaderActive) {if (isLoaderActive) {this.disableChildrenFocus();} else {this.enableChildrenFocus();}}};_proto.componentWillUnmount = function componentWillUnmount() {this.makeUnobservable();if (this.layoutEvents) {this.layoutEvents.remove();}this.spinnerTask.clearTask();};Loader.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {if (props.active && !state.isLoaderActive) {return { isLoaderActive: true };}if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {return { isLoaderActive: false };}return state;};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = theme;return _this2.renderMain();});};_proto.renderMain = function renderMain() {var _cx;var _this$props = this.props,caption = _this$props.caption,component = _this$props.component;var type = this.getProps().type;var isLoaderActive = this.state.isLoaderActive;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: this.setRootNode }, this.props), /*#__PURE__*/_react.default.createElement("div", { className: _Loader.styles.loader(), "data-tid": isLoaderActive ? LoaderDataTids.veil : '' }, /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { priority: 'Loader', applyZIndex: isLoaderActive, coverChildren: isLoaderActive, style: { height: '100%' }, wrapperRef: this.childrenRef }, this.props.children), isLoaderActive && /*#__PURE__*/_react.default.createElement(_ZIndex.ZIndex, { wrapperRef: this.spinnerRef, priority: 'Loader', className: (0, _Emotion.cx)((_cx = {}, _cx[_Loader.styles.active(this.theme)] = isLoaderActive, _cx)) }, this.state.isSpinnerVisible && this.renderSpinner(type, caption, component))));};_proto.renderSpinner = function renderSpinner(type, caption, component) {var _cx2,_this3 = this;return /*#__PURE__*/_react.default.createElement("span", { "data-tid": LoaderDataTids.spinner, className: (0, _Emotion.cx)(_Loader.styles.spinnerContainer(), (_cx2 = {}, _cx2[_Loader.styles.spinnerContainerSticky()] = this.state.isStickySpinner, _cx2)), style: this.state.spinnerStyle }, /*#__PURE__*/_react.default.createElement("div", { className: _Loader.styles.spinnerComponentWrapper(), ref: function ref(element) {_this3.spinnerNode = element;} }, component !== undefined ? component : /*#__PURE__*/_react.default.createElement(_Spinner.Spinner, { type: type, caption: caption })));};return Loader;}(_react.default.Component), _class2.__KONTUR_REACT_UI__ = 'Loader', _class2.defaultProps = { type: _Spinner.Spinner.Types.normal, active: false, delayBeforeSpinnerShow: _currentEnvironment.isTestEnv ? 0 : 300, minimalDelayBeforeSpinnerHide: _currentEnvironment.isTestEnv ? 0 : 1000 }, _class2.propTypes = { /**
398
409
  * показываем лоадер или нет
399
410
  */active: _propTypes.default.bool, /**
400
411
  * Текст рядом с лоадером.
@@ -1 +1 @@
1
- {"version":3,"sources":["Loader.tsx"],"names":["LoaderDataTids","veil","spinner","Loader","rootNode","props","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","window","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","spinnerNode","disableChildrenFocus","childrenObserver","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","makeUnobservable","Array","from","document","querySelectorAll","getAttribute","removeAttribute","target","config","childList","subtree","observer","MutationObserver","observe","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","TaskWithDelayAndMinimalDuration","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","layoutEvents","LayoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","theme","renderMain","type","caption","setRootNode","styles","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","React","Component","__KONTUR_REACT_UI__","defaultProps","Spinner","Types","normal","isTestEnv","propTypes","PropTypes","bool","node","className","string","oneOf","Object","keys","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles } from './Loader.styles';\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active: boolean;\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n className?: string;\n type?: 'mini' | 'normal' | 'big';\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: object;\n}\n\nexport const LoaderDataTids = {\n veil: 'Loader__Veil',\n spinner: 'Loader__Spinner',\n} as const;\n\n/**\n * DRAFT - лоадер-контейнер\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: Partial<LoaderProps> = {\n type: Spinner.Types.normal,\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(Object.keys(Spinner.Types)),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.props.delayBeforeSpinnerShow,\n durationOfTask: this.props.minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n this.checkSpinnerPosition();\n this.props.active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (this.props.active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component, active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.props;\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { type, caption, component } = this.props;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? LoaderDataTids.veil : ''}>\n <ZIndex\n priority={'Loader'}\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n priority={'Loader'}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: 'mini' | 'normal' | 'big', caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(document.querySelectorAll('[origin-tabindex]')).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
1
+ {"version":3,"sources":["Loader.tsx"],"names":["LoaderDataTids","veil","spinner","Loader","rootNode","props","getProps","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","window","innerHeight","windowWidth","innerWidth","setState","isStickySpinner","spinnerStyle","Math","abs","spinnerHeight","spinnerNode","disableChildrenFocus","childrenObserver","makeObservable","tabbableElements","forEach","el","hasAttribute","setAttribute","tabIndex","toString","enableChildrenFocus","makeUnobservable","Array","from","document","querySelectorAll","getAttribute","removeAttribute","target","config","childList","subtree","observer","MutationObserver","observe","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","TaskWithDelayAndMinimalDuration","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","layoutEvents","LayoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","theme","renderMain","caption","type","setRootNode","styles","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","React","Component","__KONTUR_REACT_UI__","Spinner","Types","normal","isTestEnv","propTypes","PropTypes","bool","node","className","string","oneOf","Object","keys","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\n\nimport { AnyObject } from '../../lib/utils';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { TaskWithDelayAndMinimalDuration } from '../../lib/taskWithDelayAndMinimalDuration';\nimport { getTabbableElements } from '../../lib/dom/tabbableHelpers';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Loader.styles';\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active?: boolean;\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n className?: string;\n type?: 'mini' | 'normal' | 'big';\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow?: number;\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide?: number;\n}\n\nexport interface LoaderState {\n isStickySpinner: boolean;\n isSpinnerVisible: boolean;\n isLoaderActive: boolean;\n spinnerStyle?: AnyObject;\n}\n\nexport const LoaderDataTids = {\n veil: 'Loader__Veil',\n spinner: 'Loader__Spinner',\n} as const;\n\ntype DefaultProps = Required<\n Pick<LoaderProps, 'type' | 'active' | 'delayBeforeSpinnerShow' | 'minimalDelayBeforeSpinnerHide'>\n>;\n\n/**\n * DRAFT - лоадер-контейнер\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n\n public static defaultProps: DefaultProps = {\n type: Spinner.Types.normal,\n active: false,\n delayBeforeSpinnerShow: isTestEnv ? 0 : 300,\n minimalDelayBeforeSpinnerHide: isTestEnv ? 0 : 1000,\n };\n\n private getProps = createPropsGetter(Loader.defaultProps);\n\n public static propTypes = {\n /**\n * показываем лоадер или нет\n */\n active: PropTypes.bool,\n\n /**\n * Текст рядом с лоадером.\n *\n * @default \"Загрузка\"\n */\n caption: Spinner.propTypes.caption,\n\n component: PropTypes.node,\n\n /**\n * Класс для обертки\n */\n className: PropTypes.string,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * @default normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(Object.keys(Spinner.Types)),\n /**\n * Время в миллисекундах для показа вуали без спиннера.\n * @default 300\n */\n delayBeforeSpinnerShow: PropTypes.number,\n /**\n * Минимальное время в миллисекундах для показа спиннера\n * @default 1000\n */\n minimalDelayBeforeSpinnerHide: PropTypes.number,\n };\n\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n private spinnerContainerNode: Nullable<HTMLDivElement>;\n private childrenContainerNode: Nullable<HTMLDivElement>;\n private spinnerNode: Nullable<HTMLDivElement>;\n private layoutEvents: Nullable<{ remove: () => void }>;\n private spinnerTask: TaskWithDelayAndMinimalDuration;\n private childrenObserver: Nullable<MutationObserver>;\n\n constructor(props: LoaderProps) {\n super(props);\n\n this.spinnerContainerNode = null;\n this.childrenContainerNode = null;\n this.childrenObserver = null;\n this.spinnerNode = null;\n\n this.state = {\n isStickySpinner: false,\n isSpinnerVisible: false,\n isLoaderActive: false,\n };\n\n this.spinnerTask = new TaskWithDelayAndMinimalDuration({\n delayBeforeTaskStart: this.getProps().delayBeforeSpinnerShow,\n durationOfTask: this.getProps().minimalDelayBeforeSpinnerHide,\n taskStartCallback: () => this.setState({ isSpinnerVisible: true }),\n taskStopCallback: () => this.setState({ isSpinnerVisible: false }),\n });\n }\n\n public componentDidMount() {\n const active = this.getProps().active;\n this.checkSpinnerPosition();\n active && this.spinnerTask.start();\n this.layoutEvents = LayoutEvents.addListener(debounce(this.checkSpinnerPosition, 10));\n\n if (active) {\n this.disableChildrenFocus();\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<LoaderProps>, prevState: Readonly<LoaderState>) {\n const { component } = this.props;\n const { active, delayBeforeSpinnerShow, minimalDelayBeforeSpinnerHide } = this.getProps();\n const { isLoaderActive } = this.state;\n\n if ((active && !prevProps.active) || prevProps.component !== component) {\n this.checkSpinnerPosition();\n }\n\n if (\n delayBeforeSpinnerShow !== prevProps.delayBeforeSpinnerShow ||\n minimalDelayBeforeSpinnerHide !== prevProps.minimalDelayBeforeSpinnerHide\n ) {\n this.spinnerTask.update({\n delayBeforeTaskStart: delayBeforeSpinnerShow,\n durationOfTask: minimalDelayBeforeSpinnerHide,\n });\n }\n\n if (active !== prevProps.active) {\n active ? this.spinnerTask.start() : this.spinnerTask.stop();\n }\n\n if (isLoaderActive !== prevState.isLoaderActive) {\n if (isLoaderActive) {\n this.disableChildrenFocus();\n } else {\n this.enableChildrenFocus();\n }\n }\n }\n\n public componentWillUnmount() {\n this.makeUnobservable();\n if (this.layoutEvents) {\n this.layoutEvents.remove();\n }\n this.spinnerTask.clearTask();\n }\n\n public static getDerivedStateFromProps(props: LoaderProps, state: LoaderState): Partial<LoaderState> {\n if (props.active && !state.isLoaderActive) {\n return {\n isLoaderActive: true,\n };\n }\n if (state.isLoaderActive && !(props.active || state.isSpinnerVisible)) {\n return {\n isLoaderActive: false,\n };\n }\n\n return state;\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { caption, component } = this.props;\n const type = this.getProps().type;\n const { isLoaderActive } = this.state;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.loader()} data-tid={isLoaderActive ? LoaderDataTids.veil : ''}>\n <ZIndex\n priority={'Loader'}\n applyZIndex={isLoaderActive}\n coverChildren={isLoaderActive}\n style={{ height: '100%' }}\n wrapperRef={this.childrenRef}\n >\n {this.props.children}\n </ZIndex>\n {isLoaderActive && (\n <ZIndex\n wrapperRef={this.spinnerRef}\n priority={'Loader'}\n className={cx({\n [styles.active(this.theme)]: isLoaderActive,\n })}\n >\n {this.state.isSpinnerVisible && this.renderSpinner(type, caption, component)}\n </ZIndex>\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private childrenRef = (element: HTMLDivElement | null) => {\n this.childrenContainerNode = element;\n };\n\n private spinnerRef = (element: HTMLDivElement | null) => {\n this.spinnerContainerNode = element;\n };\n\n private renderSpinner(type?: 'mini' | 'normal' | 'big', caption?: React.ReactNode, component?: React.ReactNode) {\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={cx(styles.spinnerContainer(), { [styles.spinnerContainerSticky()]: this.state.isStickySpinner })}\n style={this.state.spinnerStyle}\n >\n <div\n className={styles.spinnerComponentWrapper()}\n ref={(element) => {\n this.spinnerNode = element;\n }}\n >\n {component !== undefined ? component : <Spinner type={type} caption={caption} />}\n </div>\n </span>\n );\n }\n\n private checkSpinnerPosition = () => {\n if (!this.spinnerContainerNode) {\n return;\n }\n\n const {\n top: containerTop,\n right: containerRight,\n bottom: containerBottom,\n left: containerLeft,\n height: containerHeight,\n width: containerWidth,\n } = getDOMRect(this.spinnerContainerNode);\n\n const windowHeight = window.innerHeight;\n const windowWidth = window.innerWidth;\n\n // Если контейнер не больше высоты и не шире окна,\n // то просто выравниваем по центру\n if (windowHeight >= containerHeight && windowWidth >= containerWidth) {\n this.setState({\n isStickySpinner: false,\n spinnerStyle: {},\n });\n return;\n }\n\n const spinnerStyle: {\n top?: number;\n right: number;\n bottom: number;\n left: number;\n } = {\n top: 30,\n right: 0,\n bottom: 30,\n left: 0,\n };\n\n // ПО ВЕРТИКАЛИ\n // Если верхний край контейнера ниже верхнего края окна,\n // то сдвигаем и лоадер\n if (containerTop > 0) {\n spinnerStyle.top = containerTop + 30;\n }\n\n // Если нижний край контейнера выше нижнего края окна,\n // то сдвигаем и лоадер\n if (containerBottom < windowHeight) {\n spinnerStyle.bottom = Math.abs(windowHeight - containerBottom) + 30;\n }\n\n // Если знаем высоту спиннера и нижний край контейнера поднимается\n // выше отступа на высоту спиннера, то убираем верхнюю позицию лоадера\n\n const spinnerHeight = getDOMRect(this.spinnerNode).height;\n\n if (spinnerHeight && spinnerStyle.bottom >= windowHeight - spinnerHeight) {\n delete spinnerStyle.top;\n }\n\n // ПО ГОРИЗОНТАЛИ\n // Если левый край контейнера правее левого края окна,\n // то сдвигаем и лоадер\n if (containerLeft > 0) {\n spinnerStyle.left = containerLeft;\n }\n\n // Если правый край контейнера левее правого края окна,\n // то сдвигаем и лоадер\n if (containerRight < windowWidth) {\n spinnerStyle.right = windowWidth - containerRight;\n }\n\n this.setState({\n isStickySpinner: true,\n spinnerStyle,\n });\n };\n\n private disableChildrenFocus = () => {\n if (!this.childrenObserver) {\n this.makeObservable();\n }\n const tabbableElements = getTabbableElements(this.childrenContainerNode);\n tabbableElements.forEach((el) => {\n if (!el.hasAttribute('origin-tabindex')) {\n el.setAttribute('origin-tabindex', el.tabIndex.toString());\n }\n el.tabIndex = -1;\n });\n };\n\n private enableChildrenFocus = () => {\n this.makeUnobservable();\n // NOTE: NodeList doesn't support 'forEach' method in IE11 and other older browsers\n Array.from(document.querySelectorAll('[origin-tabindex]')).forEach((el) => {\n el.setAttribute('tabindex', el.getAttribute('origin-tabindex') ?? '0');\n el.removeAttribute('origin-tabindex');\n });\n };\n\n private makeObservable = () => {\n const target = this.childrenContainerNode;\n if (!target) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new MutationObserver(this.disableChildrenFocus);\n observer.observe(target, config);\n this.childrenObserver = observer;\n };\n\n private makeUnobservable = () => {\n this.childrenObserver?.disconnect();\n this.childrenObserver = null;\n };\n}\n"]}
@@ -4,6 +4,12 @@ var _Tooltip = require("../../Tooltip");
4
4
  var _Button = require("../../Button");
5
5
  var _Loader = require("../Loader");var
6
6
 
7
+
8
+
9
+
10
+
11
+
12
+
7
13
  LoaderAndButton = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(LoaderAndButton, _React$Component);function LoaderAndButton() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
8
14
  state = {
9
15
  isTooltipOpened: false };return _this;}var _proto = LoaderAndButton.prototype;_proto.
@@ -1 +1 @@
1
- {"version":3,"sources":["LoaderAndButton.tsx"],"names":["LoaderAndButton","state","isTooltipOpened","render","props","active","setState","isActive","React","Component"],"mappings":"2PAAA;;AAEA;AACA;AACA,mC;;AAEaA,e;AACJC,IAAAA,K,GAAQ;AACbC,MAAAA,eAAe,EAAE,KADJ,E;;;AAIRC,EAAAA,M,GAAP,kBAAgB;AACd;AACE,mCAAC,cAAD,IAAQ,MAAM,EAAE,KAAKC,KAAL,CAAWC,MAA3B,EAAmC,IAAI,EAAE,KAAzC;AACE,iKADF;;;;AAKE,mCAAC,gBAAD,IAAS,MAAM,EAAE,0BAAM,eAAN,EAAjB,EAAwC,OAAO,EAAE,KAAKJ,KAAL,CAAWC,eAAX,GAA6B,QAA7B,GAAwC,QAAzF;AACE,mCAAC,cAAD;AACE,QAAA,OAAO,EAAE,mBAAM;AACb,UAAA,MAAI,CAACI,QAAL,CAAc,EAAEC,QAAQ,EAAE,IAAZ,EAAkBL,eAAe,EAAE,IAAnC,EAAd;AACD,SAHH,wBADF,CALF;;;;;AAcE,wMAdF;;;;AAkBE;AACqG,SADrG;AAEE,0IAFF;AAGE,oEAHF,yBAlBF;;AAuBE,0FAvBF;AAwBE,gUAxBF;;;;;AA6BE;AACE,2GADF;AAEE,wFAFF;AAGE,wFAHF,CA7BF,CADF;;;;AAqCD,G,0BA3CkCM,eAAMC,S","sourcesContent":["import React from 'react';\n\nimport { Tooltip } from '../../Tooltip';\nimport { Button } from '../../Button';\nimport { Loader } from '../Loader';\n\nexport class LoaderAndButton extends React.Component<{ active: boolean }> {\n public state = {\n isTooltipOpened: false,\n };\n\n public render() {\n return (\n <Loader active={this.props.active} type={'big'}>\n <h1>\n Yeah, and if you were the pope they&apos;d be all, &quot;Straighten your pope hat.&quot; And &quot;Put on your\n good vestments.&quot;\n </h1>\n <Tooltip render={() => 'Yes, you can!'} trigger={this.state.isTooltipOpened ? 'opened' : 'closed'}>\n <Button\n onClick={() => {\n this.setState({ isActive: true, isTooltipOpened: true });\n }}\n >\n Can you click me?\n </Button>\n </Tooltip>\n <p>\n No, I&apos;m Santa Claus! I guess if you want children beaten, you have to do it yourself. We&apos;re also\n Santa Claus! Leela, Bender, we&apos;re going grave robbing.\n </p>\n <p>\n Are you crazy? I can&apos;t swallow that. Large bet on myself in round one. Hey, whatcha watching?{' '}\n <strong> Moving along… I guess if you want children beaten, you have to do it yourself.</strong>\n <em>It&apos;s okay, Bender.</em> I like cooking too.\n </p>\n <h2>Oh, I think we should just stay friends.</h2>\n <p>\n No argument here. And when we woke up, we had these bodies. You guys go on without me! I&apos;m going to go…\n look for more stuff to steal! Oh, how awful. Did he at least die painlessly? …To shreds, you say. Well, how is\n his wife holding up? …To shreds, you say.\n </p>\n <ol>\n <li>No! The kind with looting and maybe starting a few fires!</li>\n <li>You are the last hope of the universe.</li>\n <li>Hey, guess what you&apos;re accessories to.</li>\n </ol>\n </Loader>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["LoaderAndButton.tsx"],"names":["LoaderAndButton","state","isTooltipOpened","render","props","active","setState","isActive","React","Component"],"mappings":"2PAAA;;AAEA;AACA;AACA,mC;;;;;;;;AAQaA,e;AACJC,IAAAA,K,GAA8B;AACnCC,MAAAA,eAAe,EAAE,KADkB,E;;;AAI9BC,EAAAA,M,GAAP,kBAAgB;AACd;AACE,mCAAC,cAAD,IAAQ,MAAM,EAAE,KAAKC,KAAL,CAAWC,MAA3B,EAAmC,IAAI,EAAE,KAAzC;AACE,iKADF;;;;AAKE,mCAAC,gBAAD,IAAS,MAAM,EAAE,0BAAM,eAAN,EAAjB,EAAwC,OAAO,EAAE,KAAKJ,KAAL,CAAWC,eAAX,GAA6B,QAA7B,GAAwC,QAAzF;AACE,mCAAC,cAAD;AACE,QAAA,OAAO,EAAE,mBAAM;AACb,UAAA,MAAI,CAACI,QAAL,CAAc,EAAEC,QAAQ,EAAE,IAAZ,EAAkBL,eAAe,EAAE,IAAnC,EAAd;AACD,SAHH,wBADF,CALF;;;;;AAcE,wMAdF;;;;AAkBE;AACqG,SADrG;AAEE,0IAFF;AAGE,oEAHF,yBAlBF;;AAuBE,0FAvBF;AAwBE,gUAxBF;;;;;AA6BE;AACE,2GADF;AAEE,wFAFF;AAGE,wFAHF,CA7BF,CADF;;;;AAqCD,G,0BA3CkCM,eAAMC,S","sourcesContent":["import React from 'react';\n\nimport { Tooltip } from '../../Tooltip';\nimport { Button } from '../../Button';\nimport { Loader } from '../Loader';\nimport { LoaderProps } from '..';\n\ntype LoaderAndButtonProps = Pick<LoaderProps, 'active'>;\ninterface LoaderAndButtonState {\n isTooltipOpened: boolean;\n isActive?: boolean;\n}\nexport class LoaderAndButton extends React.Component<LoaderAndButtonProps, LoaderAndButtonState> {\n public state: LoaderAndButtonState = {\n isTooltipOpened: false,\n };\n\n public render() {\n return (\n <Loader active={this.props.active} type={'big'}>\n <h1>\n Yeah, and if you were the pope they&apos;d be all, &quot;Straighten your pope hat.&quot; And &quot;Put on your\n good vestments.&quot;\n </h1>\n <Tooltip render={() => 'Yes, you can!'} trigger={this.state.isTooltipOpened ? 'opened' : 'closed'}>\n <Button\n onClick={() => {\n this.setState({ isActive: true, isTooltipOpened: true });\n }}\n >\n Can you click me?\n </Button>\n </Tooltip>\n <p>\n No, I&apos;m Santa Claus! I guess if you want children beaten, you have to do it yourself. We&apos;re also\n Santa Claus! Leela, Bender, we&apos;re going grave robbing.\n </p>\n <p>\n Are you crazy? I can&apos;t swallow that. Large bet on myself in round one. Hey, whatcha watching?{' '}\n <strong> Moving along… I guess if you want children beaten, you have to do it yourself.</strong>\n <em>It&apos;s okay, Bender.</em> I like cooking too.\n </p>\n <h2>Oh, I think we should just stay friends.</h2>\n <p>\n No argument here. And when we woke up, we had these bodies. You guys go on without me! I&apos;m going to go…\n look for more stuff to steal! Oh, how awful. Did he at least die painlessly? …To shreds, you say. Well, how is\n his wife holding up? …To shreds, you say.\n </p>\n <ol>\n <li>No! The kind with looting and maybe starting a few fires!</li>\n <li>You are the last hope of the universe.</li>\n <li>Hey, guess what you&apos;re accessories to.</li>\n </ol>\n </Loader>\n );\n }\n}\n"]}
@@ -1,4 +1,6 @@
1
- "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.isMenuItem = exports.MenuItemDataTids = exports.MenuItem = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));var _react = _interopRequireDefault(require("react"));
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.isMenuItem = exports.MenuItemDataTids = exports.MenuItem = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
2
+
3
+ var _react = _interopRequireDefault(require("react"));
2
4
  var _propTypes = _interopRequireDefault(require("prop-types"));
3
5
 
4
6
  var _utils = require("../../lib/utils");
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuItem.tsx"],"names":["MenuItemDataTids","root","comment","MenuItem","rootNode","mouseEntered","renderMain","props","link","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","rest","hover","disabled","iconElement","styles","theme","className","rootMobile","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","setRootNode","React","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","PropTypes","node","bool","string","target","onClick","func","isMenuItem"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isFunction, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends CommonProps {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n\n isMobile?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n ...rest\n } = props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = <div className={styles.icon(this.theme)}>{icon}</div>;\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n data-tid={MenuItemDataTids.root}\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n tabIndex={-1}\n >\n {iconElement}\n {content}\n {this.props.comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (disabled) {\n return 'button';\n }\n\n if (component) {\n return component;\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
1
+ {"version":3,"sources":["MenuItem.tsx"],"names":["MenuItemDataTids","root","comment","MenuItem","rootNode","mouseEntered","renderMain","props","link","icon","loose","state","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","rest","hover","disabled","iconElement","styles","theme","className","rootMobile","selected","withIcon","Boolean","children","content","Component","getComponent","handleMouseEnterFix","handleMouseLeave","commentHover","e","href","render","setRootNode","React","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","PropTypes","node","bool","string","target","onClick","func","isMenuItem"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { isFunction, isReactUIComponent } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode/rootNodeDecorator';\n\nimport { styles } from './MenuItem.styles';\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps extends CommonProps {\n /**\n * @ignore\n */\n _enableIconPadding?: boolean;\n /**\n * Добавляет описание для элемента меню.\n */\n comment?: React.ReactNode;\n /**\n * Отключенное состояние.\n */\n disabled?: boolean;\n /**\n * Добавляет элементу меню иконку.\n */\n icon?: React.ReactElement<any>;\n /**\n * Меняет цвет текста на синий.\n */\n link?: boolean;\n /**\n * @ignore\n */\n loose?: boolean;\n /**\n * @ignore\n */\n state?: MenuItemState;\n /**\n * HTML-событие `onclick`.\n */\n onClick?: (event: React.SyntheticEvent<HTMLElement>) => void;\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: React.MouseEventHandler;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: React.MouseEventHandler;\n children?: React.ReactNode | ((state: MenuItemState) => React.ReactNode);\n /**\n * HTML-атрибут `target`.\n */\n target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];\n /**\n * HTML-атрибут `title`.\n */\n title?: React.AnchorHTMLAttributes<HTMLAnchorElement>['title'];\n /**\n * HTML-атрибут `href`.\n */\n href?: React.AnchorHTMLAttributes<HTMLAnchorElement>['href'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n\n isMobile?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n comment: 'MenuItem__comment',\n} as const;\n\n/**\n *\n * `MenuItem` - это вложенный компонент, задающий базовые стили для элемента меню и позволяющий навигироваться по элементам меню с помощью клавиатуры.\n *\n * Сущности в которых может быть использован `MenuItem`: [`DropdownMenu`](#/Components/DropdownMenu), [`Kebab`](#/Components/Kebab), [`TooltipMenu`](#/Components/TooltipMenu) и [`Select`](#/Components/Select).\n */\n@rootNode\nexport class MenuItem extends React.Component<MenuItemProps> {\n public static __KONTUR_REACT_UI__ = 'MenuItem';\n public static __MENU_ITEM__ = true;\n\n public static propTypes = {\n comment: PropTypes.node,\n\n disabled: PropTypes.bool,\n\n href: PropTypes.string,\n\n icon: PropTypes.node,\n\n loose: PropTypes.bool,\n\n state: PropTypes.string,\n\n target: PropTypes.string,\n\n onClick: PropTypes.func,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n ...rest\n } = props;\n\n const hover = state === 'hover' && !this.props.disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = <div className={styles.icon(this.theme)}>{icon}</div>;\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected',\n [styles.link(this.theme)]: !!link,\n [styles.withIcon(this.theme)]: Boolean(iconElement) || !!_enableIconPadding,\n [styles.disabled(this.theme)]: !!this.props.disabled,\n });\n\n const { children } = this.props;\n\n let content = children;\n if (isFunction(children)) {\n content = children(this.props.state);\n }\n\n const Component = this.getComponent();\n\n return (\n <Component\n data-tid={MenuItemDataTids.root}\n {...rest}\n state={state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n className={className}\n tabIndex={-1}\n >\n {iconElement}\n {content}\n {this.props.comment && (\n <div\n data-tid={MenuItemDataTids.comment}\n className={cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: hover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n // https://github.com/facebook/react/issues/10109\n // Mouseenter event not triggered when cursor moves from disabled button\n private handleMouseEnterFix = (e: React.MouseEvent<HTMLElement>) => {\n if (!this.mouseEntered && this.props.onMouseEnter) {\n this.mouseEntered = true;\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (disabled) {\n return 'button';\n }\n\n if (component) {\n return component;\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
@@ -45,6 +45,7 @@ export declare const ModalDataTids: {
45
45
  readonly content: "modal-content";
46
46
  readonly close: "modal-close";
47
47
  };
48
+ declare type DefaultProps = Required<Pick<ModalProps, 'disableFocusLock'>>;
48
49
  /**
49
50
  * Модальное окно
50
51
  *
@@ -64,9 +65,8 @@ export declare class Modal extends React.Component<ModalProps, ModalState> {
64
65
  static Header: typeof ModalHeader;
65
66
  static Body: typeof ModalBody;
66
67
  static Footer: typeof ModalFooter;
67
- static defaultProps: {
68
- disableFocusLock: boolean;
69
- };
68
+ static defaultProps: DefaultProps;
69
+ private getProps;
70
70
  state: ModalState;
71
71
  private theme;
72
72
  private stackSubscription;
@@ -91,3 +91,4 @@ export declare class Modal extends React.Component<ModalProps, ModalState> {
91
91
  private setHasFooter;
92
92
  private setHasPanel;
93
93
  }
94
+ export {};