@skbkontur/react-ui 4.21.0-displayname.0 → 4.21.0-displayname.1

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 (437) hide show
  1. package/cjs/components/Autocomplete/Autocomplete.d.ts +1 -0
  2. package/cjs/components/Autocomplete/Autocomplete.js +2 -1
  3. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  4. package/cjs/components/Button/Button.d.ts +1 -1
  5. package/cjs/components/Button/Button.js +1 -1
  6. package/cjs/components/Button/Button.js.map +1 -1
  7. package/cjs/components/Calendar/Calendar.d.ts +1 -0
  8. package/cjs/components/Calendar/Calendar.js +2 -1
  9. package/cjs/components/Calendar/Calendar.js.map +1 -1
  10. package/cjs/components/Center/Center.d.ts +1 -0
  11. package/cjs/components/Center/Center.js +2 -1
  12. package/cjs/components/Center/Center.js.map +1 -1
  13. package/cjs/components/Checkbox/Checkbox.d.ts +1 -0
  14. package/cjs/components/Checkbox/Checkbox.js +2 -1
  15. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  16. package/cjs/components/ComboBox/ComboBox.d.ts +1 -0
  17. package/cjs/components/ComboBox/ComboBox.js +2 -1
  18. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  19. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +1 -0
  20. package/cjs/components/CurrencyInput/CurrencyInput.js +2 -1
  21. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  22. package/cjs/components/DateInput/DateInput.d.ts +1 -0
  23. package/cjs/components/DateInput/DateInput.js +2 -1
  24. package/cjs/components/DateInput/DateInput.js.map +1 -1
  25. package/cjs/components/DatePicker/DatePicker.d.ts +1 -0
  26. package/cjs/components/DatePicker/DatePicker.js +2 -1
  27. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  28. package/cjs/components/DatePicker/Picker.d.ts +1 -0
  29. package/cjs/components/DatePicker/Picker.js +2 -1
  30. package/cjs/components/DatePicker/Picker.js.map +1 -1
  31. package/cjs/components/Dropdown/Dropdown.d.ts +1 -0
  32. package/cjs/components/Dropdown/Dropdown.js +2 -1
  33. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  34. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +1 -0
  35. package/cjs/components/DropdownMenu/DropdownMenu.js +2 -1
  36. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  37. package/cjs/components/FxInput/FxInput.d.ts +1 -0
  38. package/cjs/components/FxInput/FxInput.js +2 -1
  39. package/cjs/components/FxInput/FxInput.js.map +1 -1
  40. package/cjs/components/Gapped/Gapped.d.ts +1 -0
  41. package/cjs/components/Gapped/Gapped.js +2 -1
  42. package/cjs/components/Gapped/Gapped.js.map +1 -1
  43. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +1 -0
  44. package/cjs/components/GlobalLoader/GlobalLoader.js +2 -1
  45. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  46. package/cjs/components/Group/Group.d.ts +1 -0
  47. package/cjs/components/Group/Group.js +2 -1
  48. package/cjs/components/Group/Group.js.map +1 -1
  49. package/cjs/components/Hint/Hint.d.ts +1 -0
  50. package/cjs/components/Hint/Hint.js +2 -1
  51. package/cjs/components/Hint/Hint.js.map +1 -1
  52. package/cjs/components/Kebab/Kebab.d.ts +1 -0
  53. package/cjs/components/Kebab/Kebab.js +2 -1
  54. package/cjs/components/Kebab/Kebab.js.map +1 -1
  55. package/cjs/components/Link/Link.d.ts +1 -0
  56. package/cjs/components/Link/Link.js +2 -1
  57. package/cjs/components/Link/Link.js.map +1 -1
  58. package/cjs/components/Loader/Loader.d.ts +1 -0
  59. package/cjs/components/Loader/Loader.js +2 -1
  60. package/cjs/components/Loader/Loader.js.map +1 -1
  61. package/cjs/components/MenuItem/MenuItem.d.ts +1 -0
  62. package/cjs/components/MenuItem/MenuItem.js +2 -1
  63. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  64. package/cjs/components/Modal/Modal.d.ts +1 -0
  65. package/cjs/components/Modal/Modal.js +2 -1
  66. package/cjs/components/Modal/Modal.js.map +1 -1
  67. package/cjs/components/Modal/ModalBody.d.ts +1 -0
  68. package/cjs/components/Modal/ModalBody.js +2 -1
  69. package/cjs/components/Modal/ModalBody.js.map +1 -1
  70. package/cjs/components/Paging/Paging.d.ts +1 -0
  71. package/cjs/components/Paging/Paging.js +2 -1
  72. package/cjs/components/Paging/Paging.js.map +1 -1
  73. package/cjs/components/PasswordInput/PasswordInput.d.ts +1 -0
  74. package/cjs/components/PasswordInput/PasswordInput.js +2 -1
  75. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  76. package/cjs/components/Radio/Radio.d.ts +1 -0
  77. package/cjs/components/Radio/Radio.js +2 -1
  78. package/cjs/components/Radio/Radio.js.map +1 -1
  79. package/cjs/components/RadioGroup/RadioGroup.d.ts +1 -0
  80. package/cjs/components/RadioGroup/RadioGroup.js +2 -1
  81. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  82. package/cjs/components/ResponsiveLayout/ResponsiveLayout.d.ts +1 -0
  83. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js +2 -1
  84. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  85. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  86. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -1
  87. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  88. package/cjs/components/Select/Item.d.ts +1 -0
  89. package/cjs/components/Select/Item.js +2 -1
  90. package/cjs/components/Select/Item.js.map +1 -1
  91. package/cjs/components/Select/Select.d.ts +1 -0
  92. package/cjs/components/Select/Select.js +2 -1
  93. package/cjs/components/Select/Select.js.map +1 -1
  94. package/cjs/components/SidePage/SidePage.d.ts +1 -0
  95. package/cjs/components/SidePage/SidePage.js +2 -1
  96. package/cjs/components/SidePage/SidePage.js.map +1 -1
  97. package/cjs/components/SidePage/SidePageBody.d.ts +1 -0
  98. package/cjs/components/SidePage/SidePageBody.js +2 -1
  99. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  100. package/cjs/components/SidePage/SidePageContainer.d.ts +1 -0
  101. package/cjs/components/SidePage/SidePageContainer.js +2 -1
  102. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  103. package/cjs/components/SidePage/SidePageFooter.d.ts +1 -0
  104. package/cjs/components/SidePage/SidePageFooter.js +2 -1
  105. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  106. package/cjs/components/SidePage/SidePageHeader.d.ts +1 -0
  107. package/cjs/components/SidePage/SidePageHeader.js +2 -1
  108. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  109. package/cjs/components/Spinner/Spinner.d.ts +1 -0
  110. package/cjs/components/Spinner/Spinner.js +2 -1
  111. package/cjs/components/Spinner/Spinner.js.map +1 -1
  112. package/cjs/components/Sticky/Sticky.d.ts +1 -0
  113. package/cjs/components/Sticky/Sticky.js +2 -1
  114. package/cjs/components/Sticky/Sticky.js.map +1 -1
  115. package/cjs/components/Switcher/Switcher.d.ts +1 -0
  116. package/cjs/components/Switcher/Switcher.js +2 -1
  117. package/cjs/components/Switcher/Switcher.js.map +1 -1
  118. package/cjs/components/Tabs/Tab.d.ts +1 -0
  119. package/cjs/components/Tabs/Tab.js +2 -1
  120. package/cjs/components/Tabs/Tab.js.map +1 -1
  121. package/cjs/components/Tabs/Tabs.d.ts +1 -0
  122. package/cjs/components/Tabs/Tabs.js +2 -1
  123. package/cjs/components/Tabs/Tabs.js.map +1 -1
  124. package/cjs/components/Textarea/Textarea.d.ts +1 -0
  125. package/cjs/components/Textarea/Textarea.js +2 -1
  126. package/cjs/components/Textarea/Textarea.js.map +1 -1
  127. package/cjs/components/Toast/Toast.d.ts +1 -0
  128. package/cjs/components/Toast/Toast.js +2 -1
  129. package/cjs/components/Toast/Toast.js.map +1 -1
  130. package/cjs/components/Toggle/Toggle.d.ts +1 -0
  131. package/cjs/components/Toggle/Toggle.js +2 -1
  132. package/cjs/components/Toggle/Toggle.js.map +1 -1
  133. package/cjs/components/Token/Token.d.ts +1 -0
  134. package/cjs/components/Token/Token.js +2 -1
  135. package/cjs/components/Token/Token.js.map +1 -1
  136. package/cjs/components/TokenInput/TokenInput.d.ts +1 -0
  137. package/cjs/components/TokenInput/TokenInput.js +2 -1
  138. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  139. package/cjs/components/TokenInput/TokenInputMenu.d.ts +1 -0
  140. package/cjs/components/TokenInput/TokenInputMenu.js +2 -1
  141. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  142. package/cjs/components/Tooltip/Tooltip.d.ts +1 -0
  143. package/cjs/components/Tooltip/Tooltip.js +2 -1
  144. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  145. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +1 -0
  146. package/cjs/components/TooltipMenu/TooltipMenu.js +2 -1
  147. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  148. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
  149. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -1
  150. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  151. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +1 -0
  152. package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -1
  153. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  154. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  155. package/cjs/internal/CustomComboBox/CustomComboBox.js +2 -1
  156. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  157. package/cjs/internal/DateSelect/DateSelect.d.ts +1 -0
  158. package/cjs/internal/DateSelect/DateSelect.js +2 -1
  159. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  160. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -0
  161. package/cjs/internal/DropdownContainer/DropdownContainer.js +2 -1
  162. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  163. package/cjs/internal/FocusTrap/FocusTrap.d.ts +1 -0
  164. package/cjs/internal/FocusTrap/FocusTrap.js +2 -1
  165. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  166. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +1 -0
  167. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
  168. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  169. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +2 -1
  170. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  171. package/cjs/internal/InputLikeText/InputLikeText.d.ts +1 -0
  172. package/cjs/internal/InputLikeText/InputLikeText.js +2 -1
  173. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  174. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.d.ts +1 -0
  175. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js +2 -1
  176. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  177. package/cjs/internal/InternalMenu/InternalMenu.d.ts +1 -0
  178. package/cjs/internal/InternalMenu/InternalMenu.js +2 -1
  179. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  180. package/cjs/internal/Menu/Menu.d.ts +1 -0
  181. package/cjs/internal/Menu/Menu.js +2 -1
  182. package/cjs/internal/Menu/Menu.js.map +1 -1
  183. package/cjs/internal/MobilePopup/MobilePopup.d.ts +1 -0
  184. package/cjs/internal/MobilePopup/MobilePopup.js +2 -1
  185. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  186. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +1 -0
  187. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +2 -1
  188. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  189. package/cjs/internal/NativeDateInput/NativeDateInput.d.ts +1 -0
  190. package/cjs/internal/NativeDateInput/NativeDateInput.js +2 -1
  191. package/cjs/internal/NativeDateInput/NativeDateInput.js.map +1 -1
  192. package/cjs/internal/Popup/Popup.d.ts +1 -0
  193. package/cjs/internal/Popup/Popup.js +2 -1
  194. package/cjs/internal/Popup/Popup.js.map +1 -1
  195. package/cjs/internal/Popup/PopupPin.d.ts +1 -0
  196. package/cjs/internal/Popup/PopupPin.js +2 -1
  197. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  198. package/cjs/internal/PopupMenu/PopupMenu.d.ts +1 -0
  199. package/cjs/internal/PopupMenu/PopupMenu.js +2 -1
  200. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  201. package/cjs/internal/RenderContainer/RenderContainer.d.ts +1 -0
  202. package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
  203. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  204. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +1 -0
  205. package/cjs/internal/RenderContainer/RenderInnerContainer.js +2 -1
  206. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  207. package/cjs/internal/RenderLayer/RenderLayer.d.ts +1 -0
  208. package/cjs/internal/RenderLayer/RenderLayer.js +2 -1
  209. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  210. package/cjs/internal/ResizeDetector/ResizeDetector.d.ts +1 -0
  211. package/cjs/internal/ResizeDetector/ResizeDetector.js +2 -1
  212. package/cjs/internal/ResizeDetector/ResizeDetector.js.map +1 -1
  213. package/cjs/internal/ZIndex/ZIndex.d.ts +1 -0
  214. package/cjs/internal/ZIndex/ZIndex.js +2 -1
  215. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  216. package/cjs/internal/icons/20px/Icon.d.ts +1 -0
  217. package/cjs/internal/icons/20px/Icon.js +2 -1
  218. package/cjs/internal/icons/20px/Icon.js.map +1 -1
  219. package/components/Autocomplete/Autocomplete/Autocomplete.js +1 -1
  220. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  221. package/components/Autocomplete/Autocomplete.d.ts +1 -0
  222. package/components/Button/Button/Button.js +1 -1
  223. package/components/Button/Button/Button.js.map +1 -1
  224. package/components/Button/Button.d.ts +1 -1
  225. package/components/Calendar/Calendar/Calendar.js +1 -1
  226. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  227. package/components/Calendar/Calendar.d.ts +1 -0
  228. package/components/Center/Center/Center.js +1 -1
  229. package/components/Center/Center/Center.js.map +1 -1
  230. package/components/Center/Center.d.ts +1 -0
  231. package/components/Checkbox/Checkbox/Checkbox.js +1 -1
  232. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  233. package/components/Checkbox/Checkbox.d.ts +1 -0
  234. package/components/ComboBox/ComboBox/ComboBox.js +1 -1
  235. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  236. package/components/ComboBox/ComboBox.d.ts +1 -0
  237. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +1 -1
  238. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  239. package/components/CurrencyInput/CurrencyInput.d.ts +1 -0
  240. package/components/DateInput/DateInput/DateInput.js +1 -1
  241. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  242. package/components/DateInput/DateInput.d.ts +1 -0
  243. package/components/DatePicker/DatePicker/DatePicker.js +1 -1
  244. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  245. package/components/DatePicker/DatePicker.d.ts +1 -0
  246. package/components/DatePicker/Picker/Picker.js +1 -1
  247. package/components/DatePicker/Picker/Picker.js.map +1 -1
  248. package/components/DatePicker/Picker.d.ts +1 -0
  249. package/components/Dropdown/Dropdown/Dropdown.js +1 -1
  250. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  251. package/components/Dropdown/Dropdown.d.ts +1 -0
  252. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -1
  253. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  254. package/components/DropdownMenu/DropdownMenu.d.ts +1 -0
  255. package/components/FxInput/FxInput/FxInput.js +1 -1
  256. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  257. package/components/FxInput/FxInput.d.ts +1 -0
  258. package/components/Gapped/Gapped/Gapped.js +1 -1
  259. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  260. package/components/Gapped/Gapped.d.ts +1 -0
  261. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +1 -1
  262. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  263. package/components/GlobalLoader/GlobalLoader.d.ts +1 -0
  264. package/components/Group/Group/Group.js +1 -1
  265. package/components/Group/Group/Group.js.map +1 -1
  266. package/components/Group/Group.d.ts +1 -0
  267. package/components/Hint/Hint/Hint.js +1 -1
  268. package/components/Hint/Hint/Hint.js.map +1 -1
  269. package/components/Hint/Hint.d.ts +1 -0
  270. package/components/Kebab/Kebab/Kebab.js +1 -1
  271. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  272. package/components/Kebab/Kebab.d.ts +1 -0
  273. package/components/Link/Link/Link.js +1 -1
  274. package/components/Link/Link/Link.js.map +1 -1
  275. package/components/Link/Link.d.ts +1 -0
  276. package/components/Loader/Loader/Loader.js +1 -1
  277. package/components/Loader/Loader/Loader.js.map +1 -1
  278. package/components/Loader/Loader.d.ts +1 -0
  279. package/components/MenuItem/MenuItem/MenuItem.js +1 -1
  280. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  281. package/components/MenuItem/MenuItem.d.ts +1 -0
  282. package/components/Modal/Modal/Modal.js +1 -0
  283. package/components/Modal/Modal/Modal.js.map +1 -1
  284. package/components/Modal/Modal.d.ts +1 -0
  285. package/components/Modal/ModalBody/ModalBody.js +1 -1
  286. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  287. package/components/Modal/ModalBody.d.ts +1 -0
  288. package/components/Paging/Paging/Paging.js +1 -1
  289. package/components/Paging/Paging/Paging.js.map +1 -1
  290. package/components/Paging/Paging.d.ts +1 -0
  291. package/components/PasswordInput/PasswordInput/PasswordInput.js +1 -1
  292. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  293. package/components/PasswordInput/PasswordInput.d.ts +1 -0
  294. package/components/Radio/Radio/Radio.js +1 -1
  295. package/components/Radio/Radio/Radio.js.map +1 -1
  296. package/components/Radio/Radio.d.ts +1 -0
  297. package/components/RadioGroup/RadioGroup/RadioGroup.js +1 -1
  298. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  299. package/components/RadioGroup/RadioGroup.d.ts +1 -0
  300. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js +2 -1
  301. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  302. package/components/ResponsiveLayout/ResponsiveLayout.d.ts +1 -0
  303. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -1
  304. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  305. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  306. package/components/Select/Item/Item.js +2 -1
  307. package/components/Select/Item/Item.js.map +1 -1
  308. package/components/Select/Item.d.ts +1 -0
  309. package/components/Select/Select/Select.js +1 -1
  310. package/components/Select/Select/Select.js.map +1 -1
  311. package/components/Select/Select.d.ts +1 -0
  312. package/components/SidePage/SidePage/SidePage.js +1 -0
  313. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  314. package/components/SidePage/SidePage.d.ts +1 -0
  315. package/components/SidePage/SidePageBody/SidePageBody.js +1 -1
  316. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  317. package/components/SidePage/SidePageBody.d.ts +1 -0
  318. package/components/SidePage/SidePageContainer/SidePageContainer.js +1 -1
  319. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  320. package/components/SidePage/SidePageContainer.d.ts +1 -0
  321. package/components/SidePage/SidePageFooter/SidePageFooter.js +1 -1
  322. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  323. package/components/SidePage/SidePageFooter.d.ts +1 -0
  324. package/components/SidePage/SidePageHeader/SidePageHeader.js +1 -1
  325. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  326. package/components/SidePage/SidePageHeader.d.ts +1 -0
  327. package/components/Spinner/Spinner/Spinner.js +1 -1
  328. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  329. package/components/Spinner/Spinner.d.ts +1 -0
  330. package/components/Sticky/Sticky/Sticky.js +1 -1
  331. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  332. package/components/Sticky/Sticky.d.ts +1 -0
  333. package/components/Switcher/Switcher/Switcher.js +1 -1
  334. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  335. package/components/Switcher/Switcher.d.ts +1 -0
  336. package/components/Tabs/Tab/Tab.js +1 -1
  337. package/components/Tabs/Tab/Tab.js.map +1 -1
  338. package/components/Tabs/Tab.d.ts +1 -0
  339. package/components/Tabs/Tabs/Tabs.js +1 -1
  340. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  341. package/components/Tabs/Tabs.d.ts +1 -0
  342. package/components/Textarea/Textarea/Textarea.js +1 -1
  343. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  344. package/components/Textarea/Textarea.d.ts +1 -0
  345. package/components/Toast/Toast/Toast.js +1 -1
  346. package/components/Toast/Toast/Toast.js.map +1 -1
  347. package/components/Toast/Toast.d.ts +1 -0
  348. package/components/Toggle/Toggle/Toggle.js +1 -1
  349. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  350. package/components/Toggle/Toggle.d.ts +1 -0
  351. package/components/Token/Token/Token.js +1 -1
  352. package/components/Token/Token/Token.js.map +1 -1
  353. package/components/Token/Token.d.ts +1 -0
  354. package/components/TokenInput/TokenInput/TokenInput.js +1 -1
  355. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  356. package/components/TokenInput/TokenInput.d.ts +1 -0
  357. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +2 -1
  358. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  359. package/components/TokenInput/TokenInputMenu.d.ts +1 -0
  360. package/components/Tooltip/Tooltip/Tooltip.js +1 -1
  361. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  362. package/components/Tooltip/Tooltip.d.ts +1 -0
  363. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +1 -1
  364. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  365. package/components/TooltipMenu/TooltipMenu.d.ts +1 -0
  366. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +1 -1
  367. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  368. package/internal/CustomComboBox/ComboBoxMenu.d.ts +1 -0
  369. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +1 -1
  370. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  371. package/internal/CustomComboBox/ComboBoxView.d.ts +1 -0
  372. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +1 -1
  373. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  374. package/internal/CustomComboBox/CustomComboBox.d.ts +1 -0
  375. package/internal/DateSelect/DateSelect/DateSelect.js +1 -1
  376. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  377. package/internal/DateSelect/DateSelect.d.ts +1 -0
  378. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +1 -0
  379. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  380. package/internal/DropdownContainer/DropdownContainer.d.ts +1 -0
  381. package/internal/FocusTrap/FocusTrap/FocusTrap.js +1 -1
  382. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  383. package/internal/FocusTrap/FocusTrap.d.ts +1 -0
  384. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +1 -0
  385. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  386. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.d.ts +1 -0
  387. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js +1 -1
  388. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  389. package/internal/InputLikeText/InputLikeText/InputLikeText.js +1 -1
  390. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  391. package/internal/InputLikeText/InputLikeText.d.ts +1 -0
  392. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js +1 -0
  393. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  394. package/internal/InternalMaskedInput/InternalMaskedInput.d.ts +1 -0
  395. package/internal/InternalMenu/InternalMenu/InternalMenu.js +1 -1
  396. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  397. package/internal/InternalMenu/InternalMenu.d.ts +1 -0
  398. package/internal/Menu/Menu/Menu.js +1 -1
  399. package/internal/Menu/Menu/Menu.js.map +1 -1
  400. package/internal/Menu/Menu.d.ts +1 -0
  401. package/internal/MobilePopup/MobilePopup/MobilePopup.js +2 -1
  402. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  403. package/internal/MobilePopup/MobilePopup.d.ts +1 -0
  404. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +2 -1
  405. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  406. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +1 -0
  407. package/internal/NativeDateInput/NativeDateInput/NativeDateInput.js +2 -1
  408. package/internal/NativeDateInput/NativeDateInput/NativeDateInput.js.map +1 -1
  409. package/internal/NativeDateInput/NativeDateInput.d.ts +1 -0
  410. package/internal/Popup/Popup/Popup.js +1 -1
  411. package/internal/Popup/Popup/Popup.js.map +1 -1
  412. package/internal/Popup/Popup.d.ts +1 -0
  413. package/internal/Popup/PopupPin/PopupPin.js +1 -0
  414. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  415. package/internal/Popup/PopupPin.d.ts +1 -0
  416. package/internal/PopupMenu/PopupMenu/PopupMenu.js +1 -1
  417. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  418. package/internal/PopupMenu/PopupMenu.d.ts +1 -0
  419. package/internal/RenderContainer/RenderContainer/RenderContainer.js +1 -0
  420. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  421. package/internal/RenderContainer/RenderContainer.d.ts +1 -0
  422. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +1 -0
  423. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  424. package/internal/RenderContainer/RenderInnerContainer.d.ts +1 -0
  425. package/internal/RenderLayer/RenderLayer/RenderLayer.js +1 -1
  426. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  427. package/internal/RenderLayer/RenderLayer.d.ts +1 -0
  428. package/internal/ResizeDetector/ResizeDetector/ResizeDetector.js +2 -1
  429. package/internal/ResizeDetector/ResizeDetector/ResizeDetector.js.map +1 -1
  430. package/internal/ResizeDetector/ResizeDetector.d.ts +1 -0
  431. package/internal/ZIndex/ZIndex/ZIndex.js +1 -1
  432. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  433. package/internal/ZIndex/ZIndex.d.ts +1 -0
  434. package/internal/icons/20px/Icon/Icon.js +1 -0
  435. package/internal/icons/20px/Icon/Icon.js.map +1 -1
  436. package/internal/icons/20px/Icon.d.ts +1 -0
  437. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["Hint.tsx"],"names":["React","globalObject","ThemeContext","ThemeFactory","DUMMY_LOCATION","Popup","isTestEnv","CommonWrapper","cx","rootNode","createPropsGetter","styles","HINT_BORDER_COLOR","Positions","Hint","getProps","defaultProps","state","opened","manual","position","popupRef","createRef","getAnchorElement","current","anchorElement","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","timer","setTimeout","open","props","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","componentDidUpdate","prevProps","componentWillUnmount","render","theme","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","renderMain","disableAnimations","useWrapper","setRootNode","children","hintBgColor","renderContent","text","maxWidth","centerAlignPositions","className","content","contentCenter","includes","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DUMMY_LOCATION, Popup, PopupPositionsType } from '../../internal/Popup';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Hint.styles';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Переводит отображение подсказки в _\"ручной режим\"_.\n *\n * В _\"ручном режиме\"_ подсказку можно активировать только задав значение пропу `opened`.\n */\n manual?: boolean;\n /**\n * Задаёт максимальную ширину подсказки.\n */\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: (event: MouseEventType) => void;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: (event: MouseEventType) => void;\n /**\n * Если `true` - подсказка будет открыта.\n *\n * _Примечание_: работает только при `manual=true`.\n */\n opened?: boolean;\n /**\n * Расположение подсказки относительно текста.\n *\n * **Допустимые значения**: `\"top\"`, `\"right\"`, `\"bottom\"`, `\"left\"`, `\"top left\"`, `\"top center\"`, `\"top right\"`, `\"right top\"`, `\"right middle\"`, `\"right bottom\"`, `\"bottom left\"`, `\"bottom center\"`, `\"bottom right\"`, `\"left top\"`, `\"left middle\"`, `\"left bottom\"`.\n */\n pos?: 'top' | 'right' | 'bottom' | 'left' | PopupPositionsType;\n /**\n * Текст подсказки.\n */\n text: React.ReactNode;\n /**\n * Отключает анимацию.\n */\n disableAnimations?: boolean;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n position: PopupPositionsType;\n}\n\nconst Positions: PopupPositionsType[] = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n];\n\ntype DefaultProps = Required<\n Pick<HintProps, 'pos' | 'manual' | 'opened' | 'maxWidth' | 'disableAnimations' | 'useWrapper'>\n>;\n\n/**\n * Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.\n */\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Hint';\n\n public static defaultProps: DefaultProps = {\n pos: 'top',\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Hint.defaultProps);\n\n public state: HintState = {\n opened: this.getProps().manual ? !!this.getProps().opened : false,\n position: DUMMY_LOCATION.position,\n };\n\n private timer: SafeTimer;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public componentDidUpdate(prevProps: HintProps) {\n const { opened, manual } = this.getProps();\n if (!manual) {\n return;\n }\n if (this.timer) {\n globalObject.clearTimeout(this.timer);\n this.timer = null;\n }\n if (opened !== prevProps.opened) {\n this.setState({ opened: !!opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n globalObject.clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.hintPinOffset,\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { disableAnimations, useWrapper } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n hasPin\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n onPositionChange={(position) => this.setState({ position })}\n disableAnimations={disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={useWrapper}\n ref={this.popupRef}\n withoutMobile\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { maxWidth } = this.getProps();\n const centerAlignPositions = ['top', 'top center', 'bottom', 'bottom center'];\n const className = cx({\n [styles.content(this.theme)]: true,\n [styles.contentCenter(this.theme)]: centerAlignPositions.includes(this.state.position),\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPositionsType[] => {\n return Positions.filter((x) => x.startsWith(this.getProps().pos));\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.getProps().manual && !this.timer) {\n this.timer = globalObject.setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.getProps().manual && this.timer) {\n globalObject.clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
1
+ {"version":3,"sources":["Hint.tsx"],"names":["React","globalObject","ThemeContext","ThemeFactory","DUMMY_LOCATION","Popup","isTestEnv","CommonWrapper","cx","rootNode","createPropsGetter","styles","HINT_BORDER_COLOR","Positions","Hint","getProps","defaultProps","state","opened","manual","position","popupRef","createRef","getAnchorElement","current","anchorElement","getPositions","filter","x","startsWith","pos","handleMouseEnter","e","timer","setTimeout","open","props","onMouseEnter","handleMouseLeave","clearTimeout","setState","onMouseLeave","componentDidUpdate","prevProps","componentWillUnmount","render","theme","create","popupPinOffset","hintPinOffset","popupMargin","hintMargin","popupBorder","hintBorder","popupBorderRadius","hintBorderRadius","renderMain","disableAnimations","useWrapper","setRootNode","children","hintBgColor","renderContent","text","maxWidth","centerAlignPositions","className","content","contentCenter","includes","PureComponent","__KONTUR_REACT_UI__","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { Theme } from '../../lib/theming/Theme';\nimport { DUMMY_LOCATION, Popup, PopupPositionsType } from '../../internal/Popup';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Hint.styles';\n\nconst HINT_BORDER_COLOR = 'transparent';\n\nexport interface HintProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Переводит отображение подсказки в _\"ручной режим\"_.\n *\n * В _\"ручном режиме\"_ подсказку можно активировать только задав значение пропу `opened`.\n */\n manual?: boolean;\n /**\n * Задаёт максимальную ширину подсказки.\n */\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * HTML-событие `mouseenter`.\n */\n onMouseEnter?: (event: MouseEventType) => void;\n /**\n * HTML-событие `mouseleave`.\n */\n onMouseLeave?: (event: MouseEventType) => void;\n /**\n * Если `true` - подсказка будет открыта.\n *\n * _Примечание_: работает только при `manual=true`.\n */\n opened?: boolean;\n /**\n * Расположение подсказки относительно текста.\n *\n * **Допустимые значения**: `\"top\"`, `\"right\"`, `\"bottom\"`, `\"left\"`, `\"top left\"`, `\"top center\"`, `\"top right\"`, `\"right top\"`, `\"right middle\"`, `\"right bottom\"`, `\"bottom left\"`, `\"bottom center\"`, `\"bottom right\"`, `\"left top\"`, `\"left middle\"`, `\"left bottom\"`.\n */\n pos?: 'top' | 'right' | 'bottom' | 'left' | PopupPositionsType;\n /**\n * Текст подсказки.\n */\n text: React.ReactNode;\n /**\n * Отключает анимацию.\n */\n disableAnimations?: boolean;\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n}\n\nexport interface HintState {\n opened: boolean;\n position: PopupPositionsType;\n}\n\nconst Positions: PopupPositionsType[] = [\n 'top center',\n 'top left',\n 'top right',\n 'bottom center',\n 'bottom left',\n 'bottom right',\n 'left middle',\n 'left top',\n 'left bottom',\n 'right middle',\n 'right top',\n 'right bottom',\n];\n\ntype DefaultProps = Required<\n Pick<HintProps, 'pos' | 'manual' | 'opened' | 'maxWidth' | 'disableAnimations' | 'useWrapper'>\n>;\n\n/**\n * Всплывающая подсказка, которая по умолчанию отображается при наведении на элемент. <br/> Можно задать другие условия отображения.\n */\n@rootNode\nexport class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Hint';\n public static displayName = 'Hint';\n\n public static defaultProps: DefaultProps = {\n pos: 'top',\n manual: false,\n opened: false,\n maxWidth: 200,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Hint.defaultProps);\n\n public state: HintState = {\n opened: this.getProps().manual ? !!this.getProps().opened : false,\n position: DUMMY_LOCATION.position,\n };\n\n private timer: SafeTimer;\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n\n public componentDidUpdate(prevProps: HintProps) {\n const { opened, manual } = this.getProps();\n if (!manual) {\n return;\n }\n if (this.timer) {\n globalObject.clearTimeout(this.timer);\n this.timer = null;\n }\n if (opened !== prevProps.opened) {\n this.setState({ opened: !!opened });\n }\n }\n\n public componentWillUnmount() {\n if (this.timer) {\n globalObject.clearTimeout(this.timer);\n this.timer = null;\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.hintPinOffset,\n popupMargin: theme.hintMargin,\n popupBorder: theme.hintBorder,\n popupBorderRadius: theme.hintBorderRadius,\n },\n this.theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderMain() {\n const { disableAnimations, useWrapper } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n hasPin\n opened={this.state.opened}\n anchorElement={this.props.children}\n positions={this.getPositions()}\n backgroundColor={this.theme.hintBgColor}\n borderColor={HINT_BORDER_COLOR}\n onPositionChange={(position) => this.setState({ position })}\n disableAnimations={disableAnimations}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n useWrapper={useWrapper}\n ref={this.popupRef}\n withoutMobile\n >\n {this.renderContent()}\n </Popup>\n </CommonWrapper>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n private renderContent() {\n if (!this.props.text) {\n return null;\n }\n\n const { maxWidth } = this.getProps();\n const centerAlignPositions = ['top', 'top center', 'bottom', 'bottom center'];\n const className = cx({\n [styles.content(this.theme)]: true,\n [styles.contentCenter(this.theme)]: centerAlignPositions.includes(this.state.position),\n });\n return (\n <div className={className} style={{ maxWidth }}>\n {this.props.text}\n </div>\n );\n }\n\n private getPositions = (): PopupPositionsType[] => {\n return Positions.filter((x) => x.startsWith(this.getProps().pos));\n };\n\n private handleMouseEnter = (e: MouseEventType) => {\n if (!this.getProps().manual && !this.timer) {\n this.timer = globalObject.setTimeout(this.open, 400);\n }\n\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(e);\n }\n };\n\n private handleMouseLeave = (e: MouseEventType) => {\n if (!this.getProps().manual && this.timer) {\n globalObject.clearTimeout(this.timer);\n this.timer = null;\n this.setState({ opened: false });\n }\n\n if (this.props.onMouseLeave) {\n this.props.onMouseLeave(e);\n }\n };\n\n private open = () => {\n this.setState({ opened: true });\n };\n}\n"]}
@@ -61,6 +61,7 @@ declare type DefaultProps = Required<Pick<HintProps, 'pos' | 'manual' | 'opened'
61
61
  */
62
62
  export declare class Hint extends React.PureComponent<HintProps, HintState> implements InstanceWithAnchorElement {
63
63
  static __KONTUR_REACT_UI__: string;
64
+ static displayName: string;
64
65
  static defaultProps: DefaultProps;
65
66
  private getProps;
66
67
  state: HintState;
@@ -206,7 +206,7 @@ export var Kebab = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_
206
206
  };
207
207
 
208
208
  return Kebab;
209
- }(React.Component), _class2.__KONTUR_REACT_UI__ = 'Kebab', _class2.propTypes = {}, _class2.defaultProps = {
209
+ }(React.Component), _class2.__KONTUR_REACT_UI__ = 'Kebab', _class2.displayName = 'Kebab', _class2.propTypes = {}, _class2.defaultProps = {
210
210
  onOpen: function onOpen() {
211
211
  return undefined;
212
212
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["Kebab.tsx"],"names":["React","PropTypes","isElement","globalObject","isKonturIcon","isKeyArrowVertical","isKeyEnter","isKeySpace","someKeys","LayoutEvents","keyListener","PopupMenu","ThemeContext","MenuKebabIcon","isTestEnv","ThemeFactory","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","styles","KebabIcon","KebabDataTids","caption","Kebab","getProps","defaultProps","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","disabled","size","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","handleFocus","handleBlur","kebab","theme","kebabSmall","kebabMedium","kebabLarge","kebab2022","opened","focused","props","renderIcon2022","renderIcon","e","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","requestAnimationFrame","isTabPressed","componentDidMount","addListener","componentWillUnmount","render","create","popupPinOffset","kebabPinOffset","popupMargin","kebabMargin","popupPinSize","kebabPinSize","menuScrollContainerContentWrapperPaddingY","menuLegacyPaddingY","renderMain","positions","disableAnimations","onOpen","onClose","setRootNode","preventIconsOffset","menuMaxHeight","popupMenuId","children","icon","iconsmall","iconmedium","iconlarge","sizes","small","parseInt","kebabIconSizeSmall","medium","kebabIconSizeMedium","large","kebabIconSizeLarge","cloneElement","color","kebabIconColor","Component","__KONTUR_REACT_UI__","propTypes","node","bool","oneOfType","string","number","func"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { isElement } from 'react-is';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isKonturIcon } from '../../lib/utils';\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';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles } from './Kebab.styles';\nimport { KebabIcon } from './KebabIcon';\n\nexport interface KebabProps\n extends Pick<AriaAttributes, 'aria-label'>,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>,\n CommonProps {\n disabled?: boolean;\n size?: SizeProp;\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 * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const KebabDataTids = {\n caption: 'Kebab__caption',\n} as const;\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\ntype DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations'>>;\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 };\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 menuScrollContainerContentWrapperPaddingY: theme.menuLegacyPaddingY,\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 preventIconsOffset={this.props.preventIconsOffset}\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 popupMenuId={this.props.popupMenuId}\n aria-label={this.props['aria-label']}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled, size } = this.getProps();\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 role=\"button\"\n data-tid={KebabDataTids.caption}\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),\n size === 'small' && styles.kebabSmall(this.theme),\n size === 'medium' && styles.kebabMedium(this.theme),\n size === 'large' && styles.kebabLarge(this.theme),\n isTheme2022(this.theme) && styles.kebab2022(),\n captionProps.opened && styles.opened(this.theme),\n disabled && styles.disabled(),\n this.state.focusedByTab && styles.focused(this.theme),\n )}\n aria-describedby={this.props['aria-describedby']}\n >\n {isTheme2022(this.theme) ? this.renderIcon2022() : 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 globalObject.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 = <MenuKebabIcon /> } = this.getProps();\n return (\n <div\n className={cx({\n [styles.icon(this.theme)]: true,\n [styles.iconsmall(this.theme)]: size === 'small',\n [styles.iconmedium(this.theme)]: size === 'medium',\n [styles.iconlarge(this.theme)]: size === 'large',\n })}\n >\n {icon}\n </div>\n );\n }\n\n private renderIcon2022() {\n const { size, icon = <KebabIcon /> } = this.getProps();\n\n if (isElement(icon) && isKonturIcon(icon)) {\n const sizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.kebabIconSizeSmall),\n medium: parseInt(this.theme.kebabIconSizeMedium),\n large: parseInt(this.theme.kebabIconSizeLarge),\n };\n\n return React.cloneElement(icon, {\n size: icon.props.size ?? sizes[size],\n color: icon.props.color ?? this.theme.kebabIconColor,\n });\n }\n\n return icon;\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":["React","PropTypes","isElement","globalObject","isKonturIcon","isKeyArrowVertical","isKeyEnter","isKeySpace","someKeys","LayoutEvents","keyListener","PopupMenu","ThemeContext","MenuKebabIcon","isTestEnv","ThemeFactory","CommonWrapper","cx","rootNode","createPropsGetter","isTheme2022","styles","KebabIcon","KebabDataTids","caption","Kebab","getProps","defaultProps","state","focusedByTab","anchor","listener","remove","undefined","renderCaption","captionProps","disabled","size","handleCaptionKeyDown","event","openMenu","handleCaptionClick","toggleMenu","handleFocus","handleBlur","kebab","theme","kebabSmall","kebabMedium","kebabLarge","kebab2022","opened","focused","props","renderIcon2022","renderIcon","e","preventDefault","handleChangeMenuState","isOpened","restoreFocus","setState","requestAnimationFrame","isTabPressed","componentDidMount","addListener","componentWillUnmount","render","create","popupPinOffset","kebabPinOffset","popupMargin","kebabMargin","popupPinSize","kebabPinSize","menuScrollContainerContentWrapperPaddingY","menuLegacyPaddingY","renderMain","positions","disableAnimations","onOpen","onClose","setRootNode","preventIconsOffset","menuMaxHeight","popupMenuId","children","icon","iconsmall","iconmedium","iconlarge","sizes","small","parseInt","kebabIconSizeSmall","medium","kebabIconSizeMedium","large","kebabIconSizeLarge","cloneElement","color","kebabIconColor","Component","__KONTUR_REACT_UI__","displayName","propTypes","node","bool","oneOfType","string","number","func"],"mappings":"2JAAA,OAAOA,KAAP,MAAsC,OAAtC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,SAAT,QAA0B,UAA1B;AACA,SAASC,YAAT,QAA6B,0BAA7B;;AAEA,SAASC,YAAT,QAA6B,iBAA7B;AACA,SAASC,kBAAT,EAA6BC,UAA7B,EAAyCC,UAAzC,EAAqDC,QAArD,QAAqE,uCAArE;AACA,OAAO,KAAKC,YAAZ,MAA8B,wBAA9B;AACA,SAASC,WAAT,QAA4B,8BAA5B;AACA,SAASC,SAAT,QAAiE,0BAAjE;;;AAGA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,aAAT,QAA8B,2BAA9B;AACA,SAASC,SAAT,QAA0B,8BAA1B;AACA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,aAAT,QAA2C,8BAA3C;AACA,SAASC,EAAT,QAAmB,2BAAnB;AACA,SAASC,QAAT,QAAuC,oBAAvC;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,SAASC,WAAT,QAA4B,gCAA5B;;;AAGA,SAASC,MAAT,QAAuB,gBAAvB;AACA,SAASC,SAAT,QAA0B,aAA1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,OAAO,IAAMC,aAAa,GAAG;AAC3BC,EAAAA,OAAO,EAAE,gBADkB,EAAtB;;;;;;;;;;;AAYP,WAAaC,KAAb,GADCP,QACD;;;;;;;;;;;;;;AAcUQ,IAAAA,QAdV,GAcqBP,iBAAiB,CAACM,KAAK,CAACE,YAAP,CAdtC;;AAgBSC,IAAAA,KAhBT,GAgB6B;AACzBC,MAAAA,YAAY,EAAE,KADW;AAEzBC,MAAAA,MAAM,EAAE,IAFiB,EAhB7B;;;;;;AAwBUC,IAAAA,QAxBV;;AA0BM;AACFC,MAAAA,MAAM,EAAE,0BAAMC,SAAN,EADN,EA1BN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwFUC,IAAAA,aAxFV,GAwF0B,UAACC,YAAD,EAAyC;AAC/D,2BAA2B,MAAKT,QAAL,EAA3B,CAAQU,QAAR,kBAAQA,QAAR,CAAkBC,IAAlB,kBAAkBA,IAAlB;AACA,UAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,KAAD,EAAgD;AAC3E,YAAI,CAACH,QAAL,EAAe;AACb,gBAAKE,oBAAL,CAA0BC,KAA1B,EAAiCJ,YAAY,CAACK,QAA9C;AACD;AACF,OAJD;;AAMA,UAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,GAAM;AAC/B,YAAI,CAACL,QAAL,EAAe;AACbD,UAAAA,YAAY,CAACO,UAAb;AACD;AACF,OAJD;;AAMA;AACE;AACE,UAAA,IAAI,EAAC,QADP;AAEE,sBAAUnB,aAAa,CAACC,OAF1B;AAGE,UAAA,QAAQ,EAAEY,QAAQ,GAAG,CAAC,CAAJ,GAAQ,CAH5B;AAIE,UAAA,OAAO,EAAEK,kBAJX;AAKE,UAAA,SAAS,EAAEH,oBALb;AAME,UAAA,OAAO,EAAE,MAAKK,WANhB;AAOE,UAAA,MAAM,EAAE,MAAKC,UAPf;AAQE,UAAA,SAAS,EAAE3B,EAAE;AACXI,UAAAA,MAAM,CAACwB,KAAP,CAAa,MAAKC,KAAlB,CADW;AAEXT,UAAAA,IAAI,KAAK,OAAT,IAAoBhB,MAAM,CAAC0B,UAAP,CAAkB,MAAKD,KAAvB,CAFT;AAGXT,UAAAA,IAAI,KAAK,QAAT,IAAqBhB,MAAM,CAAC2B,WAAP,CAAmB,MAAKF,KAAxB,CAHV;AAIXT,UAAAA,IAAI,KAAK,OAAT,IAAoBhB,MAAM,CAAC4B,UAAP,CAAkB,MAAKH,KAAvB,CAJT;AAKX1B,UAAAA,WAAW,CAAC,MAAK0B,KAAN,CAAX,IAA2BzB,MAAM,CAAC6B,SAAP,EALhB;AAMXf,UAAAA,YAAY,CAACgB,MAAb,IAAuB9B,MAAM,CAAC8B,MAAP,CAAc,MAAKL,KAAnB,CANZ;AAOXV,UAAAA,QAAQ,IAAIf,MAAM,CAACe,QAAP,EAPD;AAQX,gBAAKR,KAAL,CAAWC,YAAX,IAA2BR,MAAM,CAAC+B,OAAP,CAAe,MAAKN,KAApB,CARhB,CARf;;AAkBE,8BAAkB,MAAKO,KAAL,CAAW,kBAAX,CAlBpB;;AAoBGjC,QAAAA,WAAW,CAAC,MAAK0B,KAAN,CAAX,GAA0B,MAAKQ,cAAL,EAA1B,GAAkD,MAAKC,UAAL,EApBrD,CADF;;;AAwBD,KA9HH;;AAgIUjB,IAAAA,oBAhIV,GAgIiC;AAC7BkB,IAAAA,CAD6B;AAE7BhB,IAAAA,QAF6B;AAG1B;AACH,UAAIhC,QAAQ,CAACF,UAAD,EAAaC,UAAb,EAAyBF,kBAAzB,CAAR,CAAqDmD,CAArD,CAAJ,EAA6D;AAC3DA,QAAAA,CAAC,CAACC,cAAF;AACAjB,QAAAA,QAAQ,CAAC,IAAD,CAAR;AACD;AACF,KAxIH;;AA0IUkB,IAAAA,qBA1IV,GA0IkC,UAACC,QAAD,EAAoBC,YAApB,EAAoD;AAClF,YAAKC,QAAL,CAAc;AACZhC,QAAAA,YAAY,EAAE,CAAC8B,QAAD,IAAaC,YADf,EAAd;;AAGD,KA9IH;;AAgJUjB,IAAAA,WAhJV,GAgJwB,YAAM;AAC1B,UAAI,CAAC,MAAKU,KAAL,CAAWjB,QAAhB,EAA0B;AACxB;AACA;AACAjC,QAAAA,YAAY,CAAC2D,qBAAb,oBAAA3D,YAAY,CAAC2D,qBAAb,CAAqC,YAAM;AACzC,cAAIpD,WAAW,CAACqD,YAAhB,EAA8B;AAC5B,kBAAKF,QAAL,CAAc,EAAEhC,YAAY,EAAE,IAAhB,EAAd;AACD;AACF,SAJD;AAKD;AACF,KA1JH;;AA4JUe,IAAAA,UA5JV,GA4JuB,YAAM;AACzB,YAAKiB,QAAL,CAAc;AACZhC,QAAAA,YAAY,EAAE,KADF,EAAd;;AAGD,KAhKH,mDA8BSmC,iBA9BT,GA8BE,6BAA2B,CACzB,4CACA,KAAKjC,QAAL,GAAgBtB,YAAY,CAACwD,WAAb,CAAyB,oBAAMhC,SAAN,EAAzB,CAAhB,CACD,CAjCH,QAmCSiC,oBAnCT,GAmCE,gCAA8B,CAC5B,KAAKnC,QAAL,CAAcC,MAAd,GACD,CArCH,QAuCSmC,MAvCT,GAuCE,kBAA6B,mBAC3B,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACrB,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,oBAAC,YAAD,CAAc,QAAd,IACE,KAAK,EAAE/B,YAAY,CAACqD,MAAb,CACL,EACEC,cAAc,EAAEvB,KAAK,CAACwB,cADxB,EAEEC,WAAW,EAAEzB,KAAK,CAAC0B,WAFrB,EAGEC,YAAY,EAAE3B,KAAK,CAAC4B,YAHtB,EAIEC,yCAAyC,EAAE7B,KAAK,CAAC8B,kBAJnD,EADK,EAOL9B,KAPK,CADT,IAWG,MAAI,CAAC+B,UAAL,EAXH,CADF,CAeD,CAlBH,CADF,CAsBD,CA9DH,QAgEUA,UAhEV,GAgEE,sBAAqB,CACnB,IAAQzC,QAAR,GAAqB,KAAKiB,KAA1B,CAAQjB,QAAR,CACA,sBAA0D,KAAKV,QAAL,EAA1D,CAAQoD,SAAR,mBAAQA,SAAR,CAAmBC,iBAAnB,mBAAmBA,iBAAnB,CAAsCC,MAAtC,mBAAsCA,MAAtC,CAA8CC,OAA9C,mBAA8CA,OAA9C,CACA,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,KAAKC,WAAjC,IAAkD,KAAK7B,KAAvD,gBACE,oBAAC,SAAD,IACE,WAAW,MADb,EAEE,kBAAkB,EAAE,KAAKA,KAAL,CAAW8B,kBAFjC,EAGE,SAAS,EAAEL,SAHb,EAIE,iBAAiB,EAAE,KAAKpB,qBAJ1B,EAKE,OAAO,EAAE,KAAKxB,aALhB,EAME,iBAAiB,EAAE6C,iBANrB,EAOE,aAAa,EAAE,KAAK1B,KAAL,CAAW+B,aAP5B,EAQE,MAAM,EAAEJ,MARV,EASE,OAAO,EAAEC,OATX,EAUE,WAAW,EAAE,KAAK5B,KAAL,CAAWgC,WAV1B,EAWE,cAAY,KAAKhC,KAAL,CAAW,YAAX,CAXd,IAaG,CAACjB,QAAD,IAAa,KAAKiB,KAAL,CAAWiC,QAb3B,CADF,CADF,CAmBD,CAtFH;;AAkKU/B,EAAAA,UAlKV,GAkKE,sBAAqB;AACnB,0BAA2C,KAAK7B,QAAL,EAA3C,CAAQW,IAAR,mBAAQA,IAAR,wCAAckD,IAAd,CAAcA,IAAd,kDAAqB,oBAAC,aAAD,OAArB;AACA;AACE;AACE,QAAA,SAAS,EAAEtE,EAAE;AACVI,QAAAA,MAAM,CAACkE,IAAP,CAAY,KAAKzC,KAAjB,CADU,IACgB,IADhB;AAEVzB,QAAAA,MAAM,CAACmE,SAAP,CAAiB,KAAK1C,KAAtB,CAFU,IAEqBT,IAAI,KAAK,OAF9B;AAGVhB,QAAAA,MAAM,CAACoE,UAAP,CAAkB,KAAK3C,KAAvB,CAHU,IAGsBT,IAAI,KAAK,QAH/B;AAIVhB,QAAAA,MAAM,CAACqE,SAAP,CAAiB,KAAK5C,KAAtB,CAJU,IAIqBT,IAAI,KAAK,OAJ9B,OADf;;;AAQGkD,MAAAA,IARH,CADF;;;AAYD,GAhLH;;AAkLUjC,EAAAA,cAlLV,GAkLE,0BAAyB;AACvB,0BAAuC,KAAK5B,QAAL,EAAvC,CAAQW,IAAR,mBAAQA,IAAR,wCAAckD,IAAd,CAAcA,IAAd,kDAAqB,oBAAC,SAAD,OAArB;;AAEA,QAAIrF,SAAS,CAACqF,IAAD,CAAT,IAAmBnF,YAAY,CAACmF,IAAD,CAAnC,EAA2C;AACzC,UAAMI,KAA+B,GAAG;AACtCC,QAAAA,KAAK,EAAEC,QAAQ,CAAC,KAAK/C,KAAL,CAAWgD,kBAAZ,CADuB;AAEtCC,QAAAA,MAAM,EAAEF,QAAQ,CAAC,KAAK/C,KAAL,CAAWkD,mBAAZ,CAFsB;AAGtCC,QAAAA,KAAK,EAAEJ,QAAQ,CAAC,KAAK/C,KAAL,CAAWoD,kBAAZ,CAHuB,EAAxC;;;AAMA,0BAAOlG,KAAK,CAACmG,YAAN,CAAmBZ,IAAnB,EAAyB;AAC9BlD,QAAAA,IAAI,sBAAEkD,IAAI,CAAClC,KAAL,CAAWhB,IAAb,+BAAqBsD,KAAK,CAACtD,IAAD,CADA;AAE9B+D,QAAAA,KAAK,uBAAEb,IAAI,CAAClC,KAAL,CAAW+C,KAAb,gCAAsB,KAAKtD,KAAL,CAAWuD,cAFR,EAAzB,CAAP;;AAID;;AAED,WAAOd,IAAP;AACD,GAnMH,gBAA2BvF,KAAK,CAACsG,SAAjC,WACgBC,mBADhB,GACsC,OADtC,UAEgBC,WAFhB,GAE8B,OAF9B,UAIgBC,SAJhB,GAI4B,EAJ5B,UAMgB9E,YANhB,GAM6C,EACzCqD,MAAM,EAAE,0BAAM/C,SAAN,EADiC,EAEzCgD,OAAO,EAAE,2BAAMhD,SAAN,EAFgC,EAGzC6C,SAAS,EAAE,CAAC,aAAD,EAAgB,cAAhB,EAAgC,UAAhC,EAA4C,WAA5C,CAH8B,EAIzCzC,IAAI,EAAE,OAJmC,EAKzC0C,iBAAiB,EAAEjE,SALsB,EAN7C;;;AAsMAW,KAAK,CAACgF,SAAN,GAAkB;AAChBnB,EAAAA,QAAQ,EAAErF,SAAS,CAACyG,IADJ;AAEhBtE,EAAAA,QAAQ,EAAEnC,SAAS,CAAC0G,IAFJ;AAGhBvB,EAAAA,aAAa,EAAEnF,SAAS,CAAC2G,SAAV,CAAoB,CAAC3G,SAAS,CAAC4G,MAAX,EAAmB5G,SAAS,CAAC6G,MAA7B,CAApB,CAHC;;AAKhB;AACF;AACA;AACEzE,EAAAA,IAAI,EAAEpC,SAAS,CAAC4G,MARA;;AAUhB;AACF;AACA;AACE5B,EAAAA,OAAO,EAAEhF,SAAS,CAAC8G,IAbH;;AAehB;AACF;AACA;AACE/B,EAAAA,MAAM,EAAE/E,SAAS,CAAC8G,IAlBF,EAAlB","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { isElement } from 'react-is';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { isKonturIcon } from '../../lib/utils';\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';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { SizeProp } from '../../lib/types/props';\n\nimport { styles } from './Kebab.styles';\nimport { KebabIcon } from './KebabIcon';\n\nexport interface KebabProps\n extends Pick<AriaAttributes, 'aria-label'>,\n Pick<PopupMenuProps, 'onOpen' | 'onClose' | 'popupMenuId' | 'preventIconsOffset'>,\n CommonProps {\n disabled?: boolean;\n size?: SizeProp;\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 * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const KebabDataTids = {\n caption: 'Kebab__caption',\n} as const;\n\nexport interface KebabState {\n anchor: Nullable<HTMLElement>;\n focusedByTab: boolean;\n}\n\ntype DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations'>>;\n\n@rootNode\nexport class Kebab extends React.Component<KebabProps, KebabState> {\n public static __KONTUR_REACT_UI__ = 'Kebab';\n public static displayName = '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 };\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 menuScrollContainerContentWrapperPaddingY: theme.menuLegacyPaddingY,\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 preventIconsOffset={this.props.preventIconsOffset}\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 popupMenuId={this.props.popupMenuId}\n aria-label={this.props['aria-label']}\n >\n {!disabled && this.props.children}\n </PopupMenu>\n </CommonWrapper>\n );\n }\n\n private renderCaption = (captionProps: PopupMenuCaptionProps) => {\n const { disabled, size } = this.getProps();\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 role=\"button\"\n data-tid={KebabDataTids.caption}\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),\n size === 'small' && styles.kebabSmall(this.theme),\n size === 'medium' && styles.kebabMedium(this.theme),\n size === 'large' && styles.kebabLarge(this.theme),\n isTheme2022(this.theme) && styles.kebab2022(),\n captionProps.opened && styles.opened(this.theme),\n disabled && styles.disabled(),\n this.state.focusedByTab && styles.focused(this.theme),\n )}\n aria-describedby={this.props['aria-describedby']}\n >\n {isTheme2022(this.theme) ? this.renderIcon2022() : 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 globalObject.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 = <MenuKebabIcon /> } = this.getProps();\n return (\n <div\n className={cx({\n [styles.icon(this.theme)]: true,\n [styles.iconsmall(this.theme)]: size === 'small',\n [styles.iconmedium(this.theme)]: size === 'medium',\n [styles.iconlarge(this.theme)]: size === 'large',\n })}\n >\n {icon}\n </div>\n );\n }\n\n private renderIcon2022() {\n const { size, icon = <KebabIcon /> } = this.getProps();\n\n if (isElement(icon) && isKonturIcon(icon)) {\n const sizes: Record<SizeProp, number> = {\n small: parseInt(this.theme.kebabIconSizeSmall),\n medium: parseInt(this.theme.kebabIconSizeMedium),\n large: parseInt(this.theme.kebabIconSizeLarge),\n };\n\n return React.cloneElement(icon, {\n size: icon.props.size ?? sizes[size],\n color: icon.props.color ?? this.theme.kebabIconColor,\n });\n }\n\n return icon;\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"]}
@@ -40,6 +40,7 @@ export interface KebabState {
40
40
  declare type DefaultProps = Required<Pick<KebabProps, 'onOpen' | 'onClose' | 'positions' | 'size' | 'disableAnimations'>>;
41
41
  export declare class Kebab extends React.Component<KebabProps, KebabState> {
42
42
  static __KONTUR_REACT_UI__: string;
43
+ static displayName: string;
43
44
  static propTypes: {};
44
45
  static defaultProps: DefaultProps;
45
46
  private getProps;
@@ -176,7 +176,7 @@ var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Co
176
176
  };
177
177
 
178
178
  return Link;
179
- }(React.Component), _class2.__KONTUR_REACT_UI__ = 'Link', _class2.propTypes = {
179
+ }(React.Component), _class2.__KONTUR_REACT_UI__ = 'Link', _class2.displayName = 'Link', _class2.propTypes = {
180
180
  disabled: PropTypes.bool,
181
181
  href: PropTypes.string,
182
182
  icon: PropTypes.node,
@@ -1 +1 @@
1
- {"version":3,"sources":["Link.tsx"],"names":["React","PropTypes","globalObject","keyListener","ThemeContext","isExternalLink","Spinner","CommonWrapper","cx","rootNode","createPropsGetter","ThemeFactory","isDarkTheme","isTheme2022","isIE11","globalClasses","styles","LinkDataTids","root","Link","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","Component","as","focused","rest","_isTheme2022","theme","iconElement","arrow","isFocused","linkProps","className","useRoot","useDefault","useSuccess","useDanger","useGrayed","button","buttonOpened","getLinkClassName","Boolean","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","tabIndex","child","children","lineTextWrapper","lineTextWrapperFocused","text","lineText","lineTextIE11","requestAnimationFrame","isTabPressed","setState","event","preventDefault","render","create","setRootNode","isBorderBottom","parseInt","linkLineBorderBottomWidth","focus","useGrayedFocus","lineRoot","disabledDark22Theme","lineFocus","lineFocusSuccess","lineFocusDanger","lineFocusGrayed","__KONTUR_REACT_UI__","propTypes","bool","string","node","oneOf"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter, DefaultizedProps } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { isDarkTheme, isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isIE11 } from '../../lib/client';\n\nimport { globalClasses, styles } from './Link.styles';\n\nexport interface LinkProps\n extends Pick<AriaAttributes, 'aria-label'>,\n 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 * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n /**\n * Компонент, используемый в качестве корневого узла.\n * @ignore\n */\n as?: React.ElementType | keyof React.ReactHTML;\n /**\n * @ignore\n */\n focused?: boolean;\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' | 'as'>>;\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 as: 'a',\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 = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, 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 {\n disabled,\n href,\n icon,\n use,\n loading,\n _button,\n _buttonOpened,\n rel: relOrigin,\n as: Component,\n focused = false,\n ...rest\n } = props;\n const _isTheme2022 = isTheme2022(this.theme);\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 isFocused = !disabled && (this.state.focusedByTab || focused);\n\n const linkProps = {\n className: cx(\n styles.useRoot(),\n use === 'default' && styles.useDefault(this.theme),\n use === 'success' && styles.useSuccess(this.theme),\n use === 'danger' && styles.useDanger(this.theme),\n use === 'grayed' && styles.useGrayed(this.theme),\n !!_button && styles.button(this.theme),\n !!_buttonOpened && styles.buttonOpened(this.theme),\n this.getLinkClassName(isFocused, Boolean(disabled || loading), _isTheme2022),\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 let child = this.props.children;\n if (_isTheme2022) {\n // lineTextWrapper нужен для реализации transition у подчеркивания\n child = (\n <span\n className={cx(styles.lineTextWrapper(this.theme), {\n [styles.lineTextWrapperFocused(this.theme)]: isFocused,\n })}\n >\n <span\n className={cx(globalClasses.text, {\n [styles.lineText(this.theme)]: !isIE11,\n [styles.lineTextIE11(this.theme)]: isIE11,\n })}\n >\n {this.props.children}\n </span>\n </span>\n );\n }\n\n return (\n <Component data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {iconElement}\n {child}\n {arrow}\n </Component>\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 globalObject.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 private getLinkClassName(focused: boolean, disabled: boolean, _isTheme2022: boolean): string {\n const { use } = this.getProps();\n const isBorderBottom = parseInt(this.theme.linkLineBorderBottomWidth) > 0;\n const isFocused = focused && !disabled;\n\n return !isBorderBottom\n ? cx(\n styles.root(this.theme),\n isFocused && styles.focus(this.theme),\n disabled && styles.disabled(this.theme),\n use === 'grayed' && focused && styles.useGrayedFocus(this.theme),\n )\n : cx(\n styles.lineRoot(),\n disabled && styles.disabled(this.theme),\n disabled && _isTheme2022 && isDarkTheme(this.theme) && styles.disabledDark22Theme(this.theme),\n isFocused && use === 'default' && styles.lineFocus(this.theme),\n isFocused && use === 'success' && styles.lineFocusSuccess(this.theme),\n isFocused && use === 'danger' && styles.lineFocusDanger(this.theme),\n isFocused && use === 'grayed' && styles.lineFocusGrayed(this.theme),\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["Link.tsx"],"names":["React","PropTypes","globalObject","keyListener","ThemeContext","isExternalLink","Spinner","CommonWrapper","cx","rootNode","createPropsGetter","ThemeFactory","isDarkTheme","isTheme2022","isIE11","globalClasses","styles","LinkDataTids","root","Link","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","use","loading","_button","_buttonOpened","relOrigin","rel","Component","as","focused","rest","_isTheme2022","theme","iconElement","arrow","isFocused","linkProps","className","useRoot","useDefault","useSuccess","useDanger","useGrayed","button","buttonOpened","getLinkClassName","Boolean","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","tabIndex","child","children","lineTextWrapper","lineTextWrapperFocused","text","lineText","lineTextIE11","requestAnimationFrame","isTabPressed","setState","event","preventDefault","render","create","setRootNode","isBorderBottom","parseInt","linkLineBorderBottomWidth","focus","useGrayedFocus","lineRoot","disabledDark22Theme","lineFocus","lineFocusSuccess","lineFocusDanger","lineFocusGrayed","__KONTUR_REACT_UI__","displayName","propTypes","bool","string","node","oneOf"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { isExternalLink } from '../../lib/utils';\nimport { Spinner } from '../Spinner';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { createPropsGetter, DefaultizedProps } from '../../lib/createPropsGetter';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { isDarkTheme, isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { isIE11 } from '../../lib/client';\n\nimport { globalClasses, styles } from './Link.styles';\n\nexport interface LinkProps\n extends Pick<AriaAttributes, 'aria-label'>,\n 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 * Обычный объект с переменными темы.\n * Он будет объединён с темой из контекста.\n */\n theme?: ThemeIn;\n /**\n * Компонент, используемый в качестве корневого узла.\n * @ignore\n */\n as?: React.ElementType | keyof React.ReactHTML;\n /**\n * @ignore\n */\n focused?: boolean;\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' | 'as'>>;\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 public static displayName = '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 as: 'a',\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 = this.props.theme ? ThemeFactory.create(this.props.theme as Theme, 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 {\n disabled,\n href,\n icon,\n use,\n loading,\n _button,\n _buttonOpened,\n rel: relOrigin,\n as: Component,\n focused = false,\n ...rest\n } = props;\n const _isTheme2022 = isTheme2022(this.theme);\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 isFocused = !disabled && (this.state.focusedByTab || focused);\n\n const linkProps = {\n className: cx(\n styles.useRoot(),\n use === 'default' && styles.useDefault(this.theme),\n use === 'success' && styles.useSuccess(this.theme),\n use === 'danger' && styles.useDanger(this.theme),\n use === 'grayed' && styles.useGrayed(this.theme),\n !!_button && styles.button(this.theme),\n !!_buttonOpened && styles.buttonOpened(this.theme),\n this.getLinkClassName(isFocused, Boolean(disabled || loading), _isTheme2022),\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 let child = this.props.children;\n if (_isTheme2022) {\n // lineTextWrapper нужен для реализации transition у подчеркивания\n child = (\n <span\n className={cx(styles.lineTextWrapper(this.theme), {\n [styles.lineTextWrapperFocused(this.theme)]: isFocused,\n })}\n >\n <span\n className={cx(globalClasses.text, {\n [styles.lineText(this.theme)]: !isIE11,\n [styles.lineTextIE11(this.theme)]: isIE11,\n })}\n >\n {this.props.children}\n </span>\n </span>\n );\n }\n\n return (\n <Component data-tid={LinkDataTids.root} {...rest} {...linkProps}>\n {iconElement}\n {child}\n {arrow}\n </Component>\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 globalObject.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 private getLinkClassName(focused: boolean, disabled: boolean, _isTheme2022: boolean): string {\n const { use } = this.getProps();\n const isBorderBottom = parseInt(this.theme.linkLineBorderBottomWidth) > 0;\n const isFocused = focused && !disabled;\n\n return !isBorderBottom\n ? cx(\n styles.root(this.theme),\n isFocused && styles.focus(this.theme),\n disabled && styles.disabled(this.theme),\n use === 'grayed' && focused && styles.useGrayedFocus(this.theme),\n )\n : cx(\n styles.lineRoot(),\n disabled && styles.disabled(this.theme),\n disabled && _isTheme2022 && isDarkTheme(this.theme) && styles.disabledDark22Theme(this.theme),\n isFocused && use === 'default' && styles.lineFocus(this.theme),\n isFocused && use === 'success' && styles.lineFocusSuccess(this.theme),\n isFocused && use === 'danger' && styles.lineFocusDanger(this.theme),\n isFocused && use === 'grayed' && styles.lineFocusGrayed(this.theme),\n );\n }\n}\n"]}
@@ -68,6 +68,7 @@ declare type DefaultProps = Required<Pick<LinkProps, 'href' | 'use' | 'as'>>;
68
68
  */
69
69
  export declare class Link extends React.Component<LinkProps, LinkState> {
70
70
  static __KONTUR_REACT_UI__: string;
71
+ static displayName: string;
71
72
  static propTypes: {
72
73
  disabled: PropTypes.Requireable<boolean>;
73
74
  href: PropTypes.Requireable<string>;
@@ -326,7 +326,7 @@ var Loader = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$
326
326
  };
327
327
 
328
328
  return Loader;
329
- }(React.Component), _class2.__KONTUR_REACT_UI__ = 'Loader', _class2.defaultProps = {
329
+ }(React.Component), _class2.__KONTUR_REACT_UI__ = 'Loader', _class2.displayName = 'Loader', _class2.defaultProps = {
330
330
  type: 'normal',
331
331
  active: false,
332
332
  delayBeforeSpinnerShow: isTestEnv ? 0 : 300,
@@ -1 +1 @@
1
- {"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","globalObject","isBrowser","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","createPropsGetter","styles","types","LoaderDataTids","veil","spinner","Loader","props","getProps","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","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","MutationObserver","config","childList","subtree","observer","observe","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","theme","renderMain","caption","type","setRootNode","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","propTypes","bool","node","className","string","oneOf","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\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\nconst types = ['mini', 'normal', 'big'] as const;\n\nexport type LoaderType = typeof types[number];\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active?: boolean;\n /**\n * Подпись под спиннером\n */\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n /**\n * Размер спиннера и текста\n *\n * @default normal\n */\n type?: LoaderType;\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 * Компонент `Loader` принимает внутрь себя контент, поверх которого в активном состоянии `Loader`'а будет отрисован спиннер\n *\n * Если вам нужен только сам спиннер без дополнительнго функционала - используйте компонент [Spinner](https://tech.skbkontur.ru/react-ui/#/Components/Spinner)\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: '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 type: PropTypes.oneOf(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 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 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?: LoaderType, 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 || !isBrowser(globalObject)) {\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 = globalObject.innerHeight;\n const windowWidth = globalObject.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(globalObject.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 || !globalObject.MutationObserver) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new globalObject.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":["React","PropTypes","debounce","globalObject","isBrowser","LayoutEvents","Spinner","ThemeContext","ZIndex","CommonWrapper","cx","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","createPropsGetter","styles","types","LoaderDataTids","veil","spinner","Loader","props","getProps","defaultProps","childrenRef","element","childrenContainerNode","spinnerRef","spinnerContainerNode","checkSpinnerPosition","containerTop","top","containerRight","right","containerBottom","bottom","containerLeft","left","containerHeight","height","containerWidth","width","windowHeight","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","MutationObserver","config","childList","subtree","observer","observe","disconnect","state","isSpinnerVisible","isLoaderActive","spinnerTask","delayBeforeTaskStart","delayBeforeSpinnerShow","durationOfTask","minimalDelayBeforeSpinnerHide","taskStartCallback","taskStopCallback","componentDidMount","active","start","layoutEvents","addListener","componentDidUpdate","prevProps","prevState","component","update","stop","componentWillUnmount","remove","clearTask","getDerivedStateFromProps","render","theme","renderMain","caption","type","setRootNode","loader","children","renderSpinner","spinnerContainer","spinnerContainerSticky","spinnerComponentWrapper","undefined","Component","__KONTUR_REACT_UI__","displayName","propTypes","bool","node","className","string","oneOf","number"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debounce from 'lodash.debounce';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\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\nconst types = ['mini', 'normal', 'big'] as const;\n\nexport type LoaderType = typeof types[number];\n\nexport interface LoaderProps extends CommonProps {\n children?: React.ReactNode;\n /**\n * Флаг переключения состояния лоадера\n * @default false\n */\n active?: boolean;\n /**\n * Подпись под спиннером\n */\n caption?: SpinnerProps['caption'];\n /**\n * Компонент заменяющий спиннер.\n */\n component?: React.ReactNode;\n /**\n * Размер спиннера и текста\n *\n * @default normal\n */\n type?: LoaderType;\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 * Компонент `Loader` принимает внутрь себя контент, поверх которого в активном состоянии `Loader`'а будет отрисован спиннер\n *\n * Если вам нужен только сам спиннер без дополнительнго функционала - используйте компонент [Spinner](https://tech.skbkontur.ru/react-ui/#/Components/Spinner)\n */\n@rootNode\nexport class Loader extends React.Component<LoaderProps, LoaderState> {\n public static __KONTUR_REACT_UI__ = 'Loader';\n public static displayName = 'Loader';\n\n public static defaultProps: DefaultProps = {\n type: '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 type: PropTypes.oneOf(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 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 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?: LoaderType, 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 || !isBrowser(globalObject)) {\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 = globalObject.innerHeight;\n const windowWidth = globalObject.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(globalObject.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 || !globalObject.MutationObserver) {\n return;\n }\n const config = {\n childList: true,\n subtree: true,\n };\n const observer = new globalObject.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"]}
@@ -55,6 +55,7 @@ declare type DefaultProps = Required<Pick<LoaderProps, 'type' | 'active' | 'dela
55
55
  */
56
56
  export declare class Loader extends React.Component<LoaderProps, LoaderState> {
57
57
  static __KONTUR_REACT_UI__: string;
58
+ static displayName: string;
58
59
  static defaultProps: DefaultProps;
59
60
  private getProps;
60
61
  static propTypes: {
@@ -330,7 +330,7 @@ export var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
330
330
  };
331
331
 
332
332
  return MenuItem;
333
- }(React.Component), _class2.__KONTUR_REACT_UI__ = 'MenuItem', _class2.__MENU_ITEM__ = true, _class2.propTypes = {
333
+ }(React.Component), _class2.__KONTUR_REACT_UI__ = 'MenuItem', _class2.displayName = 'MenuItem', _class2.__MENU_ITEM__ = true, _class2.propTypes = {
334
334
  comment: PropTypes.node,
335
335
  disabled: PropTypes.bool,
336
336
  href: PropTypes.string,
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","globalObject","isBrowser","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","MenuContext","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","styles","MenuItemDataTids","root","content","comment","MenuItem","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","createRef","highlight","setState","unhighlight","select","event","handleClick","isEnabled","props","disabled","navigate","href","target","window","open","location","renderMain","link","icon","loose","size","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","rel","isNotSelectable","rest","hover","iconElement","top","theme","getIconSizeClassName","className","getRootSizeClassName","rootMobile","selected","getWithIconSizeClassName","Boolean","context","enableIconPadding","children","Component","getComponent","setRootRef","handleMouseEnterFix","handleMouseLeave","undefined","mobileContentWithIcon","commentHover","e","menuItemsAtAnyLevel","navigation","onClick","onItemClick","element","hasIconAmongItems","items","some","item","render","flags","setRootNode","componentDidMount","getComputedStyle","getPropertyValue","current","add","setEnableIconPadding","componentWillUnmount","remove","componentDidUpdate","prevProps","rootLarge","rootMedium","rootSmall","iconLarge","iconMedium","iconSmall","withIconLarge","withIconMedium","withIconSmall","__KONTUR_REACT_UI__","__MENU_ITEM__","propTypes","node","bool","string","func","contextType","isMenuItem"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, 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';\nimport { SizeProp } from '../../lib/types/props';\nimport { MenuContext, MenuContextType } from '../../internal/Menu/MenuContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\n\nimport { styles } from './MenuItem.styles';\n\n/**\n * @deprecated use SizeProp\n */\nexport type MenuItemSize = SizeProp;\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Omit<CommonProps, 'children'> {\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 * Размер\n */\n size?: SizeProp;\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 * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n /**\n * Запрещает выделение и выбор данного пункта меню\n *\n */\n isNotSelectable?: boolean;\n\n isMobile?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\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 size: PropTypes.string,\n };\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n private menuItemsAtAnyLevel?: boolean;\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.menuItemsAtAnyLevel = getFullReactUIFlagsContext(flags).menuItemsAtAnyLevel;\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 </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.rootRef && isBrowser(globalObject)) {\n this.setState({ iconOffsetTop: globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n if (this.contentRef.current && this.menuItemsAtAnyLevel && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon && this.menuItemsAtAnyLevel) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current && this.menuItemsAtAnyLevel) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (\n this.contentRef.current &&\n this.menuItemsAtAnyLevel &&\n prevProps.isNotSelectable !== this.props.isNotSelectable\n ) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = () => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = () => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>) => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = () => {\n return !this.props.disabled;\n };\n\n public navigate = () => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n window.open(this.props.href, this.props.target);\n } else {\n location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.withIconLarge(this.theme);\n case 'medium':\n return styles.withIconMedium(this.theme);\n case 'small':\n default:\n return styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n rel = this.props.href && isExternalLink(this.props.href) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n ...rest\n } = props;\n\n const hover = (this.state.highlighted || state === 'hover') && !disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={cx({\n [styles.icon(this.theme)]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected' && !this.state.highlighted,\n [styles.link(this.theme)]: !!link,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.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 ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.state.highlighted ? 'hover' : state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {content}\n </span>\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) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n this.menuItemsAtAnyLevel && !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n this.menuItemsAtAnyLevel && !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n if (this.menuItemsAtAnyLevel) {\n this.context.onItemClick?.(e);\n }\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
1
+ {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","globalObject","isBrowser","isExternalLink","isFunction","isNonNullable","isReactUIComponent","ThemeContext","CommonWrapper","cx","rootNode","MenuContext","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","styles","MenuItemDataTids","root","content","comment","MenuItem","state","iconOffsetTop","highlighted","mouseEntered","rootRef","contentRef","createRef","highlight","setState","unhighlight","select","event","handleClick","isEnabled","props","disabled","navigate","href","target","window","open","location","renderMain","link","icon","loose","size","_enableIconPadding","component","onMouseEnter","onMouseLeave","isMobile","rel","isNotSelectable","rest","hover","iconElement","top","theme","getIconSizeClassName","className","getRootSizeClassName","rootMobile","selected","getWithIconSizeClassName","Boolean","context","enableIconPadding","children","Component","getComponent","setRootRef","handleMouseEnterFix","handleMouseLeave","undefined","mobileContentWithIcon","commentHover","e","menuItemsAtAnyLevel","navigation","onClick","onItemClick","element","hasIconAmongItems","items","some","item","render","flags","setRootNode","componentDidMount","getComputedStyle","getPropertyValue","current","add","setEnableIconPadding","componentWillUnmount","remove","componentDidUpdate","prevProps","rootLarge","rootMedium","rootSmall","iconLarge","iconMedium","iconSmall","withIconLarge","withIconMedium","withIconSmall","__KONTUR_REACT_UI__","displayName","__MENU_ITEM__","propTypes","node","bool","string","func","contextType","isMenuItem"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes } from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, 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';\nimport { SizeProp } from '../../lib/types/props';\nimport { MenuContext, MenuContextType } from '../../internal/Menu/MenuContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\n\nimport { styles } from './MenuItem.styles';\n\n/**\n * @deprecated use SizeProp\n */\nexport type MenuItemSize = SizeProp;\n\nexport type MenuItemState = null | 'hover' | 'selected' | void;\n\nexport interface MenuItemProps\n extends Pick<AriaAttributes, 'aria-describedby' | 'aria-label'>,\n Omit<CommonProps, 'children'> {\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 * Размер\n */\n size?: SizeProp;\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 * HTML-атрибут `rel`.\n *\n * Для внешних ссылок аттрибут rel по умолчанию равен \"noopener noreferrer\"\n */\n rel?: React.AnchorHTMLAttributes<HTMLAnchorElement>['rel'];\n /**\n * Заменяет корневой элемент, на компонент переданный в проп.\n *\n * По умолчанию корневой элемент рендерится как `button`. <br />Если передан `href`, то вместо `button` рендерится `a`.\n */\n component?: React.ComponentType<any>;\n /**\n * Запрещает выделение и выбор данного пункта меню\n *\n */\n isNotSelectable?: boolean;\n\n isMobile?: boolean;\n}\n\nexport const MenuItemDataTids = {\n root: 'MenuItem__root',\n content: 'MenuItem__content',\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 displayName = '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 size: PropTypes.string,\n };\n\n public state = {\n iconOffsetTop: 0,\n highlighted: false,\n };\n\n private theme!: Theme;\n private mouseEntered = false;\n private setRootNode!: TSetRootNode;\n private rootRef: Nullable<HTMLElement> = null;\n private contentRef = React.createRef<HTMLElement>();\n private menuItemsAtAnyLevel?: boolean;\n static contextType = MenuContext;\n\n public context!: MenuContextType;\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.menuItemsAtAnyLevel = getFullReactUIFlagsContext(flags).menuItemsAtAnyLevel;\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 </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n public componentDidMount() {\n if (this.rootRef && isBrowser(globalObject)) {\n this.setState({ iconOffsetTop: globalObject.getComputedStyle(this.rootRef).getPropertyValue('padding-top') });\n }\n if (this.contentRef.current && this.menuItemsAtAnyLevel && !this.props.isNotSelectable) {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n if (this.props.icon && this.menuItemsAtAnyLevel) {\n this.context.setEnableIconPadding?.(true);\n }\n }\n\n public componentWillUnmount() {\n if (this.contentRef.current && this.menuItemsAtAnyLevel) {\n !this.props.isNotSelectable && this.context.navigation?.remove(this.contentRef.current);\n this.context.setEnableIconPadding?.(this.hasIconAmongItems());\n }\n }\n\n public componentDidUpdate(prevProps: Readonly<MenuItemProps>) {\n if (prevProps.icon !== this.props.icon) {\n this.context.setEnableIconPadding?.(!!this.props.icon || this.hasIconAmongItems());\n }\n if (\n this.contentRef.current &&\n this.menuItemsAtAnyLevel &&\n prevProps.isNotSelectable !== this.props.isNotSelectable\n ) {\n if (this.props.isNotSelectable) {\n this.unhighlight();\n this.context.navigation?.remove(this.contentRef.current);\n } else {\n this.context.navigation?.add(this.contentRef.current, this);\n }\n }\n }\n\n public highlight = () => {\n this.setState({ highlighted: true });\n };\n\n public unhighlight = () => {\n this.setState({ highlighted: false });\n };\n\n public select = (event: React.SyntheticEvent<HTMLElement>) => {\n this.handleClick(event as React.MouseEvent<HTMLElement>);\n };\n\n public isEnabled = () => {\n return !this.props.disabled;\n };\n\n public navigate = () => {\n if (!this.props.href) {\n return;\n }\n if (this.props.target) {\n window.open(this.props.href, this.props.target);\n } else {\n location.href = this.props.href;\n }\n };\n\n private getRootSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.iconLarge(this.theme);\n case 'medium':\n return styles.iconMedium(this.theme);\n case 'small':\n default:\n return styles.iconSmall(this.theme);\n }\n }\n\n private getWithIconSizeClassName() {\n switch (this.props.size) {\n case 'large':\n return styles.withIconLarge(this.theme);\n case 'medium':\n return styles.withIconMedium(this.theme);\n case 'small':\n default:\n return styles.withIconSmall(this.theme);\n }\n }\n\n private renderMain = (props: CommonWrapperRestProps<MenuItemProps>) => {\n const {\n link,\n comment,\n icon,\n loose,\n state,\n size,\n _enableIconPadding,\n component,\n onMouseEnter,\n onMouseLeave,\n isMobile,\n href,\n disabled,\n rel = this.props.href && isExternalLink(this.props.href) ? 'noopener noreferrer' : this.props.rel,\n isNotSelectable,\n ...rest\n } = props;\n\n const hover = (this.state.highlighted || state === 'hover') && !disabled;\n\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={cx({\n [styles.icon(this.theme)]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = cx({\n [styles.root(this.theme)]: true,\n [this.getRootSizeClassName()]: true,\n [styles.rootMobile(this.theme)]: isMobile,\n [styles.loose()]: !!loose,\n [styles.hover(this.theme)]: hover,\n [styles.selected(this.theme)]: state === 'selected' && !this.state.highlighted,\n [styles.link(this.theme)]: !!link,\n [this.getWithIconSizeClassName()]: Boolean(iconElement) || !!_enableIconPadding || this.context.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 ref={this.setRootRef}\n data-tid={MenuItemDataTids.root}\n {...rest}\n disabled={disabled}\n state={this.state.highlighted ? 'hover' : state}\n onMouseOver={this.handleMouseEnterFix}\n onMouseLeave={this.handleMouseLeave}\n onClick={this.handleClick}\n className={className}\n href={href}\n rel={href ? rel : undefined}\n tabIndex={-1}\n >\n {iconElement}\n <span\n className={cx({\n [styles.mobileContentWithIcon()]: isMobile && isNonNullable(icon),\n })}\n ref={this.contentRef}\n data-tid={MenuItemDataTids.content}\n >\n {content}\n </span>\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) {\n this.mouseEntered = true;\n this.props.onMouseEnter?.(e);\n this.menuItemsAtAnyLevel && !this.props.isNotSelectable && this.context.navigation?.highlight(this);\n }\n };\n\n private handleMouseLeave = (e: React.MouseEvent<HTMLElement>) => {\n this.mouseEntered = false;\n this.props.onMouseLeave?.(e);\n this.menuItemsAtAnyLevel && !this.props.isNotSelectable && this.context.navigation?.unhighlight();\n };\n\n private handleClick = (e: React.MouseEvent<HTMLElement>) => {\n if (this.props.isNotSelectable) {\n return;\n }\n this.props.onClick?.(e);\n if (this.menuItemsAtAnyLevel) {\n this.context.onItemClick?.(e);\n }\n };\n\n private setRootRef = (element: HTMLElement) => {\n this.rootRef = element;\n };\n\n private getComponent = () => {\n const { disabled, component, href } = this.props;\n\n if (component) {\n return component;\n }\n\n if (disabled) {\n return 'button';\n }\n\n if (href) {\n return 'a';\n }\n\n return 'button';\n };\n\n private hasIconAmongItems = () => {\n return Boolean(this.context.navigation?.items.some((item) => item.props.icon));\n };\n}\n\nexport const isMenuItem = isReactUIComponent('MenuItem');\n"]}
@@ -98,6 +98,7 @@ export declare const MenuItemDataTids: {
98
98
  */
99
99
  export declare class MenuItem extends React.Component<MenuItemProps> {
100
100
  static __KONTUR_REACT_UI__: string;
101
+ static displayName: string;
101
102
  static __MENU_ITEM__: boolean;
102
103
  static propTypes: {
103
104
  comment: PropTypes.Requireable<PropTypes.ReactNodeLike>;