@jetbrains/ring-ui 5.0.0-beta.7 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (412) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/components/alert/alert.css +2 -1
  3. package/components/alert-service/alert-service.js +1 -1
  4. package/components/analytics/analytics__ga-plugin.d.ts +1 -1
  5. package/components/analytics/analytics__ga-plugin.js +12 -3
  6. package/components/auth/auth__core.js +5 -1
  7. package/components/auth-dialog-service/auth-dialog-service.js +1 -1
  8. package/components/avatar/avatar.d.ts +1 -0
  9. package/components/avatar/fallback-avatar.js +2 -2
  10. package/components/button/button.css +4 -4
  11. package/components/button/button.d.ts +2 -1
  12. package/components/button-group/button-group.css +4 -2
  13. package/components/checkbox/checkbox.css +8 -12
  14. package/components/checkbox/checkbox.js +1 -1
  15. package/components/checkbox-ng/checkbox-ng.js +1 -1
  16. package/components/confirm-service/confirm-service.js +1 -1
  17. package/components/data-list/data-list.d.ts +4 -8
  18. package/components/date-picker/date-picker.css +1 -0
  19. package/components/date-picker/date-popup.js +0 -1
  20. package/components/dialog/dialog.d.ts +1 -1
  21. package/components/dropdown/dropdown.d.ts +2 -2
  22. package/components/global/angular-component-factory.js +1 -1
  23. package/components/global/promise-with-timeout.d.ts +2 -1
  24. package/components/global/promise-with-timeout.js +5 -2
  25. package/components/global/react-render-adapter.d.ts +29 -0
  26. package/components/global/react-render-adapter.js +36 -0
  27. package/components/global/rerender-hoc.d.ts +5 -9
  28. package/components/global/rerender-hoc.js +4 -2
  29. package/components/global/theme.js +11 -4
  30. package/components/global/variables.css +0 -1
  31. package/components/global/variables.d.ts +0 -1
  32. package/components/global/variables_dark.css +1 -2
  33. package/components/header/header.css +2 -2
  34. package/components/header/profile.d.ts +3 -3
  35. package/components/input/input.css +9 -2
  36. package/components/input/input.d.ts +3 -1
  37. package/components/input/input.js +1 -1
  38. package/components/island/adaptive-island-hoc.d.ts +4 -8
  39. package/components/island/content.d.ts +33 -2
  40. package/components/island/content.js +5 -4
  41. package/components/island/island.d.ts +4 -8
  42. package/components/link/clickableLink.d.ts +1 -1
  43. package/components/link/link.css +0 -2
  44. package/components/link/link.d.ts +14 -22
  45. package/components/link/link.js +2 -2
  46. package/components/list/consts.d.ts +3 -1
  47. package/components/list/list.css +1 -0
  48. package/components/list/list.d.ts +2 -0
  49. package/components/list/list.js +12 -13
  50. package/components/list/list__link.js +2 -2
  51. package/components/login-dialog/service.js +1 -1
  52. package/components/message/message.css +12 -26
  53. package/components/message/message.js +27 -14
  54. package/components/popup/popup.d.ts +7 -1
  55. package/components/popup/popup.js +4 -3
  56. package/components/popup/popup.target.d.ts +1 -1
  57. package/components/popup/position.d.ts +1 -1
  58. package/components/popup/position.js +2 -2
  59. package/components/popup-menu/popup-menu.d.ts +1 -0
  60. package/components/query-assist/query-assist.d.ts +5 -9
  61. package/components/query-assist/query-assist.js +2 -2
  62. package/components/radio/radio.d.ts +1 -1
  63. package/components/select/select-popup.css +5 -1
  64. package/components/select/select.css +4 -1
  65. package/components/select/select.d.ts +12 -14
  66. package/components/select/select.js +20 -17
  67. package/components/select/select__popup.d.ts +4 -1
  68. package/components/select/select__popup.js +4 -3
  69. package/components/select-ng/select-ng.js +16 -5
  70. package/components/select-ng/select-ng__lazy.js +19 -8
  71. package/components/select-ng/select-ng__lazy.test.js +3 -1
  72. package/components/shortcuts/shortcuts-hoc.d.ts +4 -8
  73. package/components/shortcuts/shortcuts.d.ts +1 -1
  74. package/components/tab-trap/tab-trap.d.ts +1 -1
  75. package/components/table/disable-hover-hoc.d.ts +4 -8
  76. package/components/table/header.d.ts +8 -1
  77. package/components/table/row-with-focus-sensor.d.ts +4 -4
  78. package/components/table/row-with-focus-sensor.js +4 -4
  79. package/components/table/row.d.ts +1 -0
  80. package/components/table/smart-table.d.ts +1 -0
  81. package/components/table/smart-table.js +7 -3
  82. package/components/table/table.d.ts +4 -8
  83. package/components/tabs/collapsible-more.js +2 -2
  84. package/components/tabs/collapsible-tabs.d.ts +2 -2
  85. package/components/tabs/collapsible-tabs.js +1 -1
  86. package/components/tabs/custom-item.d.ts +1 -1
  87. package/components/tabs/dumb-tabs.d.ts +2 -2
  88. package/components/tabs/smart-tabs.d.ts +4 -4
  89. package/components/tabs/smart-tabs.js +9 -3
  90. package/components/tabs/tab-link.d.ts +1 -1
  91. package/components/tabs/tab.d.ts +1 -1
  92. package/components/tabs/tabs.css +10 -1
  93. package/components/tag/tag.css +1 -1
  94. package/components/tag/tag.js +1 -2
  95. package/components/tags-input/tags-input.d.ts +4 -8
  96. package/components/tags-list/tags-list.d.ts +1 -1
  97. package/components/tooltip-ng/tooltip-ng.js +13 -10
  98. package/components/user-agreement/service.d.ts +14 -62
  99. package/components/user-agreement/service.js +1 -1
  100. package/dist/_helpers/anchor.js +1 -1
  101. package/dist/_helpers/badge.js +1 -1
  102. package/dist/_helpers/button-group.js +1 -1
  103. package/dist/_helpers/button-set.js +1 -1
  104. package/dist/_helpers/button-toolbar.js +1 -1
  105. package/dist/_helpers/button__classes.js +2 -2
  106. package/dist/_helpers/card.js +1 -1
  107. package/dist/_helpers/checkbox.js +1 -1
  108. package/dist/_helpers/date-picker.js +1 -1
  109. package/dist/_helpers/dialog__body-scroll-preventer.js +3 -2
  110. package/dist/_helpers/error-message.js +1 -1
  111. package/dist/_helpers/footer.js +1 -1
  112. package/dist/_helpers/grid.js +1 -1
  113. package/dist/_helpers/group.js +1 -1
  114. package/dist/_helpers/header.js +1 -1
  115. package/dist/_helpers/icon.js +1 -1
  116. package/dist/_helpers/input.js +1 -1
  117. package/dist/_helpers/island.js +1 -1
  118. package/dist/_helpers/link.js +1 -1
  119. package/dist/_helpers/list.js +1 -1
  120. package/dist/_helpers/loader-inline.js +1 -1
  121. package/dist/_helpers/loader-screen.js +1 -1
  122. package/dist/_helpers/panel.js +1 -1
  123. package/dist/_helpers/query-assist__suggestions.js +1 -1
  124. package/dist/_helpers/radio.js +1 -1
  125. package/dist/_helpers/select__filter.js +2 -1
  126. package/dist/_helpers/services-link.js +2 -2
  127. package/dist/_helpers/sidebar.js +3 -2
  128. package/dist/_helpers/table.js +1 -1
  129. package/dist/_helpers/tabs.js +1 -1
  130. package/dist/_helpers/theme.js +12 -7
  131. package/dist/_helpers/title.js +2 -1
  132. package/dist/alert/alert.js +15 -3
  133. package/dist/alert/container.js +1 -1
  134. package/dist/alert-service/alert-service.js +14 -1
  135. package/dist/analytics/analytics.js +4 -3
  136. package/dist/analytics/analytics__custom-plugin.js +2 -1
  137. package/dist/analytics/analytics__fus-plugin.js +1 -0
  138. package/dist/analytics/analytics__ga-plugin.d.ts +1 -1
  139. package/dist/analytics/analytics__ga-plugin.js +16 -7
  140. package/dist/analytics/analytics__plugin-utils.js +4 -3
  141. package/dist/analytics-ng/analytics-ng.js +3 -2
  142. package/dist/auth/auth.js +13 -0
  143. package/dist/auth/auth__core.js +29 -12
  144. package/dist/auth/background-flow.js +2 -1
  145. package/dist/auth/down-notification.js +14 -1
  146. package/dist/auth/iframe-flow.js +3 -0
  147. package/dist/auth/landing.js +17 -4
  148. package/dist/auth/request-builder.js +1 -0
  149. package/dist/auth/response-parser.js +1 -0
  150. package/dist/auth/storage.js +13 -0
  151. package/dist/auth/token-validator.js +2 -0
  152. package/dist/auth/window-flow.js +2 -1
  153. package/dist/auth-dialog/auth-dialog.js +4 -2
  154. package/dist/auth-dialog-service/auth-dialog-service.js +4 -1
  155. package/dist/auth-ng/auth-ng.js +14 -1
  156. package/dist/autofocus-ng/autofocus-ng.js +1 -0
  157. package/dist/avatar/avatar-example-datauri.js +1 -23
  158. package/dist/avatar/avatar.d.ts +1 -0
  159. package/dist/avatar/avatar.js +5 -3
  160. package/dist/avatar/fallback-avatar.js +6 -5
  161. package/dist/avatar-editor-ng/avatar-editor-ng.js +13 -0
  162. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +1 -28
  163. package/dist/avatar-ng/avatar-ng.js +3 -0
  164. package/dist/badge/badge.js +1 -0
  165. package/dist/badge-ng/badge-ng.js +2 -0
  166. package/dist/breadcrumb-ng/breadcrumb-ng.js +4 -28
  167. package/dist/button/button.d.ts +2 -1
  168. package/dist/button/button.js +2 -0
  169. package/dist/button-group-ng/button-group-ng.js +2 -1
  170. package/dist/button-ng/button-ng.js +5 -11
  171. package/dist/button-set-ng/button-set-ng.js +1 -1
  172. package/dist/button-toolbar-ng/button-toolbar-ng.js +1 -0
  173. package/dist/caret/caret.js +2 -0
  174. package/dist/checkbox/checkbox.js +3 -1
  175. package/dist/checkbox-ng/checkbox-ng.js +4 -21
  176. package/dist/code/code.js +4 -3
  177. package/dist/confirm/confirm.js +3 -1
  178. package/dist/confirm-ng/confirm-ng.js +3 -0
  179. package/dist/confirm-service/confirm-service.js +4 -1
  180. package/dist/content-layout/content-layout.js +1 -0
  181. package/dist/content-layout/sidebar.js +1 -0
  182. package/dist/data-list/data-list.d.ts +4 -8
  183. package/dist/data-list/data-list.js +3 -1
  184. package/dist/data-list/data-list.mock.js +1 -0
  185. package/dist/data-list/item.js +3 -1
  186. package/dist/data-list/selection.js +1 -0
  187. package/dist/data-list/title.js +3 -1
  188. package/dist/data-list-ng/data-list-ng.js +4 -1
  189. package/dist/date-picker/consts.js +1 -1
  190. package/dist/date-picker/date-input.js +4 -2
  191. package/dist/date-picker/date-picker.js +10 -8
  192. package/dist/date-picker/date-popup.js +4 -3
  193. package/dist/date-picker/day.js +1 -0
  194. package/dist/date-picker/month-names.js +1 -0
  195. package/dist/date-picker/month-slider.js +1 -0
  196. package/dist/date-picker/month.js +1 -0
  197. package/dist/date-picker/months.js +1 -0
  198. package/dist/date-picker/years.js +1 -0
  199. package/dist/dialog/dialog.d.ts +1 -1
  200. package/dist/dialog/dialog.js +2 -0
  201. package/dist/dialog/dialog__body-scroll-preventer.js +1 -0
  202. package/dist/dialog-ng/dialog-ng.js +7 -4
  203. package/dist/dialog-ng/dialog-ng__template.js +1 -70
  204. package/dist/docked-panel-ng/docked-panel-ng.js +2 -1
  205. package/dist/dropdown/anchor.js +2 -0
  206. package/dist/dropdown/dropdown.d.ts +2 -2
  207. package/dist/dropdown/dropdown.js +2 -0
  208. package/dist/dropdown-menu/dropdown-menu.js +4 -2
  209. package/dist/error-bubble/error-bubble.js +3 -1
  210. package/dist/error-message/error-message.js +3 -1
  211. package/dist/error-message-ng/error-message-ng.js +3 -21
  212. package/dist/footer/footer.js +1 -0
  213. package/dist/footer-ng/footer-ng.js +3 -14
  214. package/dist/form-ng/form-ng.js +2 -4
  215. package/dist/global/angular-component-factory.js +8 -6
  216. package/dist/global/create-stateful-context.js +3 -2
  217. package/dist/global/data-tests.js +2 -0
  218. package/dist/global/dom.js +1 -0
  219. package/dist/global/focus-sensor-hoc.js +1 -0
  220. package/dist/global/fuzzy-highlight.js +1 -1
  221. package/dist/global/inject-styles.js +5 -7
  222. package/dist/global/listeners.js +1 -0
  223. package/dist/global/memoize.js +2 -0
  224. package/dist/global/normalize-indent.js +2 -0
  225. package/dist/global/promise-with-timeout.d.ts +2 -1
  226. package/dist/global/promise-with-timeout.js +6 -2
  227. package/dist/global/react-dom-renderer.js +1 -0
  228. package/dist/global/react-render-adapter.d.ts +29 -0
  229. package/dist/global/react-render-adapter.js +41 -0
  230. package/dist/global/rerender-hoc.d.ts +5 -9
  231. package/dist/global/rerender-hoc.js +7 -3
  232. package/dist/global/theme.js +15 -0
  233. package/dist/global/trivial-template-tag.js +2 -0
  234. package/dist/global/url.js +3 -1
  235. package/dist/global/variables.d.ts +0 -1
  236. package/dist/grid/col.js +2 -1
  237. package/dist/grid/grid.js +1 -0
  238. package/dist/grid/row.js +1 -1
  239. package/dist/group-ng/group-ng.js +1 -1
  240. package/dist/header/header.js +18 -14
  241. package/dist/header/logo.js +2 -0
  242. package/dist/header/profile.d.ts +3 -3
  243. package/dist/header/profile.js +3 -1
  244. package/dist/header/services-link.js +1 -0
  245. package/dist/header/services.js +2 -0
  246. package/dist/header/smart-profile.js +17 -13
  247. package/dist/header/smart-services.js +14 -11
  248. package/dist/header/tray-icon.js +2 -0
  249. package/dist/heading/heading.js +3 -3
  250. package/dist/http/http.js +4 -2
  251. package/dist/http/http.mock.js +2 -0
  252. package/dist/hub-source/hub-source.js +1 -1
  253. package/dist/hub-source/hub-source__user.js +4 -2
  254. package/dist/hub-source/hub-source__users-groups.js +3 -2
  255. package/dist/icon/icon.js +3 -3
  256. package/dist/icon/icon__svg.js +2 -0
  257. package/dist/icon/index.js +2 -0
  258. package/dist/icon-ng/icon-ng.js +7 -5
  259. package/dist/input/input.d.ts +3 -1
  260. package/dist/input/input.js +5 -3
  261. package/dist/input-ng/input-ng.js +6 -59
  262. package/dist/island/adaptive-island-hoc.d.ts +4 -8
  263. package/dist/island/adaptive-island-hoc.js +4 -3
  264. package/dist/island/content.d.ts +33 -2
  265. package/dist/island/content.js +8 -4
  266. package/dist/island/header.js +3 -2
  267. package/dist/island/island.d.ts +4 -8
  268. package/dist/island/island.js +1 -0
  269. package/dist/island-ng/island-content-ng.js +2 -16
  270. package/dist/island-ng/island-header-ng.js +2 -8
  271. package/dist/island-ng/island-ng-class-fixer.js +2 -0
  272. package/dist/island-ng/island-ng.js +2 -8
  273. package/dist/link/clickableLink.d.ts +1 -1
  274. package/dist/link/clickableLink.js +1 -0
  275. package/dist/link/link.d.ts +14 -22
  276. package/dist/link/link.js +5 -4
  277. package/dist/link-ng/link-ng.js +1 -4
  278. package/dist/list/consts.d.ts +3 -1
  279. package/dist/list/list.d.ts +2 -0
  280. package/dist/list/list.js +30 -23
  281. package/dist/list/list__custom.js +1 -0
  282. package/dist/list/list__item.js +6 -4
  283. package/dist/list/list__link.js +3 -1
  284. package/dist/list/list__users-groups-source.js +4 -2
  285. package/dist/loader/loader.js +1 -0
  286. package/dist/loader/loader__core.js +5 -4
  287. package/dist/loader-inline/loader-inline.js +1 -0
  288. package/dist/loader-inline-ng/loader-inline-ng.js +1 -1
  289. package/dist/loader-ng/loader-ng.js +1 -0
  290. package/dist/loader-screen/loader-screen.js +1 -0
  291. package/dist/loader-screen-ng/loader-screen-ng.js +2 -6
  292. package/dist/login-dialog/login-dialog.js +3 -1
  293. package/dist/login-dialog/service.js +4 -1
  294. package/dist/markdown/code.js +1 -0
  295. package/dist/markdown/link.js +1 -0
  296. package/dist/markdown/markdown.js +2 -1
  297. package/dist/message/message.js +39 -33
  298. package/dist/old-browsers-message/old-browsers-message.js +2 -1
  299. package/dist/old-browsers-message/old-browsers-message__stop.js +1 -0
  300. package/dist/old-browsers-message/white-list.js +1 -0
  301. package/dist/pager/pager.js +7 -4
  302. package/dist/pager-ng/pager-ng.js +5 -2
  303. package/dist/panel-ng/panel-ng.js +1 -0
  304. package/dist/permissions/permissions.js +1 -1
  305. package/dist/permissions-ng/permissions-ng.js +14 -1
  306. package/dist/place-under-ng/place-under-ng.js +3 -2
  307. package/dist/popup/popup.d.ts +7 -1
  308. package/dist/popup/popup.js +11 -7
  309. package/dist/popup/popup.target.d.ts +1 -1
  310. package/dist/popup/position.d.ts +1 -1
  311. package/dist/popup/position.js +3 -2
  312. package/dist/popup-menu/popup-menu.d.ts +1 -0
  313. package/dist/popup-menu/popup-menu.js +3 -1
  314. package/dist/progress-bar/progress-bar.js +3 -2
  315. package/dist/progress-bar-ng/progress-bar-ng.js +2 -0
  316. package/dist/promised-click-ng/promised-click-ng.js +2 -0
  317. package/dist/proxy-attrs/proxy-attrs.js +5 -3
  318. package/dist/query-assist/query-assist.d.ts +5 -9
  319. package/dist/query-assist/query-assist.js +9 -5
  320. package/dist/query-assist/query-assist__suggestions.js +3 -1
  321. package/dist/query-assist-ng/query-assist-ng.js +7 -3
  322. package/dist/radio/radio.d.ts +1 -1
  323. package/dist/radio/radio.js +1 -0
  324. package/dist/radio/radio__item.js +1 -0
  325. package/dist/radio-ng/radio-ng.js +2 -18
  326. package/dist/save-field-ng/save-field-ng.js +3 -1
  327. package/dist/save-field-ng/save-field-ng__template.js +1 -32
  328. package/dist/select/select.d.ts +12 -14
  329. package/dist/select/select.js +33 -22
  330. package/dist/select/select__filter.js +4 -2
  331. package/dist/select/select__popup.d.ts +4 -1
  332. package/dist/select/select__popup.js +9 -4
  333. package/dist/select-ng/select-ng.js +23 -8
  334. package/dist/select-ng/select-ng__lazy.js +30 -12
  335. package/dist/select-ng/select-ng__options.js +2 -2
  336. package/dist/shortcuts/shortcuts-hoc.d.ts +4 -8
  337. package/dist/shortcuts/shortcuts-hoc.js +4 -3
  338. package/dist/shortcuts/shortcuts.d.ts +1 -1
  339. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +3 -0
  340. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +1 -48
  341. package/dist/shortcuts-ng/shortcuts-ng.js +4 -3
  342. package/dist/sidebar-ng/sidebar-ng.js +2 -0
  343. package/dist/sidebar-ng/sidebar-ng__button-template.js +1 -18
  344. package/dist/sidebar-ng/sidebar-ng__template.js +1 -10
  345. package/dist/storage/storage.js +13 -0
  346. package/dist/storage/storage__fallback.js +4 -3
  347. package/dist/storage/storage__local.js +13 -0
  348. package/dist/style.css +1 -1
  349. package/dist/tab-trap/tab-trap.d.ts +1 -1
  350. package/dist/tab-trap/tab-trap.js +2 -1
  351. package/dist/table/cell.js +1 -0
  352. package/dist/table/disable-hover-hoc.d.ts +4 -8
  353. package/dist/table/disable-hover-hoc.js +4 -3
  354. package/dist/table/header-cell.js +2 -0
  355. package/dist/table/header.d.ts +8 -1
  356. package/dist/table/header.js +3 -1
  357. package/dist/table/multitable.js +1 -0
  358. package/dist/table/row-with-focus-sensor.d.ts +4 -4
  359. package/dist/table/row-with-focus-sensor.js +15 -5
  360. package/dist/table/row.d.ts +1 -0
  361. package/dist/table/row.js +4 -2
  362. package/dist/table/selection-adapter.js +2 -0
  363. package/dist/table/selection-shortcuts-hoc.js +1 -0
  364. package/dist/table/selection.js +1 -0
  365. package/dist/table/smart-table.d.ts +1 -0
  366. package/dist/table/smart-table.js +13 -7
  367. package/dist/table/table.d.ts +4 -8
  368. package/dist/table/table.js +3 -1
  369. package/dist/table-legacy-ng/table-legacy-ng.js +13 -47
  370. package/dist/table-legacy-ng/table-legacy-ng__pager.js +6 -9
  371. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +2 -1
  372. package/dist/table-ng/smart-table-ng.js +4 -1
  373. package/dist/table-ng/table-ng.js +4 -1
  374. package/dist/tabs/collapsible-more.js +4 -2
  375. package/dist/tabs/collapsible-tab.js +1 -0
  376. package/dist/tabs/collapsible-tabs.d.ts +2 -2
  377. package/dist/tabs/collapsible-tabs.js +3 -1
  378. package/dist/tabs/custom-item.d.ts +1 -1
  379. package/dist/tabs/dumb-tabs.d.ts +2 -2
  380. package/dist/tabs/dumb-tabs.js +3 -1
  381. package/dist/tabs/smart-tabs.d.ts +4 -4
  382. package/dist/tabs/smart-tabs.js +10 -6
  383. package/dist/tabs/tab-link.d.ts +1 -1
  384. package/dist/tabs/tab-link.js +1 -0
  385. package/dist/tabs/tab.d.ts +1 -1
  386. package/dist/tabs/tab.js +1 -0
  387. package/dist/tabs/tabs.js +3 -1
  388. package/dist/tabs-ng/tabs-ng.js +1 -0
  389. package/dist/tabs-ng/tabs-ng__template.js +1 -38
  390. package/dist/tag/tag.js +4 -3
  391. package/dist/tags-input/tags-input.d.ts +4 -8
  392. package/dist/tags-input/tags-input.js +6 -3
  393. package/dist/tags-input-ng/tags-input-ng.js +5 -2
  394. package/dist/tags-list/tags-list.d.ts +1 -1
  395. package/dist/tags-list/tags-list.js +3 -1
  396. package/dist/template-ng/template-ng.js +1 -0
  397. package/dist/text/text.js +1 -1
  398. package/dist/theme-ng/theme-ng.js +1 -0
  399. package/dist/toggle/toggle.js +2 -1
  400. package/dist/toggle-ng/toggle-ng.js +2 -0
  401. package/dist/tooltip/tooltip.js +3 -1
  402. package/dist/tooltip-ng/tooltip-ng.js +12 -6
  403. package/dist/user-agreement/service.d.ts +14 -62
  404. package/dist/user-agreement/service.js +14 -8
  405. package/dist/user-agreement/toolbox.eula.js +1 -160
  406. package/dist/user-agreement/user-agreement.js +3 -1
  407. package/dist/user-card/card.js +2 -0
  408. package/dist/user-card/smart-user-card-tooltip.js +2 -0
  409. package/dist/user-card/tooltip.js +2 -0
  410. package/dist/user-card/user-card.js +2 -0
  411. package/dist/user-card-ng/user-card-ng.js +3 -0
  412. package/package.json +74 -66
