@skbkontur/react-ui 0.0.0-95a1dbe516 → 0.0.0-9ab4f802f3

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 (647) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/README.md +41 -13
  3. package/cjs/components/Autocomplete/Autocomplete.js +12 -6
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Autocomplete/Autocomplete.md +76 -3
  6. package/cjs/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
  7. package/cjs/components/Autocomplete/Autocomplete.styles.js +7 -1
  8. package/cjs/components/Autocomplete/Autocomplete.styles.js.map +1 -1
  9. package/cjs/components/Button/Button.js +2 -2
  10. package/cjs/components/Button/Button.js.map +1 -1
  11. package/cjs/components/Button/Button.md +38 -11
  12. package/cjs/components/Calendar/Calendar.d.ts +28 -5
  13. package/cjs/components/Calendar/Calendar.js +80 -36
  14. package/cjs/components/Calendar/Calendar.js.map +1 -1
  15. package/cjs/components/Calendar/Calendar.md +82 -1
  16. package/cjs/components/Calendar/Calendar.styles.js +1 -1
  17. package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
  18. package/cjs/components/Calendar/CalendarContext.d.ts +12 -0
  19. package/cjs/components/Calendar/CalendarContext.js +16 -0
  20. package/cjs/components/Calendar/CalendarContext.js.map +1 -0
  21. package/cjs/components/Calendar/CalendarDateShape.d.ts +4 -2
  22. package/cjs/components/Calendar/CalendarDateShape.js +13 -3
  23. package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
  24. package/cjs/components/Calendar/CalendarDay.d.ts +12 -0
  25. package/cjs/components/Calendar/CalendarDay.js +79 -0
  26. package/cjs/components/Calendar/CalendarDay.js.map +1 -0
  27. package/cjs/components/Calendar/CalendarDay.md +70 -0
  28. package/cjs/components/Calendar/CalendarUtils.d.ts +2 -1
  29. package/cjs/components/Calendar/CalendarUtils.js +4 -6
  30. package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
  31. package/cjs/components/Calendar/DayCellView.d.ts +4 -12
  32. package/cjs/components/Calendar/DayCellView.js +20 -42
  33. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  34. package/cjs/components/Calendar/DayCellView.styles.d.ts +2 -5
  35. package/cjs/components/Calendar/DayCellView.styles.js +37 -43
  36. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  37. package/cjs/components/Calendar/Month.d.ts +0 -10
  38. package/cjs/components/Calendar/Month.js +36 -88
  39. package/cjs/components/Calendar/Month.js.map +1 -1
  40. package/cjs/components/Calendar/MonthView.d.ts +3 -2
  41. package/cjs/components/Calendar/MonthView.js +47 -37
  42. package/cjs/components/Calendar/MonthView.js.map +1 -1
  43. package/cjs/components/Calendar/MonthView.styles.d.ts +3 -0
  44. package/cjs/components/Calendar/MonthView.styles.js +45 -7
  45. package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
  46. package/cjs/components/Calendar/MonthViewModel.js +24 -6
  47. package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
  48. package/cjs/components/Calendar/config.js +12 -6
  49. package/cjs/components/Calendar/config.js.map +1 -1
  50. package/cjs/components/Calendar/index.d.ts +1 -0
  51. package/cjs/components/Calendar/index.js +2 -1
  52. package/cjs/components/Calendar/index.js.map +1 -1
  53. package/cjs/components/Checkbox/Checkbox.js +1 -1
  54. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  55. package/cjs/components/DateInput/DateFragmentsView.js +1 -1
  56. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  57. package/cjs/components/DateInput/DateInput.js +1 -1
  58. package/cjs/components/DateInput/DateInput.js.map +1 -1
  59. package/cjs/components/DatePicker/DatePicker.d.ts +4 -1
  60. package/cjs/components/DatePicker/DatePicker.js +72 -45
  61. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  62. package/cjs/components/DatePicker/DatePicker.md +29 -1
  63. package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
  64. package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
  65. package/cjs/components/DatePicker/MobilePicker.d.ts +10 -0
  66. package/cjs/components/DatePicker/MobilePicker.js +118 -0
  67. package/cjs/components/DatePicker/MobilePicker.js.map +1 -0
  68. package/cjs/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  69. package/cjs/components/DatePicker/MobilePicker.styles.js +8 -0
  70. package/cjs/components/DatePicker/MobilePicker.styles.js.map +1 -0
  71. package/cjs/components/DatePicker/Picker.js +1 -1
  72. package/cjs/components/DatePicker/Picker.js.map +1 -1
  73. package/cjs/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  74. package/cjs/components/DatePicker/getMobilePickerTheme.js +19 -0
  75. package/cjs/components/DatePicker/getMobilePickerTheme.js.map +1 -0
  76. package/cjs/components/Dropdown/Dropdown.js +1 -1
  77. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  78. package/cjs/components/DropdownMenu/DropdownMenu.js +1 -1
  79. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  80. package/cjs/components/DropdownMenu/DropdownMenu.md +39 -0
  81. package/cjs/components/FileUploader/FileUploader.d.ts +2 -0
  82. package/cjs/components/FileUploader/FileUploader.js +32 -9
  83. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  84. package/cjs/components/FileUploader/FileUploader.md +29 -0
  85. package/cjs/components/FxInput/FxInput.js +1 -1
  86. package/cjs/components/FxInput/FxInput.js.map +1 -1
  87. package/cjs/components/Group/Group.js +1 -1
  88. package/cjs/components/Group/Group.js.map +1 -1
  89. package/cjs/components/Hint/Hint.d.ts +4 -3
  90. package/cjs/components/Hint/Hint.js +9 -8
  91. package/cjs/components/Hint/Hint.js.map +1 -1
  92. package/cjs/components/Input/Input.js +1 -1
  93. package/cjs/components/Input/Input.js.map +1 -1
  94. package/cjs/components/Input/Input.styles.d.ts +1 -1
  95. package/cjs/components/Input/Input.styles.js +3 -2
  96. package/cjs/components/Input/Input.styles.js.map +1 -1
  97. package/cjs/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
  98. package/cjs/components/Input/InputLayout/InputLayout.styles.js +3 -2
  99. package/cjs/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  100. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +1 -1
  101. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  102. package/cjs/components/Kebab/Kebab.js +6 -1
  103. package/cjs/components/Kebab/Kebab.js.map +1 -1
  104. package/cjs/components/Link/Link.js +3 -2
  105. package/cjs/components/Link/Link.js.map +1 -1
  106. package/cjs/components/Loader/Loader.js +1 -1
  107. package/cjs/components/Loader/Loader.js.map +1 -1
  108. package/cjs/components/MenuItem/MenuItem.js +2 -2
  109. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  110. package/cjs/components/MiniModal/MiniModal.js +1 -1
  111. package/cjs/components/MiniModal/MiniModal.js.map +1 -1
  112. package/cjs/components/Modal/Modal.js +1 -1
  113. package/cjs/components/Modal/Modal.js.map +1 -1
  114. package/cjs/components/Modal/ModalBody.js +1 -1
  115. package/cjs/components/Modal/ModalBody.js.map +1 -1
  116. package/cjs/components/Paging/Paging.js +8 -3
  117. package/cjs/components/Paging/Paging.js.map +1 -1
  118. package/cjs/components/PasswordInput/PasswordInput.js +1 -1
  119. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  120. package/cjs/components/Radio/Radio.js +1 -1
  121. package/cjs/components/Radio/Radio.js.map +1 -1
  122. package/cjs/components/RadioGroup/RadioGroup.js +10 -1
  123. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  124. package/cjs/components/ScrollContainer/ScrollBar.js +1 -1
  125. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  126. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  127. package/cjs/components/ScrollContainer/ScrollContainer.js +6 -0
  128. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  129. package/cjs/components/Select/Select.js +6 -3
  130. package/cjs/components/Select/Select.js.map +1 -1
  131. package/cjs/components/SidePage/SidePage.js +1 -1
  132. package/cjs/components/SidePage/SidePage.js.map +1 -1
  133. package/cjs/components/SidePage/SidePageBody.js +1 -1
  134. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  135. package/cjs/components/SidePage/SidePageContainer.js +1 -1
  136. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  137. package/cjs/components/SidePage/SidePageFooter.js +1 -1
  138. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  139. package/cjs/components/SidePage/SidePageHeader.js +1 -1
  140. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  141. package/cjs/components/Spinner/Spinner.js +1 -1
  142. package/cjs/components/Spinner/Spinner.js.map +1 -1
  143. package/cjs/components/Switcher/Switcher.js +1 -1
  144. package/cjs/components/Switcher/Switcher.js.map +1 -1
  145. package/cjs/components/Tabs/Indicator.js +1 -1
  146. package/cjs/components/Tabs/Indicator.js.map +1 -1
  147. package/cjs/components/Tabs/Tab.js +2 -2
  148. package/cjs/components/Tabs/Tab.js.map +1 -1
  149. package/cjs/components/Tabs/Tabs.js +1 -1
  150. package/cjs/components/Tabs/Tabs.js.map +1 -1
  151. package/cjs/components/Textarea/Textarea.js +1 -1
  152. package/cjs/components/Textarea/Textarea.js.map +1 -1
  153. package/cjs/components/Toast/Toast.js +1 -1
  154. package/cjs/components/Toast/Toast.js.map +1 -1
  155. package/cjs/components/Toast/ToastView.js +1 -1
  156. package/cjs/components/Toast/ToastView.js.map +1 -1
  157. package/cjs/components/Toggle/Toggle.js +1 -1
  158. package/cjs/components/Toggle/Toggle.js.map +1 -1
  159. package/cjs/components/Token/Token.js +2 -1
  160. package/cjs/components/Token/Token.js.map +1 -1
  161. package/cjs/components/TokenInput/TokenInput.js +1 -1
  162. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  163. package/cjs/components/TokenInput/TokenInputMenu.js +2 -2
  164. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  165. package/cjs/components/Tooltip/Tooltip.d.ts +10 -5
  166. package/cjs/components/Tooltip/Tooltip.js +59 -20
  167. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  168. package/cjs/components/TooltipMenu/TooltipMenu.js +4 -4
  169. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  170. package/cjs/hooks/useDrop.d.ts +1 -1
  171. package/cjs/hooks/useDrop.js.map +1 -1
  172. package/cjs/index.d.ts +2 -0
  173. package/cjs/index.js +2 -0
  174. package/cjs/index.js.map +1 -1
  175. package/cjs/internal/CommonWrapper/CommonWrapper.js +2 -2
  176. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  177. package/cjs/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
  178. package/cjs/internal/CommonWrapper/utils/extractCommonProps.js.map +1 -0
  179. package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.js → utils/getCommonVisualStateDataAttributes.js} +3 -4
  180. package/cjs/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes.js.map +1 -0
  181. package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
  182. package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.js → utils/getVisualStateDataAttributes.js} +3 -3
  183. package/cjs/internal/CommonWrapper/utils/getVisualStateDataAttributes.js.map +1 -0
  184. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
  185. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js +1 -0
  186. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js.map +1 -0
  187. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -3
  188. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  189. package/cjs/internal/CustomComboBox/ComboBoxView.js +3 -1
  190. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  191. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
  192. package/cjs/internal/DateSelect/DateSelect.js +51 -4
  193. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  194. package/cjs/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  195. package/cjs/internal/DateSelect/DateSelect.styles.js +15 -1
  196. package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
  197. package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
  198. package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
  199. package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
  200. package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
  201. package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
  202. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
  203. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +16 -3
  204. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
  205. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
  206. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +4 -2
  207. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  208. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  209. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +3 -2
  210. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  211. package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
  212. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  213. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js +1 -1
  214. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  215. package/cjs/internal/InternalMenu/InternalMenu.js +2 -2
  216. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  217. package/cjs/internal/Menu/Menu.js +2 -2
  218. package/cjs/internal/Menu/Menu.js.map +1 -1
  219. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  220. package/cjs/internal/MobilePopup/MobilePopup.js +7 -1
  221. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  222. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  223. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +32 -0
  224. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  225. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  226. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +15 -0
  227. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -0
  228. package/cjs/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  229. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js +1 -0
  230. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -0
  231. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +1 -1
  232. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  233. package/cjs/internal/NativeDateInput/utils.js +3 -2
  234. package/cjs/internal/NativeDateInput/utils.js.map +1 -1
  235. package/cjs/internal/Popup/Popup.d.ts +15 -4
  236. package/cjs/internal/Popup/Popup.js +67 -4
  237. package/cjs/internal/Popup/Popup.js.map +1 -1
  238. package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
  239. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  240. package/cjs/internal/RenderContainer/RenderContainer.d.ts +3 -0
  241. package/cjs/internal/RenderContainer/RenderContainer.js +34 -24
  242. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  243. package/cjs/internal/RenderContainer/RenderInnerContainer.js +8 -4
  244. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  245. package/cjs/internal/RenderLayer/RenderLayer.js +5 -1
  246. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  247. package/cjs/internal/ThemePlayground/Playground.js +1 -1
  248. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  249. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +9 -6
  250. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  251. package/cjs/internal/ThemePlayground/constants.js +2 -1
  252. package/cjs/internal/ThemePlayground/constants.js.map +1 -1
  253. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +1 -1
  254. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  255. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  256. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -3
  257. package/cjs/internal/ZIndex/ZIndex.js +41 -3
  258. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  259. package/cjs/internal/themes/DarkTheme.d.ts +2 -0
  260. package/cjs/internal/themes/DarkTheme.js +6 -1
  261. package/cjs/internal/themes/DarkTheme.js.map +1 -1
  262. package/cjs/internal/themes/DefaultTheme.d.ts +18 -0
  263. package/cjs/internal/themes/DefaultTheme.js +32 -4
  264. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  265. package/cjs/lib/date/InternalDate.d.ts +2 -0
  266. package/cjs/lib/date/InternalDate.js +8 -1
  267. package/cjs/lib/date/InternalDate.js.map +1 -1
  268. package/cjs/lib/date/InternalDateTransformer.d.ts +3 -0
  269. package/cjs/lib/date/InternalDateTransformer.js +23 -0
  270. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  271. package/cjs/lib/date/InternalDateValidator.js +2 -1
  272. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  273. package/cjs/lib/date/comparison.d.ts +6 -0
  274. package/cjs/lib/date/comparison.js +44 -0
  275. package/cjs/lib/date/comparison.js.map +1 -0
  276. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
  277. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  278. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  279. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
  280. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  281. package/cjs/lib/listenFocusOutside.js +4 -2
  282. package/cjs/lib/listenFocusOutside.js.map +1 -1
  283. package/cjs/lib/locale/constants.d.ts +3 -0
  284. package/cjs/lib/locale/constants.js +6 -2
  285. package/cjs/lib/locale/constants.js.map +1 -1
  286. package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
  287. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  288. package/cjs/lib/theming/Emotion.d.ts +7 -1
  289. package/cjs/lib/theming/Emotion.js +6 -3
  290. package/cjs/lib/theming/Emotion.js.map +1 -1
  291. package/cjs/lib/theming/ThemeContext.d.ts +0 -2
  292. package/cjs/lib/theming/ThemeContext.js +1 -3
  293. package/cjs/lib/theming/ThemeContext.js.map +1 -1
  294. package/cjs/lib/theming/ThemeContext.md +3 -1
  295. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
  296. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js +50 -0
  297. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js.map +1 -0
  298. package/cjs/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
  299. package/cjs/lib/theming/themes/Theme2022Update2024.js +75 -0
  300. package/cjs/lib/theming/themes/Theme2022Update2024.js.map +1 -0
  301. package/cjs/lib/widgets/StylesContainer.d.ts +13 -0
  302. package/cjs/lib/widgets/StylesContainer.js +70 -0
  303. package/cjs/lib/widgets/StylesContainer.js.map +1 -0
  304. package/cjs/lib/widgets/index.d.ts +1 -0
  305. package/cjs/lib/widgets/index.js +1 -0
  306. package/cjs/lib/widgets/index.js.map +1 -0
  307. package/components/Autocomplete/Autocomplete/Autocomplete.js +11 -5
  308. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  309. package/components/Autocomplete/Autocomplete.md +76 -3
  310. package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js +4 -1
  311. package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js.map +1 -1
  312. package/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
  313. package/components/Button/Button/Button.js +3 -3
  314. package/components/Button/Button/Button.js.map +1 -1
  315. package/components/Button/Button.md +38 -11
  316. package/components/Calendar/Calendar/Calendar.js +83 -66
  317. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  318. package/components/Calendar/Calendar.d.ts +28 -5
  319. package/components/Calendar/Calendar.md +82 -1
  320. package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
  321. package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
  322. package/components/Calendar/CalendarContext/CalendarContext.js +2 -0
  323. package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
  324. package/components/Calendar/CalendarContext/package.json +6 -0
  325. package/components/Calendar/CalendarContext.d.ts +12 -0
  326. package/components/Calendar/CalendarDateShape/CalendarDateShape.js +23 -1
  327. package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
  328. package/components/Calendar/CalendarDateShape.d.ts +4 -2
  329. package/components/Calendar/CalendarDay/CalendarDay.js +64 -0
  330. package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -0
  331. package/components/Calendar/CalendarDay/package.json +6 -0
  332. package/components/Calendar/CalendarDay.d.ts +12 -0
  333. package/components/Calendar/CalendarDay.md +70 -0
  334. package/components/Calendar/CalendarUtils/CalendarUtils.js +5 -4
  335. package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
  336. package/components/Calendar/CalendarUtils.d.ts +2 -1
  337. package/components/Calendar/DayCellView/DayCellView.js +33 -46
  338. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  339. package/components/Calendar/DayCellView.d.ts +4 -12
  340. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +10 -14
  341. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  342. package/components/Calendar/DayCellView.styles.d.ts +2 -5
  343. package/components/Calendar/Month/Month.js +50 -84
  344. package/components/Calendar/Month/Month.js.map +1 -1
  345. package/components/Calendar/Month.d.ts +0 -10
  346. package/components/Calendar/MonthView/MonthView.js +50 -45
  347. package/components/Calendar/MonthView/MonthView.js.map +1 -1
  348. package/components/Calendar/MonthView.d.ts +3 -2
  349. package/components/Calendar/MonthView.styles/MonthView.styles.js +20 -6
  350. package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
  351. package/components/Calendar/MonthView.styles.d.ts +3 -0
  352. package/components/Calendar/MonthViewModel/MonthViewModel.js +9 -6
  353. package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  354. package/components/Calendar/config/config.js +6 -4
  355. package/components/Calendar/config/config.js.map +1 -1
  356. package/components/Calendar/index/index.js +2 -1
  357. package/components/Calendar/index/index.js.map +1 -1
  358. package/components/Calendar/index.d.ts +1 -0
  359. package/components/Checkbox/Checkbox/Checkbox.js +2 -2
  360. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  361. package/components/DateInput/DateFragmentsView/DateFragmentsView.js +2 -2
  362. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  363. package/components/DateInput/DateInput/DateInput.js +2 -2
  364. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  365. package/components/DatePicker/DatePicker/DatePicker.js +62 -41
  366. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  367. package/components/DatePicker/DatePicker.d.ts +4 -1
  368. package/components/DatePicker/DatePicker.md +29 -1
  369. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
  370. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
  371. package/components/DatePicker/MobilePicker/MobilePicker.js +91 -0
  372. package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -0
  373. package/components/DatePicker/MobilePicker/package.json +6 -0
  374. package/components/DatePicker/MobilePicker.d.ts +10 -0
  375. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js +10 -0
  376. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js.map +1 -0
  377. package/components/DatePicker/MobilePicker.styles/package.json +6 -0
  378. package/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  379. package/components/DatePicker/Picker/Picker.js +3 -3
  380. package/components/DatePicker/Picker/Picker.js.map +1 -1
  381. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js +14 -0
  382. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js.map +1 -0
  383. package/components/DatePicker/getMobilePickerTheme/package.json +6 -0
  384. package/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  385. package/components/Dropdown/Dropdown/Dropdown.js +3 -3
  386. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  387. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -3
  388. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  389. package/components/DropdownMenu/DropdownMenu.md +39 -0
  390. package/components/FileUploader/FileUploader/FileUploader.js +30 -8
  391. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  392. package/components/FileUploader/FileUploader.d.ts +2 -0
  393. package/components/FileUploader/FileUploader.md +29 -0
  394. package/components/FxInput/FxInput/FxInput.js +2 -2
  395. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  396. package/components/Group/Group/Group.js +2 -2
  397. package/components/Group/Group/Group.js.map +1 -1
  398. package/components/Hint/Hint/Hint.js +53 -48
  399. package/components/Hint/Hint/Hint.js.map +1 -1
  400. package/components/Hint/Hint.d.ts +4 -3
  401. package/components/Input/Input/Input.js +3 -3
  402. package/components/Input/Input/Input.js.map +1 -1
  403. package/components/Input/Input.styles/Input.styles.js +2 -2
  404. package/components/Input/Input.styles/Input.styles.js.map +1 -1
  405. package/components/Input/Input.styles.d.ts +1 -1
  406. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js +2 -2
  407. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js.map +1 -1
  408. package/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
  409. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +1 -1
  410. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
  411. package/components/Kebab/Kebab/Kebab.js +7 -4
  412. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  413. package/components/Link/Link/Link.js +6 -3
  414. package/components/Link/Link/Link.js.map +1 -1
  415. package/components/Loader/Loader/Loader.js +2 -2
  416. package/components/Loader/Loader/Loader.js.map +1 -1
  417. package/components/MenuItem/MenuItem/MenuItem.js +3 -3
  418. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  419. package/components/MiniModal/MiniModal/MiniModal.js +2 -2
  420. package/components/MiniModal/MiniModal/MiniModal.js.map +1 -1
  421. package/components/Modal/Modal/Modal.js +3 -3
  422. package/components/Modal/Modal/Modal.js.map +1 -1
  423. package/components/Modal/ModalBody/ModalBody.js +3 -3
  424. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  425. package/components/Paging/Paging/Paging.js +10 -6
  426. package/components/Paging/Paging/Paging.js.map +1 -1
  427. package/components/PasswordInput/PasswordInput/PasswordInput.js +2 -2
  428. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  429. package/components/Radio/Radio/Radio.js +2 -2
  430. package/components/Radio/Radio/Radio.js.map +1 -1
  431. package/components/RadioGroup/RadioGroup/RadioGroup.js +8 -4
  432. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  433. package/components/ScrollContainer/ScrollBar/ScrollBar.js +2 -2
  434. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  435. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +5 -0
  436. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  437. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  438. package/components/Select/Select/Select.js +6 -5
  439. package/components/Select/Select/Select.js.map +1 -1
  440. package/components/SidePage/SidePage/SidePage.js +2 -2
  441. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  442. package/components/SidePage/SidePageBody/SidePageBody.js +2 -2
  443. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  444. package/components/SidePage/SidePageContainer/SidePageContainer.js +2 -2
  445. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  446. package/components/SidePage/SidePageFooter/SidePageFooter.js +2 -2
  447. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  448. package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -2
  449. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  450. package/components/Spinner/Spinner/Spinner.js +2 -2
  451. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  452. package/components/Switcher/Switcher/Switcher.js +3 -3
  453. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  454. package/components/Tabs/Indicator/Indicator.js +2 -2
  455. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  456. package/components/Tabs/Tab/Tab.js +3 -3
  457. package/components/Tabs/Tab/Tab.js.map +1 -1
  458. package/components/Tabs/Tabs/Tabs.js +2 -2
  459. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  460. package/components/Textarea/Textarea/Textarea.js +2 -2
  461. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  462. package/components/Toast/Toast/Toast.js +3 -3
  463. package/components/Toast/Toast/Toast.js.map +1 -1
  464. package/components/Toast/ToastView/ToastView.js +2 -2
  465. package/components/Toast/ToastView/ToastView.js.map +1 -1
  466. package/components/Toggle/Toggle/Toggle.js +2 -2
  467. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  468. package/components/Token/Token/Token.js +6 -3
  469. package/components/Token/Token/Token.js.map +1 -1
  470. package/components/TokenInput/TokenInput/TokenInput.js +2 -2
  471. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  472. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +3 -3
  473. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  474. package/components/Tooltip/Tooltip/Tooltip.js +67 -46
  475. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  476. package/components/Tooltip/Tooltip.d.ts +10 -5
  477. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +3 -3
  478. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  479. package/hooks/useDrop/useDrop.js.map +1 -1
  480. package/hooks/useDrop.d.ts +1 -1
  481. package/index.d.ts +2 -0
  482. package/index.js +2 -0
  483. package/index.js.map +1 -1
  484. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +2 -2
  485. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  486. package/internal/CommonWrapper/utils/extractCommonProps/extractCommonProps.js.map +1 -0
  487. package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/package.json +1 -1
  488. package/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
  489. package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/getCommonVisualStateDataAttributes.js +1 -5
  490. package/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +1 -0
  491. package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/package.json +1 -1
  492. package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/getVisualStateDataAttributes.js +3 -3
  493. package/internal/CommonWrapper/utils/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +1 -0
  494. package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/package.json +1 -1
  495. package/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
  496. package/internal/CommonWrapper/utils/tryGetBoolean/package.json +6 -0
  497. package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js +3 -0
  498. package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js.map +1 -0
  499. package/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
  500. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +3 -3
  501. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  502. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +5 -3
  503. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  504. package/internal/DateSelect/DateSelect/DateSelect.js +59 -6
  505. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  506. package/internal/DateSelect/DateSelect.d.ts +2 -0
  507. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +4 -1
  508. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
  509. package/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  510. package/internal/DateSelect/locale/locales/en/en.js +2 -1
  511. package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
  512. package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
  513. package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
  514. package/internal/DateSelect/locale/types.d.ts +1 -0
  515. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +12 -3
  516. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
  517. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
  518. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +4 -2
  519. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  520. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
  521. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -2
  522. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  523. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  524. package/internal/InputLikeText/InputLikeText/InputLikeText.js +3 -3
  525. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  526. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js +2 -2
  527. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  528. package/internal/InternalMenu/InternalMenu/InternalMenu.js +3 -3
  529. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  530. package/internal/Menu/Menu/Menu.js +3 -3
  531. package/internal/Menu/Menu/Menu.js.map +1 -1
  532. package/internal/MobilePopup/MobilePopup/MobilePopup.js +4 -3
  533. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  534. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  535. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +37 -0
  536. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  537. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/package.json +6 -0
  538. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  539. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -0
  540. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -0
  541. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/package.json +6 -0
  542. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  543. package/internal/MobilePopup/MobilePopupFooter/index/index.js +1 -0
  544. package/internal/MobilePopup/MobilePopupFooter/index/index.js.map +1 -0
  545. package/internal/MobilePopup/MobilePopupFooter/index/package.json +6 -0
  546. package/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  547. package/internal/MobilePopup/MobilePopupFooter/package.json +6 -0
  548. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +2 -2
  549. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  550. package/internal/NativeDateInput/utils/utils.js +2 -1
  551. package/internal/NativeDateInput/utils/utils.js.map +1 -1
  552. package/internal/Popup/Popup/Popup.js +53 -10
  553. package/internal/Popup/Popup/Popup.js.map +1 -1
  554. package/internal/Popup/Popup.d.ts +15 -4
  555. package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
  556. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  557. package/internal/RenderContainer/RenderContainer/RenderContainer.js +19 -12
  558. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  559. package/internal/RenderContainer/RenderContainer.d.ts +3 -0
  560. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +11 -5
  561. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  562. package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -2
  563. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  564. package/internal/ThemePlayground/Playground/Playground.js +2 -2
  565. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  566. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +10 -7
  567. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  568. package/internal/ThemePlayground/constants/constants.js +3 -0
  569. package/internal/ThemePlayground/constants/constants.js.map +1 -1
  570. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +2 -2
  571. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  572. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  573. package/internal/ZIndex/ZIndex/ZIndex.js +55 -7
  574. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  575. package/internal/ZIndex/ZIndex.d.ts +7 -3
  576. package/internal/themes/DarkTheme/DarkTheme.js +2 -0
  577. package/internal/themes/DarkTheme/DarkTheme.js.map +1 -1
  578. package/internal/themes/DarkTheme.d.ts +2 -0
  579. package/internal/themes/DefaultTheme/DefaultTheme.js +32 -1
  580. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  581. package/internal/themes/DefaultTheme.d.ts +18 -0
  582. package/lib/date/InternalDate/InternalDate.js +7 -1
  583. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  584. package/lib/date/InternalDate.d.ts +2 -0
  585. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +30 -0
  586. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  587. package/lib/date/InternalDateTransformer.d.ts +3 -0
  588. package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
  589. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  590. package/lib/date/comparison/comparison.js +45 -0
  591. package/lib/date/comparison/comparison.js.map +1 -0
  592. package/lib/date/comparison/package.json +6 -0
  593. package/lib/date/comparison.d.ts +6 -0
  594. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
  595. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  596. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
  597. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  598. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  599. package/lib/listenFocusOutside/listenFocusOutside.js +3 -2
  600. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  601. package/lib/locale/constants/constants.js +4 -1
  602. package/lib/locale/constants/constants.js.map +1 -1
  603. package/lib/locale/constants.d.ts +3 -0
  604. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
  605. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  606. package/lib/theming/Emotion/Emotion.js +12 -3
  607. package/lib/theming/Emotion/Emotion.js.map +1 -1
  608. package/lib/theming/Emotion.d.ts +7 -1
  609. package/lib/theming/ThemeContext/ThemeContext.js +0 -2
  610. package/lib/theming/ThemeContext/ThemeContext.js.map +1 -1
  611. package/lib/theming/ThemeContext.d.ts +0 -2
  612. package/lib/theming/ThemeContext.md +3 -1
  613. package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js +33 -0
  614. package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js.map +1 -0
  615. package/lib/theming/themes/Theme2022DarkUpdate2024/package.json +6 -0
  616. package/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
  617. package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js +50 -0
  618. package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js.map +1 -0
  619. package/lib/theming/themes/Theme2022Update2024/package.json +6 -0
  620. package/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
  621. package/lib/widgets/StylesContainer/StylesContainer.js +65 -0
  622. package/lib/widgets/StylesContainer/StylesContainer.js.map +1 -0
  623. package/lib/widgets/StylesContainer/package.json +6 -0
  624. package/lib/widgets/StylesContainer.d.ts +13 -0
  625. package/lib/widgets/index/index.js +1 -0
  626. package/lib/widgets/index/index.js.map +1 -0
  627. package/lib/widgets/index/package.json +6 -0
  628. package/lib/widgets/index.d.ts +1 -0
  629. package/lib/widgets/package.json +6 -0
  630. package/package.json +3 -2
  631. package/cjs/internal/CommonWrapper/extractCommonProps.js.map +0 -1
  632. package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js.map +0 -1
  633. package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js.map +0 -1
  634. package/cjs/lib/theming/StyleContainer.d.ts +0 -4
  635. package/cjs/lib/theming/StyleContainer.js +0 -21
  636. package/cjs/lib/theming/StyleContainer.js.map +0 -1
  637. package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js.map +0 -1
  638. package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +0 -1
  639. package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +0 -1
  640. package/lib/theming/StyleContainer/StyleContainer.js +0 -21
  641. package/lib/theming/StyleContainer/StyleContainer.js.map +0 -1
  642. package/lib/theming/StyleContainer/package.json +0 -6
  643. package/lib/theming/StyleContainer.d.ts +0 -4
  644. /package/cjs/internal/CommonWrapper/{extractCommonProps.js → utils/extractCommonProps.js} +0 -0
  645. /package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
  646. /package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/extractCommonProps.js +0 -0
  647. /package/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
@@ -18,7 +18,8 @@ import { ThemeFactory } from "../../../lib/theming/ThemeFactory";
18
18
  import { isDarkTheme, isTheme2022 } from "../../../lib/theming/ThemeHelpers";
19
19
  import { isIE11 } from "../../../lib/client";
20
20
  import { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
21
- import { ThemeConsumer } from "../../../lib/theming/ThemeContext";
21
+ import { getVisualStateDataAttributes } from "../../../internal/CommonWrapper/utils/getVisualStateDataAttributes";
22
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
22
23
  import { getStyles, globalClasses } from "../Link.styles";
23
24
  import { LinkIcon } from "../LinkIcon";
24
25
  export var LinkDataTids = {
@@ -112,7 +113,9 @@ var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Co
112
113
 
113
114
  return /*#__PURE__*/React.createElement(Component, _extends({
114
115
  "data-tid": LinkDataTids.root
115
- }, rest, linkProps), leftIconElement, child, rightIconElement, arrow);
116
+ }, rest, linkProps, getVisualStateDataAttributes({
117
+ disabled: disabled
118
+ })), leftIconElement, child, rightIconElement, arrow);
116
119
  };
117
120
 
118
121
  _this.handleFocus = function () {
@@ -164,7 +167,7 @@ var Link = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$Co
164
167
  _this2.linkFocusOutline = getFullReactUIFlagsContext(flags).linkFocusOutline;
165
168
  return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
166
169
  _this2.emotion = emotion;
167
- return /*#__PURE__*/React.createElement(ThemeConsumer, null, function (theme) {
170
+ return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
168
171
  _this2.theme = _this2.props.theme ? ThemeFactory.create(_this2.props.theme, theme) : theme;
169
172
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
170
173
  rootNodeRef: _this2.setRootNode
@@ -1 +1 @@
1
- {"version":3,"sources":["Link.tsx"],"names":["React","PropTypes","globalObject","keyListener","isExternalLink","CommonWrapper","EmotionConsumer","rootNode","createPropsGetter","ThemeFactory","isDarkTheme","isTheme2022","isIE11","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","ThemeConsumer","getStyles","globalClasses","LinkIcon","LinkDataTids","root","Link","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","rightIcon","use","loading","_button","_buttonOpened","relOrigin","rel","Component","as","focused","rest","_isTheme2022","theme","styles","emotion","arrow","isFocused","leftIconElement","rightIconElement","linkProps","className","cx","useRoot","useDefault","useSuccess","useDanger","useGrayed","button","buttonOpened","getLinkClassName","Boolean","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","tabIndex","child","children","textWrapper","lineTextWrapper","lineTextWrapperFocused","text","lineText","lineTextIE11","requestAnimationFrame","isTabPressed","setState","event","preventDefault","render","flags","linkFocusOutline","create","setRootNode","isBorderBottom","parseInt","linkLineBorderBottomWidth","focus","useGrayedFocus","lineRoot","disabledDark22Theme","lineFocus","lineFocusSuccess","lineFocusDanger","lineFocusGrayed","focus2022","__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';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { isExternalLink } from '../../lib/utils';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } 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';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { getStyles, globalClasses } from './Link.styles';\nimport { LinkIcon } from './LinkIcon';\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;\n /**\n * Добавляет ссылке иконку справа.\n */\n rightIcon?: React.ReactElement;\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 emotion!: Emotion;\n private setRootNode!: TSetRootNode;\n private linkFocusOutline?: boolean;\n\n public render(): JSX.Element {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.linkFocusOutline = getFullReactUIFlagsContext(flags).linkFocusOutline;\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\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 </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n href,\n icon,\n rightIcon,\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 const styles = getStyles(this.emotion);\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 leftIconElement = icon && <LinkIcon icon={icon} loading={loading} position=\"left\" />;\n const rightIconElement = rightIcon && (\n <LinkIcon hasBothIcons={!!icon && !!rightIcon} icon={rightIcon} loading={loading} position=\"right\" />\n );\n\n const linkProps = {\n className: this.emotion.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={this.emotion.cx(globalClasses.textWrapper, styles.lineTextWrapper(this.theme), {\n [styles.lineTextWrapperFocused(this.theme)]: isFocused,\n })}\n >\n <span\n className={this.emotion.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 {leftIconElement}\n {child}\n {rightIconElement}\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 const styles = getStyles(this.emotion);\n\n return !isBorderBottom\n ? this.emotion.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 : this.emotion.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 isFocused && _isTheme2022 && this.linkFocusOutline && styles.focus2022(this.theme),\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["Link.tsx"],"names":["React","PropTypes","globalObject","keyListener","isExternalLink","CommonWrapper","EmotionConsumer","rootNode","createPropsGetter","ThemeFactory","isDarkTheme","isTheme2022","isIE11","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","getVisualStateDataAttributes","ThemeContext","getStyles","globalClasses","LinkIcon","LinkDataTids","root","Link","getProps","defaultProps","state","focusedByTab","renderMain","props","disabled","href","icon","rightIcon","use","loading","_button","_buttonOpened","relOrigin","rel","Component","as","focused","rest","_isTheme2022","theme","styles","emotion","arrow","isFocused","leftIconElement","rightIconElement","linkProps","className","cx","useRoot","useDefault","useSuccess","useDanger","useGrayed","button","buttonOpened","getLinkClassName","Boolean","onClick","handleClick","onFocus","handleFocus","onBlur","handleBlur","tabIndex","child","children","textWrapper","lineTextWrapper","lineTextWrapperFocused","text","lineText","lineTextIE11","requestAnimationFrame","isTabPressed","setState","event","preventDefault","render","flags","linkFocusOutline","create","setRootNode","isBorderBottom","parseInt","linkLineBorderBottomWidth","focus","useGrayedFocus","lineRoot","disabledDark22Theme","lineFocus","lineFocusSuccess","lineFocusDanger","lineFocusGrayed","focus2022","__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';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { Override } from '../../typings/utility-types';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { Theme, ThemeIn } from '../../lib/theming/Theme';\nimport { isExternalLink } from '../../lib/utils';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } 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';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { getStyles, globalClasses } from './Link.styles';\nimport { LinkIcon } from './LinkIcon';\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;\n /**\n * Добавляет ссылке иконку справа.\n */\n rightIcon?: React.ReactElement;\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 emotion!: Emotion;\n private setRootNode!: TSetRootNode;\n private linkFocusOutline?: boolean;\n\n public render(): JSX.Element {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.linkFocusOutline = getFullReactUIFlagsContext(flags).linkFocusOutline;\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\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 </EmotionConsumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private renderMain = (props: CommonWrapperRestProps<DefaultizedLinkProps>) => {\n const {\n disabled,\n href,\n icon,\n rightIcon,\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 const styles = getStyles(this.emotion);\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 leftIconElement = icon && <LinkIcon icon={icon} loading={loading} position=\"left\" />;\n const rightIconElement = rightIcon && (\n <LinkIcon hasBothIcons={!!icon && !!rightIcon} icon={rightIcon} loading={loading} position=\"right\" />\n );\n\n const linkProps = {\n className: this.emotion.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={this.emotion.cx(globalClasses.textWrapper, styles.lineTextWrapper(this.theme), {\n [styles.lineTextWrapperFocused(this.theme)]: isFocused,\n })}\n >\n <span\n className={this.emotion.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} {...getVisualStateDataAttributes({ disabled })}>\n {leftIconElement}\n {child}\n {rightIconElement}\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 const styles = getStyles(this.emotion);\n\n return !isBorderBottom\n ? this.emotion.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 : this.emotion.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 isFocused && _isTheme2022 && this.linkFocusOutline && styles.focus2022(this.theme),\n );\n }\n}\n"]}
@@ -18,7 +18,7 @@ import { getTabbableElements } from "../../../lib/dom/tabbableHelpers";
18
18
  import { rootNode } from "../../../lib/rootNode";
19
19
  import { getDOMRect } from "../../../lib/dom/getDOMRect";
20
20
  import { createPropsGetter } from "../../../lib/createPropsGetter";
21
- import { ThemeConsumer } from "../../../lib/theming/ThemeContext";
21
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
22
22
  import { getStyles } from "../Loader.styles";
23
23
  var types = ['mini', 'normal', 'big'];
24
24
  export var LoaderDataTids = {
@@ -276,7 +276,7 @@ var Loader = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$
276
276
 
277
277
  return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
278
278
  _this2.emotion = emotion;
279
- return /*#__PURE__*/React.createElement(ThemeConsumer, null, function (theme) {
279
+ return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
280
280
  _this2.theme = theme;
281
281
  return _this2.renderMain();
282
282
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["Loader.tsx"],"names":["React","PropTypes","debounce","globalObject","isBrowser","LayoutEvents","Spinner","ZIndex","CommonWrapper","EmotionConsumer","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","createPropsGetter","ThemeConsumer","getStyles","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","emotion","theme","renderMain","caption","type","styles","setRootNode","loader","children","cx","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';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { AnyObject } from '../../lib/utils';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } 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';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { getStyles } 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 emotion!: Emotion;\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 <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private renderMain() {\n const { caption, component } = this.props;\n const type = this.getProps().type;\n const { isLoaderActive } = this.state;\n const styles = getStyles(this.emotion);\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={this.emotion.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 const styles = getStyles(this.emotion);\n\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={this.emotion.cx(styles.spinnerContainer(), {\n [styles.spinnerContainerSticky()]: this.state.isStickySpinner,\n })}\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","ZIndex","CommonWrapper","EmotionConsumer","isTestEnv","TaskWithDelayAndMinimalDuration","getTabbableElements","rootNode","getDOMRect","createPropsGetter","ThemeContext","getStyles","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","emotion","theme","renderMain","caption","type","styles","setRootNode","loader","children","cx","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';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { AnyObject } from '../../lib/utils';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Spinner, SpinnerProps } from '../Spinner';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } 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';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { getStyles } 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 emotion!: Emotion;\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 <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private renderMain() {\n const { caption, component } = this.props;\n const type = this.getProps().type;\n const { isLoaderActive } = this.state;\n const styles = getStyles(this.emotion);\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={this.emotion.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 const styles = getStyles(this.emotion);\n\n return (\n <span\n data-tid={LoaderDataTids.spinner}\n className={this.emotion.cx(styles.spinnerContainer(), {\n [styles.spinnerContainerSticky()]: this.state.isStickySpinner,\n })}\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"]}
@@ -19,8 +19,8 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
19
19
  import { rootNode } from "../../../lib/rootNode";
20
20
  import { MenuContext } from "../../../internal/Menu/MenuContext";
21
21
  import { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
22
- import { getVisualStateDataAttributes } from "../../../internal/CommonWrapper/getVisualStateDataAttributes";
23
- import { ThemeConsumer } from "../../../lib/theming/ThemeContext";
22
+ import { getVisualStateDataAttributes } from "../../../internal/CommonWrapper/utils/getVisualStateDataAttributes";
23
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
24
24
  import { getStyles } from "../MenuItem.styles";
25
25
  /**
26
26
  * @deprecated use SizeProp
@@ -233,7 +233,7 @@ export var MenuItem = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
233
233
  _this2.menuItemsAtAnyLevel = getFullReactUIFlagsContext(flags).menuItemsAtAnyLevel;
234
234
  return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
235
235
  _this2.emotion = emotion;
236
- return /*#__PURE__*/React.createElement(ThemeConsumer, null, function (theme) {
236
+ return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
237
237
  _this2.theme = theme;
238
238
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
239
239
  rootNodeRef: _this2.setRootNode
@@ -1 +1 @@
1
- {"version":3,"sources":["MenuItem.tsx"],"names":["React","PropTypes","globalObject","isBrowser","EmotionConsumer","isExternalLink","isFunction","isNonNullable","isReactUIComponent","CommonWrapper","rootNode","MenuContext","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","getVisualStateDataAttributes","ThemeConsumer","getStyles","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","styles","emotion","iconElement","top","cx","theme","getIconSizeClassName","className","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","children","Component","getComponent","setRootRef","activeState","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';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\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';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/getVisualStateDataAttributes';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { getStyles } 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 emotion!: Emotion;\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 <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\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 const styles = getStyles(this.emotion);\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 const styles = getStyles(this.emotion);\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 const styles = getStyles(this.emotion);\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 styles = getStyles(this.emotion);\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={this.emotion.cx({\n [styles.icon(this.theme)]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = this.emotion.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)]: this.isHover,\n [styles.selected(this.theme)]: this.isSelected,\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.activeState}\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={this.emotion.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={this.emotion.cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\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","EmotionConsumer","isExternalLink","isFunction","isNonNullable","isReactUIComponent","CommonWrapper","rootNode","MenuContext","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","getVisualStateDataAttributes","ThemeContext","getStyles","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","styles","emotion","iconElement","top","cx","theme","getIconSizeClassName","className","getRootSizeClassName","rootMobile","hover","isHover","selected","isSelected","getWithIconSizeClassName","Boolean","context","enableIconPadding","children","Component","getComponent","setRootRef","activeState","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":"2lBAAA;AACA;AACA,OAAOA,KAAP,MAAsC,OAAtC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,YAAT,EAAuBC,SAAvB,QAAwC,0BAAxC;;;AAGA,SAASC,eAAT,QAAgC,2BAAhC;;AAEA,SAASC,cAAT,EAAyBC,UAAzB,EAAqCC,aAArC,EAAoDC,kBAApD,QAA8E,iBAA9E;;AAEA,SAAsBC,aAAtB,QAAmE,8BAAnE;AACA,SAASC,QAAT,QAAuC,oBAAvC;;AAEA,SAASC,WAAT,QAA6C,iCAA7C;AACA,SAASC,0BAAT,EAAqCC,0BAArC,QAAuE,+BAAvE;AACA,SAASC,4BAAT,QAA6C,iEAA7C;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,SAAT,QAA0B,mBAA1B;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsFA,OAAO,IAAMC,gBAAgB,GAAG;AAC9BC,EAAAA,IAAI,EAAE,gBADwB;AAE9BC,EAAAA,OAAO,EAAE,mBAFqB;AAG9BC,EAAAA,OAAO,EAAE,mBAHqB,EAAzB;;;AAMP;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAaC,QAAb,GADCX,QACD;;;;;;;;;;;;;;;;;;;;;;;;;AAyBSY,IAAAA,KAzBT,GAyBiB;AACbC,MAAAA,aAAa,EAAE,CADF;AAEbC,MAAAA,WAAW,EAAE,KAFA,EAzBjB;;;;;AAgCUC,IAAAA,YAhCV,GAgCyB,KAhCzB;;AAkCUC,IAAAA,OAlCV,GAkC2C,IAlC3C;AAmCUC,IAAAA,UAnCV,gBAmCuB3B,KAAK,CAAC4B,SAAN,EAnCvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkHSC,IAAAA,SAlHT,GAkHqB,YAAM;AACvB,YAAKC,QAAL,CAAc,EAAEN,WAAW,EAAE,IAAf,EAAd;AACD,KApHH;;AAsHSO,IAAAA,WAtHT,GAsHuB,YAAM;AACzB,YAAKD,QAAL,CAAc,EAAEN,WAAW,EAAE,KAAf,EAAd;AACD,KAxHH;;AA0HSQ,IAAAA,MA1HT,GA0HkB,UAACC,KAAD,EAA8C;AAC5D,YAAKC,WAAL,CAAiBD,KAAjB;AACD,KA5HH;;AA8HSE,IAAAA,SA9HT,GA8HqB,YAAM;AACvB,aAAO,CAAC,MAAKC,KAAL,CAAWC,QAAnB;AACD,KAhIH;;AAkISC,IAAAA,QAlIT,GAkIoB,YAAM;AACtB,UAAI,CAAC,MAAKF,KAAL,CAAWG,IAAhB,EAAsB;AACpB;AACD;AACD,UAAI,MAAKH,KAAL,CAAWI,MAAf,EAAuB;AACrBC,QAAAA,MAAM,CAACC,IAAP,CAAY,MAAKN,KAAL,CAAWG,IAAvB,EAA6B,MAAKH,KAAL,CAAWI,MAAxC;AACD,OAFD,MAEO;AACLG,QAAAA,QAAQ,CAACJ,IAAT,GAAgB,MAAKH,KAAL,CAAWG,IAA3B;AACD;AACF,KA3IH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoLUK,IAAAA,UApLV,GAoLuB,UAACR,KAAD,EAAkD;AACrE;AACES,MAAAA,IADF;;;;;;;;;;;;;;;;AAiBIT,MAAAA,KAjBJ,CACES,IADF,CAEEzB,OAFF,GAiBIgB,KAjBJ,CAEEhB,OAFF,CAGE0B,IAHF,GAiBIV,KAjBJ,CAGEU,IAHF,CAIEC,KAJF,GAiBIX,KAjBJ,CAIEW,KAJF,CAKEzB,KALF,GAiBIc,KAjBJ,CAKEd,KALF,CAME0B,IANF,GAiBIZ,KAjBJ,CAMEY,IANF,CAOEC,kBAPF,GAiBIb,KAjBJ,CAOEa,kBAPF,CAQEC,SARF,GAiBId,KAjBJ,CAQEc,SARF,CASEC,YATF,GAiBIf,KAjBJ,CASEe,YATF,CAUEC,YAVF,GAiBIhB,KAjBJ,CAUEgB,YAVF,CAWEC,QAXF,GAiBIjB,KAjBJ,CAWEiB,QAXF,CAYEd,IAZF,GAiBIH,KAjBJ,CAYEG,IAZF,CAaEF,QAbF,GAiBID,KAjBJ,CAaEC,QAbF,cAiBID,KAjBJ,CAcEkB,GAdF,CAcEA,GAdF,2BAcQ,MAAKlB,KAAL,CAAWG,IAAX,IAAmBlC,cAAc,CAAC,MAAK+B,KAAL,CAAWG,IAAZ,CAAjC,GAAqD,qBAArD,GAA6E,MAAKH,KAAL,CAAWkB,GAdhG,cAeEC,eAfF,GAiBInB,KAjBJ,CAeEmB,eAfF,CAgBKC,IAhBL,iCAiBIpB,KAjBJ;;AAmBA,UAAMqB,MAAM,GAAGzC,SAAS,CAAC,MAAK0C,OAAN,CAAxB;AACA,UAAIC,WAAW,GAAG,IAAlB;AACA,UAAIb,IAAJ,EAAU;AACRa,QAAAA,WAAW;AACT;AACE,UAAA,KAAK,EAAE,EAAEC,GAAG,EAAE,MAAKtC,KAAL,CAAWC,aAAlB,EADT;AAEE,UAAA,SAAS,EAAE,MAAKmC,OAAL,CAAaG,EAAb;AACRJ,UAAAA,MAAM,CAACX,IAAP,CAAY,MAAKgB,KAAjB,CADQ,IACkB,IADlB;AAER,gBAAKC,oBAAL,EAFQ,IAEsB,IAFtB,oBAFb;;;AAOGjB,QAAAA,IAPH,CADF;;;AAWD;;AAED,UAAMkB,SAAS,GAAG,MAAKN,OAAL,CAAaG,EAAb;AACfJ,MAAAA,MAAM,CAACvC,IAAP,CAAY,MAAK4C,KAAjB,CADe,IACW,IADX;AAEf,YAAKG,oBAAL,EAFe,IAEe,IAFf;AAGfR,MAAAA,MAAM,CAACS,UAAP,CAAkB,MAAKJ,KAAvB,CAHe,IAGiBT,QAHjB;AAIfI,MAAAA,MAAM,CAACV,KAAP,EAJe,IAIE,CAAC,CAACA,KAJJ;AAKfU,MAAAA,MAAM,CAACU,KAAP,CAAa,MAAKL,KAAlB,CALe,IAKY,MAAKM,OALjB;AAMfX,MAAAA,MAAM,CAACY,QAAP,CAAgB,MAAKP,KAArB,CANe,IAMe,MAAKQ,UANpB;AAOfb,MAAAA,MAAM,CAACZ,IAAP,CAAY,MAAKiB,KAAjB,CAPe,IAOW,CAAC,CAACjB,IAPb;AAQf,YAAK0B,wBAAL,EARe,IAQmBC,OAAO,CAACb,WAAD,CAAP,IAAwB,CAAC,CAACV,kBAA1B,IAAgD,MAAKwB,OAAL,CAAaC,iBARhF;AASfjB,MAAAA,MAAM,CAACpB,QAAP,CAAgB,MAAKyB,KAArB,CATe,IASe,CAAC,CAAC,MAAK1B,KAAL,CAAWC,QAT5B,qBAAlB;;;AAYA,UAAQsC,QAAR,GAAqB,MAAKvC,KAA1B,CAAQuC,QAAR;;AAEA,UAAIxD,OAAO,GAAGwD,QAAd;AACA,UAAIrE,UAAU,CAACqE,QAAD,CAAd,EAA0B;AACxBxD,QAAAA,OAAO,GAAGwD,QAAQ,CAAC,MAAKvC,KAAL,CAAWd,KAAZ,CAAlB;AACD;;AAED,UAAMsD,SAAS,GAAG,MAAKC,YAAL,EAAlB;;AAEA;AACE,4BAAC,SAAD;AACE,UAAA,GAAG,EAAE,MAAKC,UADZ;AAEE,sBAAU7D,gBAAgB,CAACC,IAF7B;AAGMsC,QAAAA,IAHN;AAIE,UAAA,QAAQ,EAAEnB,QAJZ;AAKE,UAAA,KAAK,EAAE,MAAK0C,WALd;AAME,UAAA,WAAW,EAAE,MAAKC,mBANpB;AAOE,UAAA,YAAY,EAAE,MAAKC,gBAPrB;AAQE,UAAA,OAAO,EAAE,MAAK/C,WARhB;AASE,UAAA,SAAS,EAAE8B,SATb;AAUE,UAAA,IAAI,EAAEzB,IAVR;AAWE,UAAA,GAAG,EAAEA,IAAI,GAAGe,GAAH,GAAS4B,SAXpB;AAYE,UAAA,QAAQ,EAAE,CAAC,CAZb;;AAcGvB,QAAAA,WAdH;AAeE;AACE,UAAA,SAAS,EAAE,MAAKD,OAAL,CAAaG,EAAb;AACRJ,UAAAA,MAAM,CAAC0B,qBAAP,EADQ,IACyB9B,QAAQ,IAAI9C,aAAa,CAACuC,IAAD,CADlD,qBADb;;AAIE,UAAA,GAAG,EAAE,MAAKnB,UAJZ;AAKE,sBAAUV,gBAAgB,CAACE,OAL7B;;AAOGA,QAAAA,OAPH,CAfF;;AAwBG,cAAKiB,KAAL,CAAWhB,OAAX;AACC;AACE,sBAAUH,gBAAgB,CAACG,OAD7B;AAEE,UAAA,SAAS,EAAE,MAAKsC,OAAL,CAAaG,EAAb;AACRJ,UAAAA,MAAM,CAACrC,OAAP,CAAe,MAAK0C,KAApB,CADQ,IACqB,IADrB;AAERL,UAAAA,MAAM,CAAC2B,YAAP,CAAoB,MAAKtB,KAAzB,CAFQ,IAE0B,MAAKM,OAF/B,qBAFb;;;AAOGhD,QAAAA,OAPH,CAzBJ,CADF;;;;;AAsCD,KAnRH;;;;;;;;;;;;;;;;AAmSU4D,IAAAA,mBAnSV,GAmSgC,UAACK,CAAD,EAAsC;AAClE,UAAI,CAAC,MAAK5D,YAAV,EAAwB;AACtB,cAAKA,YAAL,GAAoB,IAApB;AACA,cAAKW,KAAL,CAAWe,YAAX,0BAAKf,KAAL,CAAWe,YAAX,CAA0BkC,CAA1B;AACA,cAAKC,mBAAL,IAA4B,CAAC,MAAKlD,KAAL,CAAWmB,eAAxC,8BAA2D,MAAKkB,OAAL,CAAac,UAAxE,qBAA2D,sBAAyB1D,SAAzB,+BAA3D;AACD;AACF,KAzSH;;AA2SUoD,IAAAA,gBA3SV,GA2S6B,UAACI,CAAD,EAAsC;AAC/D,YAAK5D,YAAL,GAAoB,KAApB;AACA,YAAKW,KAAL,CAAWgB,YAAX,0BAAKhB,KAAL,CAAWgB,YAAX,CAA0BiC,CAA1B;AACA,YAAKC,mBAAL,IAA4B,CAAC,MAAKlD,KAAL,CAAWmB,eAAxC,+BAA2D,MAAKkB,OAAL,CAAac,UAAxE,qBAA2D,uBAAyBxD,WAAzB,EAA3D;AACD,KA/SH;;AAiTUG,IAAAA,WAjTV,GAiTwB,UAACmD,CAAD,EAAsC;AAC1D,UAAI,MAAKjD,KAAL,CAAWmB,eAAf,EAAgC;AAC9B;AACD;AACD,YAAKnB,KAAL,CAAWoD,OAAX,0BAAKpD,KAAL,CAAWoD,OAAX,CAAqBH,CAArB;AACA,UAAI,MAAKC,mBAAT,EAA8B;AAC5B,cAAKb,OAAL,CAAagB,WAAb,0BAAKhB,OAAL,CAAagB,WAAb,CAA2BJ,CAA3B;AACD;AACF,KAzTH;;AA2TUP,IAAAA,UA3TV,GA2TuB,UAACY,OAAD,EAA0B;AAC7C,YAAKhE,OAAL,GAAegE,OAAf;AACD,KA7TH;;AA+TUb,IAAAA,YA/TV,GA+TyB,YAAM;AAC3B,wBAAsC,MAAKzC,KAA3C,CAAQC,QAAR,eAAQA,QAAR,CAAkBa,SAAlB,eAAkBA,SAAlB,CAA6BX,IAA7B,eAA6BA,IAA7B;;AAEA,UAAIW,SAAJ,EAAe;AACb,eAAOA,SAAP;AACD;;AAED,UAAIb,QAAJ,EAAc;AACZ,eAAO,QAAP;AACD;;AAED,UAAIE,IAAJ,EAAU;AACR,eAAO,GAAP;AACD;;AAED,aAAO,QAAP;AACD,KA/UH;;AAiVUoD,IAAAA,iBAjVV,GAiV8B,YAAM;AAChC,aAAOnB,OAAO,2BAAC,MAAKC,OAAL,CAAac,UAAd,qBAAC,uBAAyBK,KAAzB,CAA+BC,IAA/B,CAAoC,UAACC,IAAD,UAAUA,IAAI,CAAC1D,KAAL,CAAWU,IAArB,EAApC,CAAD,CAAd;AACD,KAnVH,sDAyCSiD,MAzCT,GAyCE,kBAAgB,mBACd,oBACE,oBAAC,0BAAD,CAA4B,QAA5B,QACG,UAACC,KAAD,EAAW,CACV,MAAI,CAACV,mBAAL,GAA2B1E,0BAA0B,CAACoF,KAAD,CAA1B,CAAkCV,mBAA7D,CACA,oBACE,oBAAC,eAAD,QACG,UAAC5B,OAAD,EAAa,CACZ,MAAI,CAACA,OAAL,GAAeA,OAAf,CACA,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACI,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,oBAAC,aAAD,aACE,WAAW,EAAE,MAAI,CAACmC,WADpB,IAEMnF,4BAA4B,CAAC,EAC/BqD,KAAK,EAAE,MAAI,CAACC,OADmB,EAE/BC,QAAQ,EAAE,MAAI,CAACC,UAFgB,EAAD,CAFlC,EAMM,MAAI,CAAClC,KANX,GAQG,MAAI,CAACQ,UARR,CADF,CAYD,CAfH,CADF,CAmBD,CAtBH,CADF,CA0BD,CA7BH,CADF,CAiCD,CA3EH,QA6ESsD,iBA7ET,GA6EE,6BAA2B,CACzB,IAAI,KAAKxE,OAAL,IAAgBvB,SAAS,CAACD,YAAD,CAA7B,EAA6C,CAC3C,KAAK4B,QAAL,CAAc,EAAEP,aAAa,EAAErB,YAAY,CAACiG,gBAAb,CAA8B,KAAKzE,OAAnC,EAA4C0E,gBAA5C,CAA6D,aAA7D,CAAjB,EAAd,EACD,CACD,IAAI,KAAKzE,UAAL,CAAgB0E,OAAhB,IAA2B,KAAKf,mBAAhC,IAAuD,CAAC,KAAKlD,KAAL,CAAWmB,eAAvE,EAAwF,4BACtF,+BAAKkB,OAAL,CAAac,UAAb,4CAAyBe,GAAzB,CAA6B,KAAK3E,UAAL,CAAgB0E,OAA7C,EAAsD,IAAtD,EACD,CACD,IAAI,KAAKjE,KAAL,CAAWU,IAAX,IAAmB,KAAKwC,mBAA5B,EAAiD,0CAC/C,+CAAKb,OAAL,EAAa8B,oBAAb,+DAAoC,IAApC,EACD,CACF,CAvFH,QAyFSC,oBAzFT,GAyFE,gCAA8B,CAC5B,IAAI,KAAK7E,UAAL,CAAgB0E,OAAhB,IAA2B,KAAKf,mBAApC,EAAyD,oEACvD,CAAC,KAAKlD,KAAL,CAAWmB,eAAZ,+BAA+B,KAAKkB,OAAL,CAAac,UAA5C,qBAA+B,uBAAyBkB,MAAzB,CAAgC,KAAK9E,UAAL,CAAgB0E,OAAhD,CAA/B,EACA,iDAAK5B,OAAL,EAAa8B,oBAAb,iEAAoC,KAAKZ,iBAAL,EAApC,EACD,CACF,CA9FH,QAgGSe,kBAhGT,GAgGE,4BAA0BC,SAA1B,EAA8D,CAC5D,IAAIA,SAAS,CAAC7D,IAAV,KAAmB,KAAKV,KAAL,CAAWU,IAAlC,EAAwC,4CACtC,iDAAK2B,OAAL,EAAa8B,oBAAb,iEAAoC,CAAC,CAAC,KAAKnE,KAAL,CAAWU,IAAb,IAAqB,KAAK6C,iBAAL,EAAzD,EACD,CACD,IACE,KAAKhE,UAAL,CAAgB0E,OAAhB,IACA,KAAKf,mBADL,IAEAqB,SAAS,CAACpD,eAAV,KAA8B,KAAKnB,KAAL,CAAWmB,eAH3C,EAIE,CACA,IAAI,KAAKnB,KAAL,CAAWmB,eAAf,EAAgC,4BAC9B,KAAKxB,WAAL,GACA,+BAAK0C,OAAL,CAAac,UAAb,4CAAyBkB,MAAzB,CAAgC,KAAK9E,UAAL,CAAgB0E,OAAhD,EACD,CAHD,MAGO,4BACL,+BAAK5B,OAAL,CAAac,UAAb,4CAAyBe,GAAzB,CAA6B,KAAK3E,UAAL,CAAgB0E,OAA7C,EAAsD,IAAtD,EACD,CACF,CACF,CAhHH,QA6IUpC,oBA7IV,GA6IE,gCAA+B,CAC7B,IAAMR,MAAM,GAAGzC,SAAS,CAAC,KAAK0C,OAAN,CAAxB,CACA,QAAQ,KAAKtB,KAAL,CAAWY,IAAnB,GACE,KAAK,OAAL,CACE,OAAOS,MAAM,CAACmD,SAAP,CAAiB,KAAK9C,KAAtB,CAAP,CACF,KAAK,QAAL,CACE,OAAOL,MAAM,CAACoD,UAAP,CAAkB,KAAK/C,KAAvB,CAAP,CACF,KAAK,OAAL,CACA,QACE,OAAOL,MAAM,CAACqD,SAAP,CAAiB,KAAKhD,KAAtB,CAAP,CAPJ,CASD,CAxJH,QA0JUC,oBA1JV,GA0JE,gCAA+B,CAC7B,IAAMN,MAAM,GAAGzC,SAAS,CAAC,KAAK0C,OAAN,CAAxB,CACA,QAAQ,KAAKtB,KAAL,CAAWY,IAAnB,GACE,KAAK,OAAL,CACE,OAAOS,MAAM,CAACsD,SAAP,CAAiB,KAAKjD,KAAtB,CAAP,CACF,KAAK,QAAL,CACE,OAAOL,MAAM,CAACuD,UAAP,CAAkB,KAAKlD,KAAvB,CAAP,CACF,KAAK,OAAL,CACA,QACE,OAAOL,MAAM,CAACwD,SAAP,CAAiB,KAAKnD,KAAtB,CAAP,CAPJ,CASD,CArKH,QAuKUS,wBAvKV,GAuKE,oCAAmC,CACjC,IAAMd,MAAM,GAAGzC,SAAS,CAAC,KAAK0C,OAAN,CAAxB,CACA,QAAQ,KAAKtB,KAAL,CAAWY,IAAnB,GACE,KAAK,OAAL,CACE,OAAOS,MAAM,CAACyD,aAAP,CAAqB,KAAKpD,KAA1B,CAAP,CACF,KAAK,QAAL,CACE,OAAOL,MAAM,CAAC0D,cAAP,CAAsB,KAAKrD,KAA3B,CAAP,CACF,KAAK,OAAL,CACA,QACE,OAAOL,MAAM,CAAC2D,aAAP,CAAqB,KAAKtD,KAA1B,CAAP,CAPJ,CASD,CAlLH,oDAqRE,eAA0B,CACxB,OAAO,KAAKxC,KAAL,CAAWE,WAAX,GAAyB,OAAzB,GAAmC,KAAKY,KAAL,CAAWd,KAArD,CACD,CAvRH,2BAyRE,eAA+B,CAC7B,OAAO,CAAC,KAAKA,KAAL,CAAWE,WAAX,IAA0B,KAAKY,KAAL,CAAWd,KAAX,KAAqB,OAAhD,KAA4D,CAAC,KAAKc,KAAL,CAAWC,QAA/E,CACD,CA3RH,8BA6RE,eAAkC,CAChC,OAAO,KAAKD,KAAL,CAAWd,KAAX,KAAqB,UAArB,IAAmC,CAAC,KAAKA,KAAL,CAAWE,WAAtD,CACD,CA/RH,CAiSE;AACA;AAlSF,wBAA8BxB,KAAK,CAAC4E,SAApC,WACgByC,mBADhB,GACsC,UADtC,UAEgBC,WAFhB,GAE8B,UAF9B,UAGgBC,aAHhB,GAGgC,IAHhC,UAKgBC,SALhB,GAK4B,EACxBpG,OAAO,EAAEnB,SAAS,CAACwH,IADK,EAGxBpF,QAAQ,EAAEpC,SAAS,CAACyH,IAHI,EAKxBnF,IAAI,EAAEtC,SAAS,CAAC0H,MALQ,EAOxB7E,IAAI,EAAE7C,SAAS,CAACwH,IAPQ,EASxB1E,KAAK,EAAE9C,SAAS,CAACyH,IATO,EAWxBpG,KAAK,EAAErB,SAAS,CAAC0H,MAXO,EAaxBnF,MAAM,EAAEvC,SAAS,CAAC0H,MAbM,EAexBnC,OAAO,EAAEvF,SAAS,CAAC2H,IAfK,EAiBxB5E,IAAI,EAAE/C,SAAS,CAAC0H,MAjBQ,EAL5B,UAqCSE,WArCT,GAqCuBlH,WArCvB;AAsVA,OAAO,IAAMmH,UAAU,GAAGtH,kBAAkB,CAAC,UAAD,CAArC","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';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { Nullable } from '../../typings/utility-types';\nimport { isExternalLink, isFunction, isNonNullable, isReactUIComponent } from '../../lib/utils';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\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';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { getStyles } 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 emotion!: Emotion;\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 <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper\n rootNodeRef={this.setRootNode}\n {...getVisualStateDataAttributes({\n hover: this.isHover,\n selected: this.isSelected,\n })}\n {...this.props}\n >\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\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 const styles = getStyles(this.emotion);\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 const styles = getStyles(this.emotion);\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 const styles = getStyles(this.emotion);\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 styles = getStyles(this.emotion);\n let iconElement = null;\n if (icon) {\n iconElement = (\n <div\n style={{ top: this.state.iconOffsetTop }}\n className={this.emotion.cx({\n [styles.icon(this.theme)]: true,\n [this.getIconSizeClassName()]: true,\n })}\n >\n {icon}\n </div>\n );\n }\n\n const className = this.emotion.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)]: this.isHover,\n [styles.selected(this.theme)]: this.isSelected,\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.activeState}\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={this.emotion.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={this.emotion.cx({\n [styles.comment(this.theme)]: true,\n [styles.commentHover(this.theme)]: this.isHover,\n })}\n >\n {comment}\n </div>\n )}\n </Component>\n );\n };\n\n private get activeState() {\n return this.state.highlighted ? 'hover' : this.props.state;\n }\n\n private get isHover(): boolean {\n return (this.state.highlighted || this.props.state === 'hover') && !this.props.disabled;\n }\n\n private get isSelected(): boolean {\n return this.props.state === 'selected' && !this.state.highlighted;\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"]}
@@ -5,7 +5,7 @@ import React from 'react';
5
5
  import { Modal } from "../../Modal";
6
6
  import { forwardRefAndName } from "../../../lib/forwardRefAndName";
7
7
  import { useTheme } from "../../../lib/theming/useTheme";
8
- import { ThemeProvider } from "../../../lib/theming/ThemeContext";
8
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
9
9
  import { getMiniModalTheme } from "../getMiniModalTheme";
10
10
  import { MiniModalFooter } from "../MiniModalFooter";
11
11
  import { MiniModalHeader } from "../MiniModalHeader";
@@ -24,7 +24,7 @@ export var MiniModal = forwardRefAndName('MiniModal', function (_ref, ref) {
24
24
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
25
25
 
26
26
  var contextTheme = useTheme();
27
- return /*#__PURE__*/React.createElement(ThemeProvider, {
27
+ return /*#__PURE__*/React.createElement(ThemeContext.Provider, {
28
28
  value: getMiniModalTheme(contextTheme, propsTheme)
29
29
  }, /*#__PURE__*/React.createElement(Modal, _extends({
30
30
  width: 400,
@@ -1 +1 @@
1
- {"version":3,"sources":["MiniModal.tsx"],"names":["React","Modal","forwardRefAndName","useTheme","ThemeProvider","getMiniModalTheme","MiniModalFooter","MiniModalHeader","MiniModalBody","MiniModalIndent","MiniModalDataTids","icon","title","description","actions","indent","MiniModal","ref","children","propsTheme","theme","rest","contextTheme","Header","Footer","Indent","Body"],"mappings":"oMAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,KAAT,QAAkC,UAAlC;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,SAASC,QAAT,QAAyB,4BAAzB;AACA,SAASC,aAAT,QAA8B,gCAA9B;;AAEA,SAASC,iBAAT,QAAkC,qBAAlC;AACA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SAASC,aAAT,QAA8B,iBAA9B;AACA,SAASC,eAAT,QAAgC,mBAAhC;;AAEA,OAAO,IAAMC,iBAAiB,GAAG;AAC/BC,EAAAA,IAAI,EAAE,iBADyB;AAE/BC,EAAAA,KAAK,EAAE,kBAFwB;AAG/BC,EAAAA,WAAW,EAAE,wBAHkB;AAI/BC,EAAAA,OAAO,EAAE,oBAJsB;AAK/BC,EAAAA,MAAM,EAAE,mBALuB,EAA1B;;;AAQP,OAAO,IAAMC,SAAS,GAAGd,iBAAiB;;;;;;;;;AASxC,WATwC,EAS3B,gBAA2Ce,GAA3C,EAAmD,KAAhDC,QAAgD,QAAhDA,QAAgD,CAA/BC,UAA+B,QAAtCC,KAAsC,CAAhBC,IAAgB;AAChE,MAAMC,YAAY,GAAGnB,QAAQ,EAA7B;;AAEA;AACE,wBAAC,aAAD,IAAe,KAAK,EAAEE,iBAAiB,CAACiB,YAAD,EAAeH,UAAf,CAAvC;AACE,wBAAC,KAAD,aAAO,KAAK,EAAE,GAAd,EAAmB,OAAO,MAA1B,EAA2B,GAAG,EAAEF,GAAhC,IAAyCI,IAAzC;AACGH,IAAAA,QADH,CADF,CADF;;;;AAOD,CAnByC,CAAnC;;AAqBPF,SAAS,CAACO,MAAV,GAAmBhB,eAAnB;AACAS,SAAS,CAACQ,MAAV,GAAmBlB,eAAnB;AACAU,SAAS,CAACS,MAAV,GAAmBhB,eAAnB;AACAO,SAAS,CAACU,IAAV,GAAiBlB,aAAjB","sourcesContent":["import React from 'react';\n\nimport { Modal, ModalProps } from '../Modal';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { useTheme } from '../../lib/theming/useTheme';\nimport { ThemeProvider } from '../../lib/theming/ThemeContext';\n\nimport { getMiniModalTheme } from './getMiniModalTheme';\nimport { MiniModalFooter } from './MiniModalFooter';\nimport { MiniModalHeader } from './MiniModalHeader';\nimport { MiniModalBody } from './MiniModalBody';\nimport { MiniModalIndent } from './MiniModalIndent';\n\nexport const MiniModalDataTids = {\n icon: 'MiniModal__icon',\n title: 'MiniModal__title',\n description: 'MiniModal__description',\n actions: 'MiniModal__actions',\n indent: 'MiniModal__indent',\n} as const;\n\nexport const MiniModal = forwardRefAndName<\n Modal,\n ModalProps,\n {\n Header: typeof MiniModalHeader;\n Indent: typeof MiniModalIndent;\n Footer: typeof MiniModalFooter;\n Body: typeof MiniModalBody;\n }\n>('MiniModal', ({ children, theme: propsTheme, ...rest }, ref) => {\n const contextTheme = useTheme();\n\n return (\n <ThemeProvider value={getMiniModalTheme(contextTheme, propsTheme)}>\n <Modal width={400} noClose ref={ref} {...rest}>\n {children}\n </Modal>\n </ThemeProvider>\n );\n});\n\nMiniModal.Header = MiniModalHeader;\nMiniModal.Footer = MiniModalFooter;\nMiniModal.Indent = MiniModalIndent;\nMiniModal.Body = MiniModalBody;\n"]}
1
+ {"version":3,"sources":["MiniModal.tsx"],"names":["React","Modal","forwardRefAndName","useTheme","ThemeContext","getMiniModalTheme","MiniModalFooter","MiniModalHeader","MiniModalBody","MiniModalIndent","MiniModalDataTids","icon","title","description","actions","indent","MiniModal","ref","children","propsTheme","theme","rest","contextTheme","Header","Footer","Indent","Body"],"mappings":"oMAAA,OAAOA,KAAP,MAAkB,OAAlB;;AAEA,SAASC,KAAT,QAAkC,UAAlC;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,SAASC,QAAT,QAAyB,4BAAzB;AACA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAASC,iBAAT,QAAkC,qBAAlC;AACA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SAASC,eAAT,QAAgC,mBAAhC;AACA,SAASC,aAAT,QAA8B,iBAA9B;AACA,SAASC,eAAT,QAAgC,mBAAhC;;AAEA,OAAO,IAAMC,iBAAiB,GAAG;AAC/BC,EAAAA,IAAI,EAAE,iBADyB;AAE/BC,EAAAA,KAAK,EAAE,kBAFwB;AAG/BC,EAAAA,WAAW,EAAE,wBAHkB;AAI/BC,EAAAA,OAAO,EAAE,oBAJsB;AAK/BC,EAAAA,MAAM,EAAE,mBALuB,EAA1B;;;AAQP,OAAO,IAAMC,SAAS,GAAGd,iBAAiB;;;;;;;;;AASxC,WATwC,EAS3B,gBAA2Ce,GAA3C,EAAmD,KAAhDC,QAAgD,QAAhDA,QAAgD,CAA/BC,UAA+B,QAAtCC,KAAsC,CAAhBC,IAAgB;AAChE,MAAMC,YAAY,GAAGnB,QAAQ,EAA7B;;AAEA;AACE,wBAAC,YAAD,CAAc,QAAd,IAAuB,KAAK,EAAEE,iBAAiB,CAACiB,YAAD,EAAeH,UAAf,CAA/C;AACE,wBAAC,KAAD,aAAO,KAAK,EAAE,GAAd,EAAmB,OAAO,MAA1B,EAA2B,GAAG,EAAEF,GAAhC,IAAyCI,IAAzC;AACGH,IAAAA,QADH,CADF,CADF;;;;AAOD,CAnByC,CAAnC;;AAqBPF,SAAS,CAACO,MAAV,GAAmBhB,eAAnB;AACAS,SAAS,CAACQ,MAAV,GAAmBlB,eAAnB;AACAU,SAAS,CAACS,MAAV,GAAmBhB,eAAnB;AACAO,SAAS,CAACU,IAAV,GAAiBlB,aAAjB","sourcesContent":["import React from 'react';\n\nimport { Modal, ModalProps } from '../Modal';\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { useTheme } from '../../lib/theming/useTheme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { getMiniModalTheme } from './getMiniModalTheme';\nimport { MiniModalFooter } from './MiniModalFooter';\nimport { MiniModalHeader } from './MiniModalHeader';\nimport { MiniModalBody } from './MiniModalBody';\nimport { MiniModalIndent } from './MiniModalIndent';\n\nexport const MiniModalDataTids = {\n icon: 'MiniModal__icon',\n title: 'MiniModal__title',\n description: 'MiniModal__description',\n actions: 'MiniModal__actions',\n indent: 'MiniModal__indent',\n} as const;\n\nexport const MiniModal = forwardRefAndName<\n Modal,\n ModalProps,\n {\n Header: typeof MiniModalHeader;\n Indent: typeof MiniModalIndent;\n Footer: typeof MiniModalFooter;\n Body: typeof MiniModalBody;\n }\n>('MiniModal', ({ children, theme: propsTheme, ...rest }, ref) => {\n const contextTheme = useTheme();\n\n return (\n <ThemeContext.Provider value={getMiniModalTheme(contextTheme, propsTheme)}>\n <Modal width={400} noClose ref={ref} {...rest}>\n {children}\n </Modal>\n </ThemeContext.Provider>\n );\n});\n\nMiniModal.Header = MiniModalHeader;\nMiniModal.Footer = MiniModalFooter;\nMiniModal.Indent = MiniModalIndent;\nMiniModal.Body = MiniModalBody;\n"]}
@@ -18,7 +18,7 @@ import { CommonWrapper } from "../../../internal/CommonWrapper";
18
18
  import { EmotionConsumer } from "../../../lib/theming/Emotion";
19
19
  import { createPropsGetter } from "../../../lib/createPropsGetter";
20
20
  import { ResponsiveLayout } from "../../ResponsiveLayout";
21
- import { ThemeConsumer, ThemeProvider } from "../../../lib/theming/ThemeContext";
21
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
22
22
  import { ModalContext } from "../ModalContext";
23
23
  import { ModalFooter } from "../ModalFooter";
24
24
  import { ModalHeader } from "../ModalHeader";
@@ -225,9 +225,9 @@ export var Modal = /*#__PURE__*/function (_React$Component) {
225
225
 
226
226
  return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
227
227
  _this2.emotion = emotion;
228
- return /*#__PURE__*/React.createElement(ThemeConsumer, null, function (theme) {
228
+ return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
229
229
  _this2.theme = getModalTheme(theme, _this2.props.theme);
230
- return /*#__PURE__*/React.createElement(ThemeProvider, {
230
+ return /*#__PURE__*/React.createElement(ThemeContext.Provider, {
231
231
  value: _this2.theme
232
232
  }, _this2.renderMain());
233
233
  });