package/CHANGELOG.md CHANGED
@@ -39,6 +39,7 @@
39
39
  You can also pass `Theme.AUTO` to use the user-defined system theme.
40
40
  The only exceptions are the components that provide dark context by default: Alert, Header, Message. Those still accept a `theme` prop.
41
41
  - `--ring-dark-*` CSS custom properties are removed, `--ring-dark-text-color` is renamed to `--ring-white-text-color`
42
+ - `--ring-message-background-color` is removed in favor of `--ring-popup-background-color`
42
43
  - The codebase has migrated to TypeScript
43
44
  - `react-markdown` has been updated to v7, which affects the props of `Markdown` component. The most notable change is replacing `source` with `children`:
44
45
  ```js
@@ -52,6 +53,18 @@
52
53
  - Removed `core-js@2` support
53
54
  - Removed `webpack@4` support
54
55
 
56
+ ## [4.2.0]
57
+
58
+ ### React 18 support
59
+
60
+ To enable the new root API, add the following code before any rendering:
61
+ ```js
62
+ import * as client from 'react-dom/client'
63
+ import {setClient} from '@jetbrains/ring-ui/components/global/react-render-adapter'
64
+
65
+ setClient(client)
66
+ ```
67
+
55
68
  ## [4.1.0]
56
69
 
57
70
  ### Pre-built version
@@ -1,5 +1,6 @@
1
1
  @import "../global/variables.css";
2
2
 
3
+ @value link from "../link/link.css";
3
4
  @value unit from "../global/global.css";
4
5
  @value animation-duration: 300ms;
5
6
  @value animation-easing: ease-out;
@@ -23,7 +24,7 @@
23
24
  pointer-events: auto;
24
25
 
25
26
  border-radius: var(--ring-border-radius);
26
- background-color: var(--ring-message-background-color);
27
+ background-color: var(--ring-popup-background-color);
27
28
  box-shadow: var(--ring-popup-shadow);
28
29
 
29
30
  font-size: var(--ring-font-size);
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { render } from 'react-dom';
2
+ import { render } from '../global/react-render-adapter';
3
3
  import getUID from '../global/get-uid';
4
4
  import Alert, { ANIMATION_TIME, Container as AlertContainer } from '../alert/alert';
5
5
  /**
@@ -10,7 +10,7 @@ declare global {
10
10
  * @constructor
11
11
  */
12
12
  export default class AnalyticsGAPlugin implements AnalyticsPlugin {
13
- constructor(gaId?: string | undefined, isDevelopment?: boolean | undefined, domain?: string);
13
+ constructor(gaId?: string | undefined, isDevelopment?: boolean | undefined, domain?: string, cookielessUserIdentifier?: string | undefined);
14
14
  trackEvent(category: string, action: string): void;
15
15
  trackPageView(path: string): void;
16
16
  get serializeAdditionalInfo(): boolean;
@@ -4,7 +4,7 @@
4
4
  * @constructor
5
5
  */
6
6
  export default class AnalyticsGAPlugin {
7
- constructor(gaId, isDevelopment, domain) {
7
+ constructor(gaId, isDevelopment, domain, cookielessUserIdentifier) {
8
8
  if (!gaId && !isDevelopment) {
9
9
  return;
10
10
  }
@@ -25,9 +25,18 @@ export default class AnalyticsGAPlugin {
25
25
  */
26
26
  const key = gaId || 'UA-57284711-1';
27
27
  /* global ga */
28
- const gaCookieParams = domain ? { cookieDomain: domain } : {};
29
- ga('create', key, (!gaId ? { cookieDomain: 'none' } : gaCookieParams));
28
+ if (cookielessUserIdentifier) {
29
+ ga('create', key, {
30
+ storage: 'none',
31
+ clientId: cookielessUserIdentifier
32
+ });
33
+ }
34
+ else {
35
+ const gaCookieParams = domain ? { cookieDomain: domain } : {};
36
+ ga('create', key, (!gaId ? { cookieDomain: 'none' } : gaCookieParams));
37
+ }
30
38
  ga('set', 'anonymizeIp', true);
39
+ ga('set', 'location', domain || '/');
31
40
  ga('set', 'allowAdFeatures', false);
32
41
  }
33
42
  trackEvent(category, action) {
@@ -727,9 +727,13 @@ export default class Auth {
727
727
  return await (stateId && this._storage?.getState(stateId)) || {};
728
728
  }
729
729
  _checkBackendsAreUp() {
730
+ const abortCtrl = new AbortController();
730
731
  const { backendCheckTimeout } = this.config;
731
732
  return Promise.all([
732
- promiseWithTimeout(this.http.fetch('settings/public?fields=id'), backendCheckTimeout, { error: new Error('The authorization server is taking too long to respond. Please try again later.') }),
733
+ promiseWithTimeout(this.http.fetch('settings/public?fields=id', { signal: abortCtrl.signal }), backendCheckTimeout, {
734
+ error: new Error('The authorization server is taking too long to respond. Please try again later.'),
735
+ onTimeout: () => abortCtrl.abort()
736
+ }),
733
737
  this.config.checkBackendIsUp()
734
738
  ]).catch(err => {
735
739
  if (err instanceof TypeError) {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { render } from 'react-dom';
2
+ import { render } from '../global/react-render-adapter';
3
3
  import AuthDialog from '../auth-dialog/auth-dialog';
4
4
  /**
5
5
  * @name Auth Dialog Service
@@ -49,3 +49,4 @@ export default class Avatar extends PureComponent<AvatarProps> {
49
49
  handleSuccess: () => void;
50
50
  render(): JSX.Element;
51
51
  }
52
+ export declare type AvatarAttrs = JSX.LibraryManagedAttributes<typeof Avatar, AvatarProps>;
@@ -54,13 +54,13 @@ const Sizes = {
54
54
  };
55
55
  const sizeKeys = Object.keys(Sizes).map(Number);
56
56
  function extractLetters(name) {
57
- const names = name.split(/[\s._]+/).filter(Boolean);
57
+ const names = name.split(/[\s._]+/).filter(Boolean).map(word => Array.from(word));
58
58
  if (names.length >= 2) {
59
59
  return names[0][0].toUpperCase() + names[1][0].toUpperCase();
60
60
  }
61
61
  else if (names.length === 1) {
62
62
  if (names[0].length >= 2) {
63
- return names[0].slice(0, 2).toUpperCase();
63
+ return names[0].slice(0, 2).join('').toUpperCase();
64
64
  }
65
65
  else {
66
66
  return `${names[0][0].toUpperCase()}X`;
@@ -69,11 +69,11 @@
69
69
  &.active {
70
70
  transition: none;
71
71
 
72
- box-shadow: button-shadow var(--ring-main-color);
72
+ box-shadow: inset 0 0 0 2px var(--ring-main-color);
73
73
  }
74
74
 
75
75
  &:global(.focus-visible).active {
76
- box-shadow: button-shadow var(--ring-main-color), 0 0 0 1px var(--ring-border-hover-color);
76
+ box-shadow: inset 0 0 0 2px var(--ring-main-color), 0 0 0 1px var(--ring-border-hover-color);
77
77
  }
78
78
 
79
79
  &[disabled] {
@@ -134,8 +134,8 @@
134
134
  }
135
135
 
136
136
  &[disabled] {
137
- background-color: var(--ring-content-background-color);
138
- box-shadow: button-shadow var(--ring-borders-color);
137
+ background-color: var(--ring-disabled-background-color);
138
+ box-shadow: button-shadow var(--ring-border-disabled-color);
139
139
  }
140
140
 
141
141
  &[disabled].loader {
@@ -3,7 +3,7 @@ import React, { PureComponent, ButtonHTMLAttributes } from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import { IconType, Size } from '../icon/icon';
5
5
  import { ClickableLinkProps } from '../link/clickableLink';
6
- import { ControlsHeight } from '../global/controls-height';
6
+ import { ControlsHeight, ControlsHeightContext } from '../global/controls-height';
7
7
  export interface ButtonBaseProps {
8
8
  height?: ControlsHeight | undefined;
9
9
  active?: boolean | null | undefined;
@@ -58,6 +58,7 @@ export declare class Button extends PureComponent<ButtonProps> {
58
58
  };
59
59
  static IconSize: typeof Size;
60
60
  static contextType: React.Context<ControlsHeight>;
61
+ context: React.ContextType<typeof ControlsHeightContext>;
61
62
  buttonRef: React.RefObject<HTMLButtonElement>;
62
63
  render(): JSX.Element;
63
64
  }
@@ -24,6 +24,8 @@
24
24
  border-radius: var(--ring-border-radius);
25
25
 
26
26
  box-shadow: button-shadow var(--ring-borders-color);
27
+
28
+ line-height: normal;
27
29
  }
28
30
 
29
31
  .buttonGroup .button {
@@ -103,13 +105,13 @@
103
105
  /* stylelint-disable-next-line selector-max-specificity */
104
106
  .buttonGroup .button.button.active {
105
107
  border-radius: var(--ring-border-radius);
106
- box-shadow: button-shadow var(--ring-main-color);
108
+ box-shadow: inset 0 0 0 2px var(--ring-main-color);
107
109
  }
108
110
 
109
111
  /* stylelint-disable-next-line selector-max-specificity */
110
112
  .buttonGroup .button:global(.focus-visible).active {
111
113
  border-radius: var(--ring-border-radius);
112
- box-shadow: button-shadow var(--ring-main-color), 0 0 0 1px var(--ring-border-hover-color);
114
+ box-shadow: inset 0 0 0 2px var(--ring-main-color), 0 0 0 1px var(--ring-border-hover-color);
113
115
  }
114
116
 
115
117
  /* stylelint-disable-next-line selector-max-specificity */
@@ -36,7 +36,7 @@
36
36
  pointer-events: none;
37
37
 
38
38
  border: 1px solid var(--ring-borders-color);
39
- border-radius: var(--ring-border-radius);
39
+ border-radius: var(--ring-border-radius-small);
40
40
  background-color: var(--ring-content-background-color);
41
41
  }
42
42
 
@@ -46,9 +46,8 @@
46
46
  width: calc(unit * 2);
47
47
  height: calc(unit * 2);
48
48
 
49
- transition: opacity var(--ring-fast-ease), transform var(--ring-fast-ease);
50
-
51
49
  opacity: 0;
50
+ color: var(--ring-white-text-color);
52
51
 
53
52
  & svg {
54
53
  position: absolute;
@@ -60,8 +59,8 @@
60
59
  .check {
61
60
  composes: icon;
62
61
 
63
- top: calc(unit * -1.5);
64
- left: 1px;
62
+ top: -1px;
63
+ left: -1px;
65
64
  }
66
65
 
67
66
  .minus {
@@ -88,20 +87,17 @@
88
87
 
89
88
  /* stylelint-disable-next-line selector-max-specificity */
90
89
  &:checked + .cell,
91
- &:indeterminate[checked] + .cell,
92
- &:indeterminate[data-checked="true"] + .cell {
93
- border-color: var(--ring-border-hover-color);
94
- background-color: var(--ring-selected-background-color);
90
+ &:indeterminate + .cell {
91
+ border-color: transparent;
92
+ background-color: var(--ring-main-color);
95
93
  }
96
94
 
97
95
  /* stylelint-disable-next-line selector-max-specificity */
98
96
  &:checked + .cell .check {
99
- transform: translateY(unit);
100
-
101
97
  opacity: 1;
102
98
  }
103
99
 
104
- &:focus + .cell,
100
+ &:global(.focus-visible) + .cell,
105
101
  &.focus + .cell {
106
102
  transition: background-color var(--ring-ease);
107
103
 
@@ -1,7 +1,7 @@
1
1
  import React, { PureComponent } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import classNames from 'classnames';
4
- import checkmarkIcon from '@jetbrains/icons/checkmark';
4
+ import checkmarkIcon from '@jetbrains/icons/checkmark-14px';
5
5
  import minusIcon from '@jetbrains/icons/remove-10px';
6
6
  import Icon from '../icon/icon';
7
7
  import styles from './checkbox.css';
@@ -1,6 +1,6 @@
1
1
  import angular from 'angular';
2
2
 
3
- import checkmarkIcon from '@jetbrains/icons/checkmark';
3
+ import checkmarkIcon from '@jetbrains/icons/checkmark-14px';
4
4
 
5
5
  import IconNG from '../icon-ng/icon-ng';
6
6
  import proxyAttrs from '../proxy-attrs/proxy-attrs';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { render } from 'react-dom';
2
+ import { render } from '../global/react-render-adapter';
3
3
  import Confirm from '../confirm/confirm';
4
4
  /**
5
5
  * @name Confirm Service
@@ -31,12 +31,10 @@ export default class DataListContainer<T extends SelectionItem> extends Componen
31
31
  onMouseMove: () => void;
32
32
  onKeyDown: (e: KeyboardEvent) => void;
33
33
  render(): JSX.Element;
34
- context: any;
34
+ context: unknown;
35
35
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T>>>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
36
36
  forceUpdate(callback?: (() => void) | undefined): void;
37
- readonly props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T>>>> & Readonly<{
38
- children?: React.ReactNode;
39
- }>;
37
+ readonly props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T>>>>;
40
38
  refs: {
41
39
  [key: string]: React.ReactInstance;
42
40
  };
@@ -60,12 +58,10 @@ export default class DataListContainer<T extends SelectionItem> extends Componen
60
58
  onMouseMove: () => void;
61
59
  onKeyDown: (e: KeyboardEvent) => void;
62
60
  render(): JSX.Element;
63
- context: any;
61
+ context: unknown;
64
62
  setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T>>>>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
65
63
  forceUpdate(callback?: (() => void) | undefined): void;
66
- readonly props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T>>>> & Readonly<{
67
- children?: React.ReactNode;
68
- }>;
64
+ readonly props: Readonly<import("../table/disable-hover-hoc").DisableHoverProps<import("../table/selection-shortcuts-hoc").SelectionShortcutsProps<T, FocusableProps<T>>>>;
69
65
  refs: {
70
66
  [key: string]: React.ReactInstance;
71
67
  };
@@ -1,4 +1,5 @@
1
1
  @import "../global/variables.css";
2
+ @import "../global/global.css";
2
3
 
3
4
  @value unit from "../global/global.css";
4
5
  @value cellSize: calc(unit * 3);
@@ -76,7 +76,6 @@ export default class DatePopup extends Component {
76
76
  if (this.state.text && prevState.active) {
77
77
  this.confirm(prevState.active);
78
78
  }
79
- // eslint-disable-next-line react/no-did-update-set-state
80
79
  this.setState({ text: null });
81
80
  }
82
81
  }
@@ -24,7 +24,7 @@ export default class Dialog extends PureComponent<DialogProps> {
24
24
  label: PropTypes.Requireable<string>;
25
25
  className: PropTypes.Requireable<string>;
26
26
  contentClassName: PropTypes.Requireable<string>;
27
- children: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
27
+ children: PropTypes.Requireable<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
28
28
  show: PropTypes.Validator<boolean>;
29
29
  showCloseButton: PropTypes.Requireable<boolean>;
30
30
  closeButtonInside: PropTypes.Requireable<boolean>;
@@ -6,7 +6,7 @@ export interface AnchorProps {
6
6
  active: boolean;
7
7
  pinned: boolean;
8
8
  }
9
- export interface DropdownProps extends HTMLAttributes<HTMLElement> {
9
+ export interface DropdownProps extends Omit<HTMLAttributes<HTMLElement>, 'children'> {
10
10
  anchor: ReactElement | readonly ReactElement[] | string | ((props: AnchorProps) => ReactNode);
11
11
  children: ReactElement<PopupAttrs> | ((props: Omit<PopupAttrs, 'children'>) => ReactNode);
12
12
  initShown: boolean;
@@ -32,7 +32,7 @@ export default class Dropdown extends Component<DropdownProps, DropdownState> {
32
32
  * Can be string, React element, or a function accepting an object with {active, pinned} properties and returning a React element
33
33
  * React element should render some interactive HTML element like `button` or `a`
34
34
  */
35
- anchor: PropTypes.Validator<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
35
+ anchor: PropTypes.Validator<string | number | boolean | PropTypes.ReactElementLike | PropTypes.ReactNodeArray | ((...args: any[]) => any)>;
36
36
  children: PropTypes.Validator<PropTypes.ReactElementLike | ((...args: any[]) => any)>;
37
37
  initShown: PropTypes.Requireable<boolean>;
38
38
  className: PropTypes.Requireable<string>;
@@ -1,8 +1,8 @@
1
1
  import angular from 'angular';
2
2
 
3
3
  import React from 'react';
4
- import {render, unmountComponentAtNode} from 'react-dom';
5
4
 
5
+ import {render, unmountComponentAtNode} from './react-render-adapter';
6
6
  import RingAngularComponent from './ring-angular-component';
7
7
 
8
8
  import DomRenderer from './react-dom-renderer';
@@ -1,4 +1,5 @@
1
1
  export interface PromiseWithTimeoutConfig {
2
2
  error?: Error | null | undefined;
3
+ onTimeout?: () => void | undefined;
3
4
  }
4
- export default function promiseWithTimeout<T>(promise: Promise<T>, timeout: number, { error }: PromiseWithTimeoutConfig): Promise<unknown>;
5
+ export default function promiseWithTimeout<T>(promise: Promise<T>, timeout: number, { error, onTimeout }: PromiseWithTimeoutConfig): Promise<unknown>;
@@ -1,8 +1,11 @@
1
1
  // Useful for using fetch with timeout
2
2
  // https://github.com/github/fetch/issues/175#issuecomment-284787564
3
- export default function promiseWithTimeout(promise, timeout, { error }) {
3
+ export default function promiseWithTimeout(promise, timeout, { error, onTimeout = () => { } }) {
4
4
  return new Promise((resolve, reject) => {
5
- setTimeout(() => reject(error || new Error('Timeout')), timeout);
5
+ setTimeout(() => {
6
+ onTimeout();
7
+ reject(error || new Error('Timeout'));
8
+ }, timeout);
6
9
  promise.then(resolve, reject);
7
10
  });
8
11
  }
@@ -0,0 +1,29 @@
1
+ import type { ReactChild, ReactElement, ReactNode } from 'react';
2
+ import { unmountComponentAtNode as legacyUnmountComponentAtNode } from 'react-dom';
3
+ export declare let render: (element: ReactElement, container: Element | DocumentFragment) => void;
4
+ export declare let unmountComponentAtNode: typeof legacyUnmountComponentAtNode;
5
+ export declare let hydrate: (element: ReactElement, container: Element | Document) => void;
6
+ interface Root {
7
+ render(children: ReactChild | Iterable<ReactNode>): void;
8
+ unmount(): void;
9
+ }
10
+ interface RootOptions {
11
+ /**
12
+ * Prefix for `useId`.
13
+ */
14
+ identifierPrefix?: string;
15
+ onRecoverableError?: (error: unknown) => void;
16
+ }
17
+ interface HydrationOptions {
18
+ /**
19
+ * Prefix for `useId`.
20
+ */
21
+ identifierPrefix?: string;
22
+ onRecoverableError?: (error: unknown) => void;
23
+ }
24
+ interface Client {
25
+ createRoot(container: Element | DocumentFragment, options?: RootOptions): Root;
26
+ hydrateRoot(container: Element | Document, initialChildren: ReactChild | Iterable<ReactNode>, options?: HydrationOptions): Root;
27
+ }
28
+ export declare function setClient({ createRoot, hydrateRoot }: Client): void;
29
+ export {};
@@ -0,0 +1,36 @@
1
+ // Allows overriding ReactDOM.render when using React 18:
2
+ // import * as client from 'react-dom/client'
3
+ // import {setClient} from '@jetbrains/ring-ui/components/global/react-render-adapter'
4
+ //
5
+ // setClient(client)
6
+ import {
7
+ render as legacyRender,
8
+ unmountComponentAtNode as legacyUnmountComponentAtNode,
9
+ hydrate as legacyHydrate
10
+ } from 'react-dom';
11
+
12
+ /* eslint-disable import/no-mutable-exports */
13
+ export let render = legacyRender;
14
+ export let unmountComponentAtNode = legacyUnmountComponentAtNode;
15
+ export let hydrate = legacyHydrate;
16
+ /* eslint-enable */
17
+
18
+ export function setClient({createRoot, hydrateRoot}) {
19
+ const roots = new WeakMap();
20
+
21
+ render = (element, container) => {
22
+ let root = roots.get(container);
23
+ if (root == null) {
24
+ root = createRoot(container);
25
+ roots.set(container, root);
26
+ }
27
+ root.render(element);
28
+ };
29
+
30
+ unmountComponentAtNode = container => roots.get(container)?.unmount();
31
+
32
+ hydrate = (element, container) => {
33
+ const root = hydrateRoot(container, element);
34
+ roots.set(container, root);
35
+ };
36
+ }
@@ -1,4 +1,4 @@
1
- import { Component } from 'react';
1
+ import { Component, RefAttributes } from 'react';
2
2
  export interface RerenderableComponent<P, S> extends Component<P, S> {
3
3
  node?: HTMLElement | null;
4
4
  }
@@ -13,18 +13,14 @@ export interface RerenderableComponentClass<P, S> {
13
13
  */
14
14
  export default function rerenderHOC<P, S>(ComposedComponent: RerenderableComponentClass<P, S>): {
15
15
  new (props: P): {
16
- _propsCache: Readonly<P> & Readonly<{
17
- children?: import("react").ReactNode;
18
- }>;
19
- rerender(props?: Partial<P>, callback?: (() => void) | undefined): void | Element | Component<P, any, any>;
16
+ _propsCache: P & RefAttributes<unknown>;
17
+ rerender(props?: Partial<P>, callback?: (() => void) | undefined): void;
20
18
  node?: HTMLElement | null | undefined;
21
- context: any;
19
+ context: unknown;
22
20
  setState<K extends keyof S>(state: S | ((prevState: Readonly<S>, props: Readonly<P>) => S | Pick<S, K> | null) | Pick<S, K> | null, callback?: (() => void) | undefined): void;
23
21
  forceUpdate(callback?: (() => void) | undefined): void;
24
22
  render(): import("react").ReactNode;
25
- readonly props: Readonly<P> & Readonly<{
26
- children?: import("react").ReactNode;
27
- }>;
23
+ readonly props: Readonly<P>;
28
24
  state: Readonly<S>;
29
25
  refs: {
30
26
  [key: string]: import("react").ReactInstance;
@@ -1,5 +1,6 @@
1
1
  import { createElement } from 'react';
2
- import { render } from 'react-dom';
2
+ import { render } from './react-render-adapter';
3
+ import composeRefs from './composeRefs';
3
4
  /**
4
5
  * Wraps a component to add a "rerender" method
5
6
  * @param ComposedComponent
@@ -20,7 +21,8 @@ export default function rerenderHOC(ComposedComponent) {
20
21
  }
21
22
  }
22
23
  this._propsCache = Object.assign({}, this.props, this._propsCache, props);
23
- return render(createElement(this.constructor, this._propsCache), container, callback);
24
+ this._propsCache.ref = composeRefs(this._propsCache.ref, callback);
25
+ render(createElement(this.constructor, this._propsCache), container);
24
26
  }
25
27
  };
26
28
  }
@@ -1,6 +1,8 @@
1
- import React, { useMemo, useState, useEffect, forwardRef } from 'react';
1
+ import React, { useMemo, useState, useEffect, forwardRef, useContext } from 'react';
2
2
  import classNames from 'classnames';
3
- import { PopupTarget } from '../popup/popup.target';
3
+ import { createPortal } from 'react-dom';
4
+ import { PopupTarget, PopupTargetContext } from '../popup/popup.target';
5
+ import { getPopupContainer } from '../popup/popup';
4
6
  import styles from './variables_dark.css';
5
7
  import getUID from './get-uid';
6
8
  var Theme;
@@ -23,9 +25,14 @@ export const ThemeProvider = forwardRef(function ThemeProvider({ theme = Theme.A
23
25
  const systemTheme = useTheme();
24
26
  const resolvedTheme = theme === Theme.AUTO ? systemTheme : theme;
25
27
  const id = useMemo(() => getUID('popups-with-theme-'), []);
26
- return (<div ref={ref} className={classNames(className, { [styles.dark]: resolvedTheme === Theme.DARK })} {...restProps}>{passToPopups
28
+ const themeClasses = classNames({ [styles.dark]: resolvedTheme === Theme.DARK });
29
+ const parentTarget = useContext(PopupTargetContext);
30
+ return (<div ref={ref} className={classNames(className, themeClasses)} {...restProps}>{passToPopups
27
31
  ? (<PopupTarget id={id}>
28
- {target => <>{children}{target}</>}
32
+ {target => (<>
33
+ {children}
34
+ {createPortal(target, parentTarget && getPopupContainer(parentTarget) || document.body)}
35
+ </>)}
29
36
  </PopupTarget>)
30
37
  : children}
31
38
  </div>);
@@ -51,7 +51,6 @@
51
51
  --ring-sidebar-background-color: #f7f9fa;
52
52
  --ring-selected-background-color: #d4edff;
53
53
  --ring-hover-background-color: #ebf6ff;
54
- --ring-message-background-color: #111314;
55
54
  --ring-navigation-background-color: #fff;
56
55
  --ring-tag-background-color: #e6ecf2;
57
56
  --ring-tag-hover-background-color: #d3dae0;
@@ -41,7 +41,6 @@ export interface RingCSSProperties {
41
41
  '--ring-sidebar-background-color'?: Property.BackgroundColor;
42
42
  '--ring-selected-background-color'?: Property.BackgroundColor;
43
43
  '--ring-hover-background-color'?: Property.BackgroundColor;
44
- '--ring-message-background-color'?: Property.BackgroundColor;
45
44
  '--ring-navigation-background-color'?: Property.BackgroundColor;
46
45
  '--ring-tag-background-color'?: Property.BackgroundColor;
47
46
  '--ring-tag-hover-background-color'?: Property.BackgroundColor;
@@ -13,7 +13,7 @@
13
13
  --ring-main-hover-color: #007ee5;
14
14
  --ring-icon-error-color: #db5860;
15
15
  --ring-icon-warning-color: #eda200;
16
- --ring-icon-success-color: #59a869;
16
+ --ring-icon-success-color: #47d464;
17
17
  --ring-popup-border-components: 0, 42, 76;
18
18
  --ring-popup-border-color: rgba(var(--ring-popup-border-components), 0.1);
19
19
  --ring-popup-shadow-color: rgba(var(--ring-popup-border-components), 0.15);
@@ -40,7 +40,6 @@
40
40
  --ring-sidebar-background-color: #28343d;
41
41
  --ring-selected-background-color: #062640;
42
42
  --ring-hover-background-color: #0b1a26;
43
- --ring-message-background-color: var(--ring-popup-background-color);
44
43
  --ring-navigation-background-color: #111314;
45
44
  --ring-tag-background-color: #3e4d59;
46
45
  --ring-tag-hover-background-color: #333e47;
@@ -2,7 +2,7 @@
2
2
 
3
3
  @value dark from "../global/variables_dark.css";
4
4
  @value unit from "../global/global.css";
5
- @value active from "../link/link.css";
5
+ @value link, active from "../link/link.css";
6
6
  @value height: calc(unit * 8);
7
7
  @value compensate: 3px;
8
8
  @value compensated: calc(height - compensate);
@@ -38,7 +38,7 @@
38
38
  }
39
39
 
40
40
  /* override link */
41
- & a {
41
+ & .link {
42
42
  color: var(--ring-header-link-color);
43
43
  }
44
44
 
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
3
3
  import { Size } from '../avatar/avatar';
4
4
  import { ListDataItem } from '../list/consts';
5
5
  import { AuthUser } from '../auth/auth';
6
- import { LinkProps } from '../link/link';
6
+ import { ClickableLinkProps } from '../link/clickableLink';
7
7
  export interface ProfileTranslations {
8
8
  applyChangedUser?: string | null | undefined;
9
9
  login?: string | null | undefined;
@@ -24,7 +24,7 @@ export interface ProfileProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSe
24
24
  onLogout?: (() => void) | null | undefined;
25
25
  onSwitchUser?: (() => void) | null | undefined;
26
26
  profileUrl?: string | undefined;
27
- LinkComponent?: ComponentType<LinkProps> | null | undefined;
27
+ LinkComponent?: ComponentType<ClickableLinkProps> | null | undefined;
28
28
  user?: AuthUser | null | undefined | void;
29
29
  round?: boolean | null | undefined;
30
30
  showLogIn?: boolean | null | undefined;
@@ -68,6 +68,6 @@ export default class Profile extends PureComponent<ProfileProps> {
68
68
  };
69
69
  static defaultProps: ProfileProps;
70
70
  static Size: typeof Size;
71
- render(): React.ReactNode;
71
+ render(): string | number | boolean | JSX.Element | React.ReactFragment | null | undefined;
72
72
  }
73
73
  export declare type ProfileAttrs = JSX.LibraryManagedAttributes<typeof Profile, ProfileProps>;