@jetbrains/ring-ui 5.0.0-beta.2 → 5.0.0-beta.22

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 (632) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/babel.config.js +1 -12
  3. package/components/alert/alert.css +5 -15
  4. package/components/alert/alert.d.ts +3 -0
  5. package/components/alert/{alert.jsx → alert.js} +8 -7
  6. package/components/alert/container.css +0 -2
  7. package/components/alert/{container.jsx → container.js} +0 -0
  8. package/components/alert-service/alert-service.examples.css +5 -3
  9. package/components/alert-service/{alert-service.jsx → alert-service.js} +1 -1
  10. package/components/analytics/analytics__ga-plugin.d.ts +1 -1
  11. package/components/analytics/analytics__ga-plugin.js +11 -3
  12. package/components/auth/auth__core.d.ts +3 -1
  13. package/components/auth/auth__core.js +47 -16
  14. package/components/auth/down-notification.css +1 -1
  15. package/components/auth/{down-notification.jsx → down-notification.js} +0 -0
  16. package/components/auth/{iframe-flow.jsx → iframe-flow.js} +0 -0
  17. package/components/auth-dialog/auth-dialog.d.ts +11 -0
  18. package/components/auth-dialog/{auth-dialog.jsx → auth-dialog.js} +33 -2
  19. package/components/auth-dialog-service/{auth-dialog-service.jsx → auth-dialog-service.js} +1 -1
  20. package/components/autofocus-ng/autofocus-ng.js +1 -1
  21. package/components/autofocus-ng/autofocus-ng.test.js +1 -1
  22. package/components/avatar/{avatar-example-datauri.jsx → avatar-example-datauri.js} +0 -0
  23. package/components/avatar/avatar.d.ts +1 -0
  24. package/components/avatar/{avatar.jsx → avatar.js} +0 -0
  25. package/components/avatar/{fallback-avatar.jsx → fallback-avatar.js} +2 -2
  26. package/components/badge/{badge.jsx → badge.js} +0 -0
  27. package/components/button/button.css +95 -206
  28. package/components/button/button.d.ts +8 -8
  29. package/components/button/{button.jsx → button.js} +6 -8
  30. package/components/button/button__classes.d.ts +1 -1
  31. package/components/button/button__classes.js +4 -7
  32. package/components/button-group/button-group.css +138 -19
  33. package/components/button-group/button-group.d.ts +4 -1
  34. package/components/button-group/{button-group.jsx → button-group.js} +3 -3
  35. package/components/button-group/{caption.jsx → caption.js} +0 -0
  36. package/components/button-group-ng/button-group-ng.css +1 -0
  37. package/components/button-group-ng/button-group-ng.examples.js +1 -1
  38. package/components/button-ng/button-ng.examples.js +6 -7
  39. package/components/button-ng/button-ng.js +6 -25
  40. package/components/button-set/button-set.css +1 -0
  41. package/components/button-set/{button-set.jsx → button-set.js} +0 -0
  42. package/components/button-toolbar/button-toolbar.css +2 -0
  43. package/components/button-toolbar/{button-toolbar.jsx → button-toolbar.js} +0 -0
  44. package/components/checkbox/checkbox.css +16 -13
  45. package/components/checkbox/{checkbox.jsx → checkbox.js} +1 -1
  46. package/components/checkbox-ng/checkbox-ng.js +1 -1
  47. package/components/code/{code.jsx → code.js} +0 -0
  48. package/components/confirm/{confirm.jsx → confirm.js} +0 -0
  49. package/components/confirm-service/{confirm-service.jsx → confirm-service.js} +1 -1
  50. package/components/content-layout/{content-layout.jsx → content-layout.js} +0 -0
  51. package/components/content-layout/{sidebar.jsx → sidebar.js} +0 -0
  52. package/components/contenteditable/{contenteditable.jsx → contenteditable.js} +0 -0
  53. package/components/data-list/data-list.d.ts +4 -8
  54. package/components/data-list/{data-list.jsx → data-list.js} +0 -0
  55. package/components/data-list/{data-list.mock.jsx → data-list.mock.js} +0 -0
  56. package/components/data-list/{item.jsx → item.js} +0 -0
  57. package/components/data-list/{title.jsx → title.js} +0 -0
  58. package/components/date-picker/{date-input.jsx → date-input.js} +2 -1
  59. package/components/date-picker/date-picker.css +3 -1
  60. package/components/date-picker/{date-picker.jsx → date-picker.js} +0 -0
  61. package/components/date-picker/{date-popup.jsx → date-popup.js} +0 -1
  62. package/components/date-picker/{day.jsx → day.js} +0 -0
  63. package/components/date-picker/{month-names.jsx → month-names.js} +0 -0
  64. package/components/date-picker/{month-slider.jsx → month-slider.js} +0 -0
  65. package/components/date-picker/{month.jsx → month.js} +0 -0
  66. package/components/date-picker/{months.jsx → months.js} +0 -0
  67. package/components/date-picker/{weekdays.jsx → weekdays.js} +0 -0
  68. package/components/date-picker/{years.jsx → years.js} +0 -0
  69. package/components/dialog/dialog.css +10 -3
  70. package/components/dialog/dialog.d.ts +1 -1
  71. package/components/dialog/{dialog.jsx → dialog.js} +0 -0
  72. package/components/dialog-ng/dialog-ng__template.js +1 -0
  73. package/components/dropdown/{anchor.jsx → anchor.js} +0 -0
  74. package/components/dropdown/dropdown.d.ts +2 -2
  75. package/components/dropdown/{dropdown.jsx → dropdown.js} +0 -0
  76. package/components/dropdown-menu/{dropdown-menu.jsx → dropdown-menu.js} +0 -0
  77. package/components/error-bubble/error-bubble-legacy.css +1 -1
  78. package/components/error-bubble/error-bubble.css +1 -1
  79. package/components/error-bubble/{error-bubble.jsx → error-bubble.js} +0 -0
  80. package/components/error-message/{error-message.jsx → error-message.js} +0 -0
  81. package/components/footer/{footer.jsx → footer.js} +0 -0
  82. package/components/global/angular-component-factory.js +1 -1
  83. package/components/global/controls-height.d.ts +7 -0
  84. package/components/global/controls-height.js +8 -0
  85. package/components/global/{create-stateful-context.jsx → create-stateful-context.js} +0 -0
  86. package/components/global/{focus-sensor-hoc.jsx → focus-sensor-hoc.js} +0 -0
  87. package/components/global/promise-with-timeout.d.ts +2 -1
  88. package/components/global/promise-with-timeout.js +5 -2
  89. package/components/global/{react-dom-renderer.jsx → react-dom-renderer.js} +0 -0
  90. package/components/global/react-render-adapter.d.ts +29 -0
  91. package/components/global/react-render-adapter.js +36 -0
  92. package/components/global/rerender-hoc.d.ts +5 -9
  93. package/components/global/rerender-hoc.js +4 -2
  94. package/components/global/theme.d.ts +7 -20
  95. package/components/global/theme.js +40 -0
  96. package/components/global/variables.css +30 -26
  97. package/components/global/variables.d.ts +10 -9
  98. package/components/global/variables_dark.css +67 -0
  99. package/components/grid/{col.jsx → col.js} +0 -0
  100. package/components/grid/{grid.jsx → grid.js} +0 -0
  101. package/components/grid/{row.jsx → row.js} +0 -0
  102. package/components/group/{group.jsx → group.js} +0 -0
  103. package/components/header/header.css +19 -10
  104. package/components/header/header.d.ts +7 -69
  105. package/components/header/{header.jsx → header.js} +10 -9
  106. package/components/header/{logo.jsx → logo.js} +0 -0
  107. package/components/header/profile.d.ts +3 -3
  108. package/components/header/{profile.jsx → profile.js} +0 -0
  109. package/components/header/{services-link.jsx → services-link.js} +0 -0
  110. package/components/header/services.css +3 -3
  111. package/components/header/services.d.ts +5 -0
  112. package/components/header/{services.jsx → services.js} +8 -2
  113. package/components/header/{smart-profile.jsx → smart-profile.js} +0 -0
  114. package/components/header/{smart-services.jsx → smart-services.js} +0 -0
  115. package/components/header/tray-icon.d.ts +18 -575
  116. package/components/header/{tray-icon.jsx → tray-icon.js} +0 -0
  117. package/components/header/{tray.jsx → tray.js} +0 -0
  118. package/components/heading/heading.css +4 -1
  119. package/components/heading/{heading.jsx → heading.js} +0 -0
  120. package/components/icon/icon.css +1 -1
  121. package/components/icon/{icon.jsx → icon.js} +0 -0
  122. package/components/icon/{icon__svg.jsx → icon__svg.js} +0 -0
  123. package/components/input/input.css +86 -149
  124. package/components/input/input.d.ts +15 -17
  125. package/components/input/{input.jsx → input.js} +29 -33
  126. package/components/input-ng/input-ng.examples.js +1 -1
  127. package/components/input-ng/input-ng.js +45 -49
  128. package/components/island/adaptive-island-hoc.d.ts +6 -10
  129. package/components/island/{adaptive-island-hoc.jsx → adaptive-island-hoc.js} +2 -2
  130. package/components/island/content.d.ts +33 -2
  131. package/components/island/{content.jsx → content.js} +7 -11
  132. package/components/island/{header.jsx → header.js} +7 -4
  133. package/components/island/island.css +8 -5
  134. package/components/island/island.d.ts +6 -10
  135. package/components/island/{island.jsx → island.js} +0 -0
  136. package/components/island-legacy/{content-legacy.jsx → content-legacy.js} +0 -0
  137. package/components/island-legacy/{header-legacy.jsx → header-legacy.js} +0 -0
  138. package/components/island-legacy/island-legacy.css +1 -1
  139. package/components/island-legacy/{island-legacy.jsx → island-legacy.js} +0 -0
  140. package/components/link/clickableLink.d.ts +1 -1
  141. package/components/link/{clickableLink.jsx → clickableLink.js} +0 -0
  142. package/components/link/link.css +0 -2
  143. package/components/link/link.d.ts +14 -22
  144. package/components/link/{link.jsx → link.js} +0 -0
  145. package/components/list/consts.d.ts +3 -1
  146. package/components/list/list.css +1 -0
  147. package/components/list/list.d.ts +3 -1
  148. package/components/list/{list.jsx → list.js} +12 -13
  149. package/components/list/{list__custom.jsx → list__custom.js} +0 -0
  150. package/components/list/{list__hint.jsx → list__hint.js} +0 -0
  151. package/components/list/{list__item.jsx → list__item.js} +0 -0
  152. package/components/list/{list__link.jsx → list__link.js} +2 -2
  153. package/components/list/{list__separator.jsx → list__separator.js} +0 -0
  154. package/components/list/{list__title.jsx → list__title.js} +0 -0
  155. package/components/loader/{loader.jsx → loader.js} +0 -0
  156. package/components/loader-inline/loader-inline.css +14 -0
  157. package/components/loader-inline/loader-inline.d.ts +4 -41
  158. package/components/loader-inline/{loader-inline.jsx → loader-inline.js} +3 -11
  159. package/components/loader-inline-ng/loader-inline-ng.js +1 -17
  160. package/components/loader-inline-ng/loader-inline-ng.test.js +0 -11
  161. package/components/loader-screen/{loader-screen.jsx → loader-screen.js} +0 -0
  162. package/components/login-dialog/{login-dialog.jsx → login-dialog.js} +0 -0
  163. package/components/login-dialog/{service.jsx → service.js} +1 -1
  164. package/components/markdown/code.d.ts +6 -13
  165. package/components/markdown/{code.jsx → code.js} +2 -2
  166. package/components/markdown/heading.d.ts +5 -9
  167. package/components/markdown/{heading.jsx → heading.js} +2 -2
  168. package/components/markdown/link.d.ts +4 -8
  169. package/components/markdown/{link.jsx → link.js} +1 -1
  170. package/components/markdown/markdown.d.ts +2 -3
  171. package/components/markdown/{markdown.jsx → markdown.js} +14 -11
  172. package/components/message/message.css +18 -28
  173. package/components/message/message.d.ts +3 -0
  174. package/components/message/{message.jsx → message.js} +42 -22
  175. package/components/pager/{pager.jsx → pager.js} +2 -8
  176. package/components/panel/{panel.jsx → panel.js} +0 -0
  177. package/components/popup/popup.css +1 -1
  178. package/components/popup/popup.d.ts +7 -1
  179. package/components/popup/{popup.jsx → popup.js} +4 -2
  180. package/components/popup/popup.target.d.ts +2 -1
  181. package/components/popup/{popup.target.jsx → popup.target.js} +0 -0
  182. package/components/popup/position.d.ts +1 -1
  183. package/components/popup/position.js +2 -2
  184. package/components/popup-menu/popup-menu.d.ts +1 -0
  185. package/components/popup-menu/{popup-menu.jsx → popup-menu.js} +0 -0
  186. package/components/progress-bar/progress-bar.css +8 -12
  187. package/components/progress-bar/progress-bar.d.ts +0 -4
  188. package/components/progress-bar/{progress-bar.jsx → progress-bar.js} +1 -6
  189. package/components/progress-bar-ng/progress-bar-ng.examples.js +3 -2
  190. package/components/query-assist/query-assist.css +48 -64
  191. package/components/query-assist/query-assist.d.ts +5 -14
  192. package/components/query-assist/{query-assist.jsx → query-assist.js} +6 -12
  193. package/components/query-assist/{query-assist__suggestions.jsx → query-assist__suggestions.js} +0 -0
  194. package/components/radio/radio.css +10 -4
  195. package/components/radio/radio.d.ts +1 -1
  196. package/components/radio/{radio.jsx → radio.js} +0 -0
  197. package/components/radio/{radio__item.jsx → radio__item.js} +0 -0
  198. package/components/select/select-popup.css +5 -1
  199. package/components/select/select.css +23 -38
  200. package/components/select/select.d.ts +16 -20
  201. package/components/select/{select.jsx → select.js} +37 -47
  202. package/components/select/{select__filter.jsx → select__filter.js} +2 -1
  203. package/components/select/select__popup.d.ts +1 -1
  204. package/components/select/{select__popup.jsx → select__popup.js} +1 -2
  205. package/components/select-ng/select-ng.examples.js +1 -0
  206. package/components/select-ng/select-ng.js +19 -6
  207. package/components/select-ng/select-ng.test.js +1 -1
  208. package/components/select-ng/select-ng__lazy.js +13 -9
  209. package/components/select-ng/select-ng__lazy.test.js +3 -1
  210. package/components/shortcuts/shortcuts-hoc.d.ts +4 -8
  211. package/components/shortcuts/{shortcuts-hoc.jsx → shortcuts-hoc.js} +0 -0
  212. package/components/shortcuts/shortcuts.d.ts +1 -1
  213. package/components/shortcuts-hint-ng/shortcuts-hint-ng.css +1 -1
  214. package/components/shortcuts-hint-ng/shortcuts-hint-ng.examples.js +1 -1
  215. package/components/tab-trap/tab-trap.d.ts +1 -1
  216. package/components/tab-trap/{tab-trap.jsx → tab-trap.js} +0 -0
  217. package/components/table/{cell.jsx → cell.js} +0 -0
  218. package/components/table/disable-hover-hoc.d.ts +4 -8
  219. package/components/table/{disable-hover-hoc.jsx → disable-hover-hoc.js} +0 -0
  220. package/components/table/{header-cell.jsx → header-cell.js} +0 -0
  221. package/components/table/header.d.ts +8 -1
  222. package/components/table/{header.jsx → header.js} +0 -0
  223. package/components/table/{multitable.jsx → multitable.js} +0 -0
  224. package/components/table/row-with-focus-sensor.d.ts +4 -4
  225. package/components/table/{row-with-focus-sensor.jsx → row-with-focus-sensor.js} +4 -4
  226. package/components/table/row.d.ts +1 -0
  227. package/components/table/{row.jsx → row.js} +0 -0
  228. package/components/table/{selection-shortcuts-hoc.jsx → selection-shortcuts-hoc.js} +0 -0
  229. package/components/table/smart-table.d.ts +1 -0
  230. package/components/table/{smart-table.jsx → smart-table.js} +7 -3
  231. package/components/table/table.d.ts +4 -8
  232. package/components/table/{table.jsx → table.js} +0 -0
  233. package/components/tabs/{collapsible-more.jsx → collapsible-more.js} +2 -2
  234. package/components/tabs/{collapsible-tab.jsx → collapsible-tab.js} +2 -2
  235. package/components/tabs/collapsible-tabs.d.ts +2 -2
  236. package/components/tabs/{collapsible-tabs.jsx → collapsible-tabs.js} +1 -1
  237. package/components/tabs/custom-item.d.ts +1 -1
  238. package/components/tabs/{custom-item.jsx → custom-item.js} +0 -0
  239. package/components/tabs/dumb-tabs.d.ts +6 -109
  240. package/components/tabs/{dumb-tabs.jsx → dumb-tabs.js} +5 -9
  241. package/components/tabs/smart-tabs.d.ts +4 -4
  242. package/components/tabs/{smart-tabs.jsx → smart-tabs.js} +9 -3
  243. package/components/tabs/tab-link.d.ts +1 -1
  244. package/components/tabs/{tab-link.jsx → tab-link.js} +0 -0
  245. package/components/tabs/tab.d.ts +3 -1
  246. package/components/tabs/{tab.jsx → tab.js} +0 -0
  247. package/components/tabs/tabs.css +17 -28
  248. package/components/tabs-ng/tabs-ng.examples.js +11 -3
  249. package/components/tabs-ng/tabs-ng.js +1 -4
  250. package/components/tabs-ng/tabs-ng__template.js +1 -1
  251. package/components/tag/tag.css +31 -8
  252. package/components/tag/tag.d.ts +1 -0
  253. package/components/tag/{tag.jsx → tag.js} +2 -2
  254. package/components/tags-input/tags-input.css +10 -4
  255. package/components/tags-input/tags-input.d.ts +4 -8
  256. package/components/tags-input/{tags-input.jsx → tags-input.js} +0 -0
  257. package/components/tags-list/tags-list.d.ts +1 -1
  258. package/components/tags-list/{tags-list.jsx → tags-list.js} +0 -0
  259. package/components/text/{text.jsx → text.js} +0 -0
  260. package/components/toggle/toggle.css +61 -35
  261. package/components/toggle/toggle.d.ts +9 -89
  262. package/components/toggle/{toggle.jsx → toggle.js} +7 -7
  263. package/components/tooltip/tooltip.css +7 -0
  264. package/components/tooltip/tooltip.d.ts +1 -0
  265. package/components/tooltip/{tooltip.jsx → tooltip.js} +3 -2
  266. package/components/tooltip-ng/tooltip-ng.js +13 -10
  267. package/components/user-agreement/service.d.ts +14 -62
  268. package/components/user-agreement/{service.jsx → service.js} +1 -1
  269. package/components/user-agreement/{user-agreement.jsx → user-agreement.js} +1 -1
  270. package/components/user-card/{card.jsx → card.js} +0 -0
  271. package/components/user-card/{smart-user-card-tooltip.jsx → smart-user-card-tooltip.js} +0 -0
  272. package/components/user-card/{tooltip.jsx → tooltip.js} +0 -0
  273. package/dist/_helpers/anchor.js +3 -3
  274. package/dist/_helpers/badge.js +1 -1
  275. package/dist/_helpers/button-group.js +1 -1
  276. package/dist/_helpers/button-set.js +1 -1
  277. package/dist/_helpers/button-toolbar.js +1 -1
  278. package/dist/_helpers/button__classes.js +5 -8
  279. package/dist/_helpers/card.js +1 -1
  280. package/dist/_helpers/checkbox.js +1 -1
  281. package/dist/_helpers/date-picker.js +1 -1
  282. package/dist/_helpers/dialog__body-scroll-preventer.js +3 -2
  283. package/dist/_helpers/error-message.js +1 -1
  284. package/dist/_helpers/footer.js +1 -1
  285. package/dist/_helpers/grid.js +1 -1
  286. package/dist/_helpers/group.js +1 -1
  287. package/dist/_helpers/header.js +1 -1
  288. package/dist/_helpers/icon.js +1 -1
  289. package/dist/_helpers/input.js +1 -1
  290. package/dist/_helpers/island.js +1 -1
  291. package/dist/_helpers/link.js +1 -1
  292. package/dist/_helpers/list.js +1 -1
  293. package/dist/_helpers/loader-inline.js +3 -0
  294. package/dist/_helpers/loader-screen.js +1 -1
  295. package/dist/_helpers/panel.js +1 -1
  296. package/dist/_helpers/query-assist__suggestions.js +1 -1
  297. package/dist/_helpers/radio.js +1 -1
  298. package/dist/_helpers/select__filter.js +6 -3
  299. package/dist/_helpers/services-link.js +2 -2
  300. package/dist/_helpers/sidebar.js +3 -2
  301. package/dist/_helpers/table.js +1 -1
  302. package/dist/_helpers/tabs.js +1 -1
  303. package/dist/_helpers/theme.js +55 -0
  304. package/dist/_helpers/title.js +2 -1
  305. package/dist/alert/alert.d.ts +3 -0
  306. package/dist/alert/alert.js +35 -21
  307. package/dist/alert/container.js +1 -1
  308. package/dist/alert-service/alert-service.js +23 -8
  309. package/dist/analytics/analytics.js +4 -3
  310. package/dist/analytics/analytics__custom-plugin.js +2 -1
  311. package/dist/analytics/analytics__fus-plugin.js +1 -0
  312. package/dist/analytics/analytics__ga-plugin.d.ts +1 -1
  313. package/dist/analytics/analytics__ga-plugin.js +15 -7
  314. package/dist/analytics/analytics__plugin-utils.js +4 -3
  315. package/dist/analytics-ng/analytics-ng.js +3 -2
  316. package/dist/auth/auth.js +22 -9
  317. package/dist/auth/auth__core.d.ts +3 -1
  318. package/dist/auth/auth__core.js +87 -38
  319. package/dist/auth/background-flow.js +2 -1
  320. package/dist/auth/down-notification.js +21 -8
  321. package/dist/auth/iframe-flow.js +4 -1
  322. package/dist/auth/landing.js +26 -13
  323. package/dist/auth/request-builder.js +1 -0
  324. package/dist/auth/response-parser.js +1 -0
  325. package/dist/auth/storage.js +22 -7
  326. package/dist/auth/token-validator.js +2 -0
  327. package/dist/auth/window-flow.js +2 -1
  328. package/dist/auth-dialog/auth-dialog.d.ts +11 -0
  329. package/dist/auth-dialog/auth-dialog.js +55 -8
  330. package/dist/auth-dialog-service/auth-dialog-service.js +5 -2
  331. package/dist/auth-ng/auth-ng.js +23 -10
  332. package/dist/autofocus-ng/autofocus-ng.js +2 -1
  333. package/dist/avatar/avatar-example-datauri.js +1 -23
  334. package/dist/avatar/avatar.d.ts +1 -0
  335. package/dist/avatar/avatar.js +5 -3
  336. package/dist/avatar/fallback-avatar.js +6 -5
  337. package/dist/avatar-editor-ng/avatar-editor-ng.js +22 -7
  338. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +1 -28
  339. package/dist/avatar-ng/avatar-ng.js +3 -0
  340. package/dist/badge/badge.js +1 -0
  341. package/dist/badge-ng/badge-ng.js +2 -0
  342. package/dist/breadcrumb-ng/breadcrumb-ng.js +4 -28
  343. package/dist/button/button.d.ts +8 -8
  344. package/dist/button/button.js +8 -8
  345. package/dist/button/button__classes.d.ts +1 -1
  346. package/dist/button/button__classes.js +0 -3
  347. package/dist/button-group/button-group.d.ts +4 -1
  348. package/dist/button-group/button-group.js +5 -3
  349. package/dist/button-group-ng/button-group-ng.js +2 -1
  350. package/dist/button-ng/button-ng.js +9 -40
  351. package/dist/button-set-ng/button-set-ng.js +1 -1
  352. package/dist/button-toolbar-ng/button-toolbar-ng.js +1 -0
  353. package/dist/caret/caret.js +2 -0
  354. package/dist/checkbox/checkbox.js +3 -1
  355. package/dist/checkbox-ng/checkbox-ng.js +4 -21
  356. package/dist/code/code.js +4 -3
  357. package/dist/confirm/confirm.js +7 -5
  358. package/dist/confirm-ng/confirm-ng.js +4 -1
  359. package/dist/confirm-service/confirm-service.js +5 -2
  360. package/dist/content-layout/content-layout.js +1 -0
  361. package/dist/content-layout/sidebar.js +1 -0
  362. package/dist/data-list/data-list.d.ts +4 -8
  363. package/dist/data-list/data-list.js +5 -8
  364. package/dist/data-list/data-list.mock.js +1 -0
  365. package/dist/data-list/item.js +11 -14
  366. package/dist/data-list/selection.js +1 -0
  367. package/dist/data-list/title.js +3 -1
  368. package/dist/data-list-ng/data-list-ng.js +6 -8
  369. package/dist/date-picker/consts.js +1 -1
  370. package/dist/date-picker/date-input.js +8 -5
  371. package/dist/date-picker/date-picker.js +11 -9
  372. package/dist/date-picker/date-popup.js +5 -4
  373. package/dist/date-picker/day.js +1 -0
  374. package/dist/date-picker/month-names.js +1 -0
  375. package/dist/date-picker/month-slider.js +1 -0
  376. package/dist/date-picker/month.js +1 -0
  377. package/dist/date-picker/months.js +1 -0
  378. package/dist/date-picker/years.js +1 -0
  379. package/dist/dialog/dialog.d.ts +1 -1
  380. package/dist/dialog/dialog.js +5 -3
  381. package/dist/dialog/dialog__body-scroll-preventer.js +1 -0
  382. package/dist/dialog-ng/dialog-ng.js +9 -6
  383. package/dist/dialog-ng/dialog-ng__template.js +1 -69
  384. package/dist/docked-panel-ng/docked-panel-ng.js +2 -1
  385. package/dist/dropdown/anchor.js +3 -1
  386. package/dist/dropdown/dropdown.d.ts +2 -2
  387. package/dist/dropdown/dropdown.js +3 -1
  388. package/dist/dropdown-menu/dropdown-menu.js +5 -3
  389. package/dist/error-bubble/error-bubble.js +3 -1
  390. package/dist/error-message/error-message.js +3 -1
  391. package/dist/error-message-ng/error-message-ng.js +3 -21
  392. package/dist/footer/footer.js +1 -0
  393. package/dist/footer-ng/footer-ng.js +3 -14
  394. package/dist/form-ng/form-ng.js +2 -4
  395. package/dist/global/angular-component-factory.js +8 -6
  396. package/dist/global/controls-height.d.ts +7 -0
  397. package/dist/global/controls-height.js +13 -0
  398. package/dist/global/create-stateful-context.js +3 -2
  399. package/dist/global/data-tests.js +2 -0
  400. package/dist/global/dom.js +1 -0
  401. package/dist/global/focus-sensor-hoc.js +1 -0
  402. package/dist/global/fuzzy-highlight.js +1 -1
  403. package/dist/global/inject-styles.js +5 -7
  404. package/dist/global/listeners.js +1 -0
  405. package/dist/global/memoize.js +2 -0
  406. package/dist/global/normalize-indent.js +2 -0
  407. package/dist/global/promise-with-timeout.d.ts +2 -1
  408. package/dist/global/promise-with-timeout.js +6 -2
  409. package/dist/global/react-dom-renderer.js +1 -0
  410. package/dist/global/react-render-adapter.d.ts +29 -0
  411. package/dist/global/react-render-adapter.js +41 -0
  412. package/dist/global/rerender-hoc.d.ts +5 -9
  413. package/dist/global/rerender-hoc.js +7 -3
  414. package/dist/global/theme.d.ts +7 -20
  415. package/dist/global/theme.js +22 -62
  416. package/dist/global/trivial-template-tag.js +2 -0
  417. package/dist/global/url.js +3 -1
  418. package/dist/global/variables.d.ts +10 -9
  419. package/dist/grid/col.js +2 -1
  420. package/dist/grid/grid.js +1 -0
  421. package/dist/grid/row.js +1 -1
  422. package/dist/group-ng/group-ng.js +1 -1
  423. package/dist/header/header.d.ts +7 -69
  424. package/dist/header/header.js +31 -31
  425. package/dist/header/logo.js +2 -0
  426. package/dist/header/profile.d.ts +3 -3
  427. package/dist/header/profile.js +6 -4
  428. package/dist/header/services-link.js +1 -0
  429. package/dist/header/services.d.ts +5 -0
  430. package/dist/header/services.js +13 -3
  431. package/dist/header/smart-profile.js +27 -27
  432. package/dist/header/smart-services.js +23 -24
  433. package/dist/header/tray-icon.d.ts +18 -575
  434. package/dist/header/tray-icon.js +6 -4
  435. package/dist/heading/heading.js +3 -3
  436. package/dist/http/http.js +4 -2
  437. package/dist/http/http.mock.js +2 -0
  438. package/dist/hub-source/hub-source.js +1 -1
  439. package/dist/hub-source/hub-source__user.js +4 -2
  440. package/dist/hub-source/hub-source__users-groups.js +3 -2
  441. package/dist/icon/icon.js +3 -3
  442. package/dist/icon/icon__svg.js +2 -0
  443. package/dist/icon/index.js +2 -0
  444. package/dist/icon-ng/icon-ng.js +7 -5
  445. package/dist/input/input.d.ts +15 -17
  446. package/dist/input/input.js +35 -42
  447. package/dist/input-ng/input-ng.js +8 -64
  448. package/dist/island/adaptive-island-hoc.d.ts +6 -10
  449. package/dist/island/adaptive-island-hoc.js +8 -5
  450. package/dist/island/content.d.ts +33 -2
  451. package/dist/island/content.js +10 -13
  452. package/dist/island/header.js +10 -6
  453. package/dist/island/island.d.ts +6 -10
  454. package/dist/island/island.js +1 -0
  455. package/dist/island-ng/island-content-ng.js +2 -16
  456. package/dist/island-ng/island-header-ng.js +2 -8
  457. package/dist/island-ng/island-ng-class-fixer.js +2 -0
  458. package/dist/island-ng/island-ng.js +2 -8
  459. package/dist/link/clickableLink.d.ts +1 -1
  460. package/dist/link/clickableLink.js +1 -0
  461. package/dist/link/link.d.ts +14 -22
  462. package/dist/link/link.js +4 -3
  463. package/dist/link-ng/link-ng.js +1 -4
  464. package/dist/list/consts.d.ts +3 -1
  465. package/dist/list/list.d.ts +3 -1
  466. package/dist/list/list.js +30 -23
  467. package/dist/list/list__custom.js +1 -0
  468. package/dist/list/list__item.js +6 -4
  469. package/dist/list/list__link.js +3 -1
  470. package/dist/list/list__users-groups-source.js +4 -2
  471. package/dist/loader/loader.js +1 -0
  472. package/dist/loader/loader__core.js +5 -4
  473. package/dist/loader-inline/loader-inline.d.ts +4 -41
  474. package/dist/loader-inline/loader-inline.js +4 -21
  475. package/dist/loader-inline-ng/loader-inline-ng.js +2 -30
  476. package/dist/loader-ng/loader-ng.js +1 -0
  477. package/dist/loader-screen/loader-screen.js +1 -0
  478. package/dist/loader-screen-ng/loader-screen-ng.js +2 -6
  479. package/dist/login-dialog/login-dialog.js +4 -2
  480. package/dist/login-dialog/service.js +5 -2
  481. package/dist/markdown/code.d.ts +6 -13
  482. package/dist/markdown/code.js +4 -3
  483. package/dist/markdown/heading.d.ts +5 -9
  484. package/dist/markdown/heading.js +2 -2
  485. package/dist/markdown/link.d.ts +4 -8
  486. package/dist/markdown/link.js +2 -1
  487. package/dist/markdown/markdown.d.ts +2 -3
  488. package/dist/markdown/markdown.js +17 -16
  489. package/dist/message/message.d.ts +3 -0
  490. package/dist/message/message.js +56 -42
  491. package/dist/old-browsers-message/old-browsers-message.js +2 -1
  492. package/dist/old-browsers-message/old-browsers-message__stop.js +1 -0
  493. package/dist/old-browsers-message/white-list.js +1 -0
  494. package/dist/pager/pager.js +14 -15
  495. package/dist/pager-ng/pager-ng.js +8 -9
  496. package/dist/panel-ng/panel-ng.js +1 -0
  497. package/dist/permissions/permissions.js +1 -1
  498. package/dist/permissions-ng/permissions-ng.js +23 -10
  499. package/dist/place-under-ng/place-under-ng.js +3 -2
  500. package/dist/popup/popup.d.ts +7 -1
  501. package/dist/popup/popup.js +11 -5
  502. package/dist/popup/popup.target.d.ts +2 -1
  503. package/dist/popup/position.d.ts +1 -1
  504. package/dist/popup/position.js +3 -2
  505. package/dist/popup-menu/popup-menu.d.ts +1 -0
  506. package/dist/popup-menu/popup-menu.js +3 -1
  507. package/dist/progress-bar/progress-bar.d.ts +0 -4
  508. package/dist/progress-bar/progress-bar.js +3 -8
  509. package/dist/progress-bar-ng/progress-bar-ng.js +2 -1
  510. package/dist/promised-click-ng/promised-click-ng.js +4 -2
  511. package/dist/proxy-attrs/proxy-attrs.js +5 -3
  512. package/dist/query-assist/query-assist.d.ts +5 -14
  513. package/dist/query-assist/query-assist.js +19 -31
  514. package/dist/query-assist/query-assist__suggestions.js +3 -1
  515. package/dist/query-assist-ng/query-assist-ng.js +9 -10
  516. package/dist/radio/radio.d.ts +1 -1
  517. package/dist/radio/radio.js +1 -0
  518. package/dist/radio/radio__item.js +1 -0
  519. package/dist/radio-ng/radio-ng.js +2 -18
  520. package/dist/save-field-ng/save-field-ng.js +5 -10
  521. package/dist/save-field-ng/save-field-ng__template.js +1 -32
  522. package/dist/select/select.d.ts +16 -20
  523. package/dist/select/select.js +65 -77
  524. package/dist/select/select__filter.js +5 -3
  525. package/dist/select/select__popup.d.ts +1 -1
  526. package/dist/select/select__popup.js +12 -16
  527. package/dist/select-ng/select-ng.js +28 -17
  528. package/dist/select-ng/select-ng__lazy.js +24 -20
  529. package/dist/select-ng/select-ng__options.js +2 -2
  530. package/dist/shortcuts/shortcuts-hoc.d.ts +4 -8
  531. package/dist/shortcuts/shortcuts-hoc.js +4 -3
  532. package/dist/shortcuts/shortcuts.d.ts +1 -1
  533. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +5 -2
  534. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +1 -48
  535. package/dist/shortcuts-ng/shortcuts-ng.js +4 -3
  536. package/dist/sidebar-ng/sidebar-ng.js +4 -2
  537. package/dist/sidebar-ng/sidebar-ng__button-template.js +1 -18
  538. package/dist/sidebar-ng/sidebar-ng__template.js +1 -10
  539. package/dist/storage/storage.js +22 -7
  540. package/dist/storage/storage__fallback.js +4 -3
  541. package/dist/storage/storage__local.js +22 -7
  542. package/dist/style.css +1 -1
  543. package/dist/tab-trap/tab-trap.d.ts +1 -1
  544. package/dist/tab-trap/tab-trap.js +2 -1
  545. package/dist/table/cell.js +1 -0
  546. package/dist/table/disable-hover-hoc.d.ts +4 -8
  547. package/dist/table/disable-hover-hoc.js +4 -3
  548. package/dist/table/header-cell.js +2 -0
  549. package/dist/table/header.d.ts +8 -1
  550. package/dist/table/header.js +3 -1
  551. package/dist/table/multitable.js +1 -0
  552. package/dist/table/row-with-focus-sensor.d.ts +4 -4
  553. package/dist/table/row-with-focus-sensor.js +16 -6
  554. package/dist/table/row.d.ts +1 -0
  555. package/dist/table/row.js +9 -7
  556. package/dist/table/selection-adapter.js +2 -0
  557. package/dist/table/selection-shortcuts-hoc.js +1 -0
  558. package/dist/table/selection.js +1 -0
  559. package/dist/table/smart-table.d.ts +1 -0
  560. package/dist/table/smart-table.js +14 -8
  561. package/dist/table/table.d.ts +4 -8
  562. package/dist/table/table.js +4 -2
  563. package/dist/table-legacy-ng/table-legacy-ng.js +16 -54
  564. package/dist/table-legacy-ng/table-legacy-ng__pager.js +9 -16
  565. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +2 -1
  566. package/dist/table-ng/smart-table-ng.js +5 -2
  567. package/dist/table-ng/table-ng.js +5 -2
  568. package/dist/tabs/collapsible-more.js +5 -3
  569. package/dist/tabs/collapsible-tab.js +4 -2
  570. package/dist/tabs/collapsible-tabs.d.ts +2 -2
  571. package/dist/tabs/collapsible-tabs.js +4 -2
  572. package/dist/tabs/custom-item.d.ts +1 -1
  573. package/dist/tabs/dumb-tabs.d.ts +6 -109
  574. package/dist/tabs/dumb-tabs.js +9 -13
  575. package/dist/tabs/smart-tabs.d.ts +4 -4
  576. package/dist/tabs/smart-tabs.js +13 -9
  577. package/dist/tabs/tab-link.d.ts +1 -1
  578. package/dist/tabs/tab-link.js +1 -0
  579. package/dist/tabs/tab.d.ts +3 -1
  580. package/dist/tabs/tab.js +1 -0
  581. package/dist/tabs/tabs.js +4 -2
  582. package/dist/tabs-ng/tabs-ng.js +2 -6
  583. package/dist/tabs-ng/tabs-ng__template.js +1 -38
  584. package/dist/tag/tag.d.ts +1 -0
  585. package/dist/tag/tag.js +8 -6
  586. package/dist/tags-input/tags-input.d.ts +4 -8
  587. package/dist/tags-input/tags-input.js +10 -11
  588. package/dist/tags-input-ng/tags-input-ng.js +9 -10
  589. package/dist/tags-list/tags-list.d.ts +1 -1
  590. package/dist/tags-list/tags-list.js +4 -2
  591. package/dist/template-ng/template-ng.js +1 -0
  592. package/dist/text/text.js +1 -1
  593. package/dist/theme-ng/theme-ng.js +1 -0
  594. package/dist/toggle/toggle.d.ts +9 -89
  595. package/dist/toggle/toggle.js +8 -8
  596. package/dist/toggle-ng/toggle-ng.js +4 -3
  597. package/dist/tooltip/tooltip.d.ts +1 -0
  598. package/dist/tooltip/tooltip.js +8 -3
  599. package/dist/tooltip-ng/tooltip-ng.js +12 -6
  600. package/dist/user-agreement/service.d.ts +14 -62
  601. package/dist/user-agreement/service.js +23 -21
  602. package/dist/user-agreement/toolbox.eula.js +1 -160
  603. package/dist/user-agreement/user-agreement.js +10 -10
  604. package/dist/user-card/card.js +2 -0
  605. package/dist/user-card/smart-user-card-tooltip.js +8 -11
  606. package/dist/user-card/tooltip.js +3 -1
  607. package/dist/user-card/user-card.js +4 -7
  608. package/dist/user-card-ng/user-card-ng.js +7 -9
  609. package/package.json +78 -69
  610. package/webpack.config.js +0 -11
  611. package/components/global/conic-gradient.d.ts +0 -796
  612. package/components/global/conic-gradient.js +0 -21
  613. package/components/global/radial-gradient-mask.d.ts +0 -9
  614. package/components/global/radial-gradient-mask.js +0 -39
  615. package/components/global/supports-css.d.ts +0 -2
  616. package/components/global/supports-css.js +0 -14
  617. package/components/global/theme.jsx +0 -39
  618. package/components/global/variables_dark.d.ts +0 -3
  619. package/components/global/variables_dark.js +0 -53
  620. package/components/loader-inline/inject-styles.d.ts +0 -2
  621. package/components/loader-inline/inject-styles.js +0 -17
  622. package/dist/_helpers/inject-styles.js +0 -22
  623. package/dist/global/conic-gradient.d.ts +0 -796
  624. package/dist/global/conic-gradient.js +0 -35
  625. package/dist/global/radial-gradient-mask.d.ts +0 -9
  626. package/dist/global/radial-gradient-mask.js +0 -49
  627. package/dist/global/supports-css.d.ts +0 -2
  628. package/dist/global/supports-css.js +0 -20
  629. package/dist/global/variables_dark.d.ts +0 -3
  630. package/dist/global/variables_dark.js +0 -57
  631. package/dist/loader-inline/inject-styles.d.ts +0 -2
  632. package/dist/loader-inline/inject-styles.js +0 -11
package/CHANGELOG.md CHANGED
@@ -1,8 +1,69 @@
1
1
  ## [5.0.0]
2
2
 
3
3
  ### BREAKING CHANGES
4
+ - Design of some components is changed, see [RG-2156](https://youtrack.jetbrains.com/issue/RG-2156). By default, controls (buttons, inputs etc.) have 28px height. To bring back the old compact 24px height, wrap your app into `ControlsHeightContext.Provider`:
5
+ ```js
6
+ import {ControlsHeight, ControlsHeightContext} from '@jetbrains/ring-ui/components/global/controls-height';
7
+
8
+ <ControlsHeightContext.Provider value={ControlsHeight.S}>
9
+ <App />
10
+ </ControlsHeightContext.Provider>
11
+ ```
12
+ - Input: removed `compact` and `renderUnderline` props
13
+ - Select: removed `Type.MATERIAL`
14
+ - Toggle: added `Size.Size14` which is the new default
15
+ - Button Group: caption should be pllaced outside of the group
16
+ ```
17
+ // Before
18
+ <ButtonGroup>
19
+ <Caption>Side:</Caption>
20
+ <Button>Left</Button>
21
+ <Button>Right</Button>
22
+ </ButtonGroup>
23
+
24
+ // After
25
+ <>
26
+ <Caption>Side:</Caption>
27
+ <ButtonGroup>
28
+ <Button>Left</Button>
29
+ <Button>Right</Button>
30
+ </ButtonGroup>
31
+ </>
32
+ ```
33
+ - Components no longer accept `theme` prop, themes are managed using CSS Custom Properties instead. To apply a theme to your app or some part of it, wrap it into `ThemeProvider`:
34
+ ```js
35
+ import Theme, {ThemeProvider} from '@jetbrains/ring-ui/components/global/theme';
36
+
37
+ <ThemeProvider theme={Theme.DARK}>{children}</ThemeProvider>
38
+ ```
39
+ You can also pass `Theme.AUTO` to use the user-defined system theme.
40
+ The only exceptions are the components that provide dark context by default: Alert, Header, Message. Those still accept a `theme` prop.
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`
4
43
  - The codebase has migrated to TypeScript
44
+ - `react-markdown` has been updated to v7, which affects the props of `Markdown` component. The most notable change is replacing `source` with `children`:
45
+ ```js
46
+ // before
47
+ <Markdown source="some markdown" />
48
+
49
+ // after
50
+ <Markdown>some markdown</Markdown>
51
+ ```
52
+ See `react-markdown`'s [changelog](https://github.com/remarkjs/react-markdown/blob/main/changelog.md#600---2021-04-15) for other changes
53
+ - Removed `core-js@2` support
54
+ - Removed `webpack@4` support
55
+
56
+ ## [4.2.0]
5
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
+ ```
6
67
 
7
68
  ## [4.1.0]
8
69
 
package/babel.config.js CHANGED
@@ -1,26 +1,15 @@
1
1
  const browserslist = require('browserslist');
2
- const deprecate = require('util-deprecate');
3
-
4
- const coreJsVersion = process.env.RING_UI_COREJS_VERSION ||
5
- require('core-js/package.json').version;
6
-
7
- const isDeprecatedCoreJS = coreJsVersion.startsWith('2');
8
2
 
9
3
  module.exports = function config(api) {
10
4
  api.cache(true);
11
5
 
12
- if (isDeprecatedCoreJS) {
13
- // TODO remove in 5.0
14
- deprecate(() => null, `Compiling Ring UI with deprecated Core JS version "${coreJsVersion}". Consider updating to 3rd.`)();
15
- }
16
-
17
6
  return {
18
7
  presets: [
19
8
  ['@jetbrains/babel-preset-jetbrains', {
20
9
  typeScript: true,
21
10
  angular: true,
22
11
  useBuiltIns: 'usage',
23
- corejs: isDeprecatedCoreJS ? '2' : '3'
12
+ corejs: '3'
24
13
  }]
25
14
  ],
26
15
  plugins: [
@@ -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,8 +24,8 @@
23
24
  pointer-events: auto;
24
25
 
25
26
  border-radius: var(--ring-border-radius);
26
- background-color: var(--ring-message-background-color);
27
- box-shadow: 0 2px 16px var(--ring-popup-shadow-color);
27
+ background-color: var(--ring-popup-background-color);
28
+ box-shadow: var(--ring-popup-shadow);
28
29
 
29
30
  font-size: var(--ring-font-size);
30
31
  line-height: calc(unit * 5);
@@ -37,7 +38,7 @@
37
38
  .error {
38
39
  word-wrap: break-word;
39
40
 
40
- color: var(--ring-error-color);
41
+ color: var(--ring-icon-error-color);
41
42
  }
42
43
 
43
44
  .icon {
@@ -53,7 +54,7 @@
53
54
 
54
55
  white-space: normal;
55
56
 
56
- color: var(--ring-dark-text-color);
57
+ color: var(--ring-active-text-color);
57
58
 
58
59
  line-height: 20px;
59
60
 
@@ -88,19 +89,8 @@
88
89
  margin: calc(unit / 2);
89
90
  padding: unit;
90
91
 
91
- cursor: pointer;
92
-
93
- color: var(--ring-dark-secondary-color);
94
- border: none;
95
- background: transparent;
96
-
97
92
  font-size: 0;
98
93
  line-height: 0;
99
-
100
- &:hover,
101
- &:focus {
102
- color: var(--ring-link-hover-color);
103
- }
104
94
  }
105
95
 
106
96
  @keyframes show {
@@ -1,5 +1,6 @@
1
1
  import React, { PureComponent, ReactNode } from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import Theme from '../global/theme';
3
4
  export declare const ANIMATION_TIME = 500;
4
5
  /**
5
6
  * @name Alert
@@ -16,6 +17,7 @@ export declare enum AlertType {
16
17
  LOADING = "loading"
17
18
  }
18
19
  export interface AlertProps {
20
+ theme: Theme;
19
21
  timeout: number;
20
22
  onCloseRequest: ((event?: React.MouseEvent<HTMLElement>) => void);
21
23
  onClose: (() => void);
@@ -68,6 +70,7 @@ export default class Alert extends PureComponent<AlertProps, State> {
68
70
  };
69
71
  /** @override */
70
72
  static defaultProps: {
73
+ theme: Theme;
71
74
  closeable: boolean;
72
75
  showWithAnimation: boolean;
73
76
  type: AlertType;
@@ -9,6 +9,8 @@ import Icon, { Color } from '../icon/icon';
9
9
  import Loader from '../loader-inline/loader-inline';
10
10
  import { getRect } from '../global/dom';
11
11
  import dataTests from '../global/data-tests';
12
+ import Button from '../button/button';
13
+ import Theme, { ThemeProvider } from '../global/theme';
12
14
  import styles from './alert.css';
13
15
  export const ANIMATION_TIME = 500;
14
16
  /**
@@ -78,6 +80,7 @@ export default class Alert extends PureComponent {
78
80
  };
79
81
  /** @override */
80
82
  static defaultProps = {
83
+ theme: Theme.DARK,
81
84
  closeable: true,
82
85
  showWithAnimation: true,
83
86
  type: AlertType.MESSAGE,
@@ -152,7 +155,7 @@ export default class Alert extends PureComponent {
152
155
  return (<Icon glyph={glyph} className={styles.icon} color={TypeToIconColor[this.props.type] || Color.DEFAULT}/>);
153
156
  }
154
157
  else if (this.props.type === AlertType.LOADING) {
155
- return (<Loader className={styles.loader} theme={Loader.Theme.DARK}/>);
158
+ return (<Loader className={styles.loader}/>);
156
159
  }
157
160
  return '';
158
161
  }
@@ -160,7 +163,7 @@ export default class Alert extends PureComponent {
160
163
  this.node = node;
161
164
  };
162
165
  render() {
163
- const { type, inline, isClosing, isShaking, closeButtonClassName, showWithAnimation, className, 'data-test': dataTest } = this.props;
166
+ const { type, inline, isClosing, isShaking, closeButtonClassName, showWithAnimation, className, 'data-test': dataTest, theme } = this.props;
164
167
  const classes = classNames(className, {
165
168
  [styles.alert]: true,
166
169
  [styles.animationOpen]: showWithAnimation,
@@ -171,15 +174,13 @@ export default class Alert extends PureComponent {
171
174
  });
172
175
  const height = this.state.height;
173
176
  const style = height ? { marginBottom: -height } : undefined;
174
- return (<div className={classes} data-test={dataTests('alert', dataTest)} data-test-type={type} style={style} ref={this.storeAlertRef}>
177
+ return (<ThemeProvider theme={theme} className={classes} data-test={dataTests('alert', dataTest)} data-test-type={type} style={style} ref={this.storeAlertRef}>
175
178
  {this._getIcon()}
176
179
  {this._getCaption()}
177
180
  {this.props.closeable
178
- ? (<button type="button" className={classNames(styles.close, closeButtonClassName)} data-test="alert-close" aria-label="close alert" onClick={this.closeRequest}>
179
- <Icon glyph={closeIcon}/>
180
- </button>)
181
+ ? (<Button icon={closeIcon} className={classNames(styles.close, closeButtonClassName)} data-test="alert-close" aria-label="close alert" onClick={this.closeRequest}/>)
181
182
  : ''}
182
- </div>);
183
+ </ThemeProvider>);
183
184
  }
184
185
  }
185
186
  export { default as Container } from './container';
@@ -22,6 +22,4 @@
22
22
  min-width: calc(unit * 30);
23
23
  max-width: calc(unit * 50);
24
24
  margin-top: 0;
25
-
26
- box-shadow: 0 2px 8px rgba(0, 42, 76, 0.3);
27
25
  }
File without changes
@@ -1,16 +1,18 @@
1
1
  @import "../global/variables.css";
2
2
 
3
3
  @value unit from "../global/global.css";
4
+ @value icon from "../button/button.css";
4
5
  @value animation-duration: 300ms;
5
6
  @value animation-easing: ease-out;
6
7
 
7
8
  .customAlert {
9
+ color: var(--ring-white-text-color);
8
10
  background: var(--ring-main-color);
9
11
  }
10
12
 
11
- .closeButton,
12
- .closeButton:hover {
13
- color: var(--ring-dark-text-color);
13
+ .closeButton .icon,
14
+ .closeButton:hover .icon {
15
+ color: var(--ring-white-text-color);
14
16
  }
15
17
 
16
18
  .closeButton:hover {
@@ -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,8 +25,16 @@ 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);
31
39
  ga('set', 'allowAdFeatures', false);
32
40
  }
@@ -38,6 +38,7 @@ export interface AuthTranslations {
38
38
  applyChange: string;
39
39
  backendIsNotAvailable: string;
40
40
  checkAgain: string;
41
+ tryAgainLabel: string;
41
42
  nothingHappensLink: string;
42
43
  errorMessage: string;
43
44
  }
@@ -99,6 +100,7 @@ interface AuthDialogParams {
99
100
  nonInteractive?: boolean;
100
101
  error?: Error;
101
102
  canCancel?: boolean;
103
+ onTryAgain?: () => Promise<void>;
102
104
  }
103
105
  interface UserChange {
104
106
  userID: number | string | null | undefined;
@@ -180,7 +182,7 @@ export default class Auth implements HTTPAuth {
180
182
  updateUser(): Promise<void>;
181
183
  _detectUserChange(accessToken: string): Promise<void>;
182
184
  _beforeLogout(params?: AuthDialogParams): void;
183
- _showAuthDialog({ nonInteractive, error, canCancel }?: AuthDialogParams): void;
185
+ _showAuthDialog({ nonInteractive, error, canCancel, onTryAgain }?: AuthDialogParams): void;
184
186
  _showUserChangedDialog({ newUser, onApply, onPostpone }: UserChangedDialogParams): void;
185
187
  private _extractErrorMessage;
186
188
  private _showBackendDownDialog;
@@ -46,6 +46,7 @@ const DEFAULT_CONFIG = {
46
46
  login: 'Log in',
47
47
  loginTo: 'Log in to %serviceName%',
48
48
  cancel: 'Cancel',
49
+ tryAgainLabel: 'Try again',
49
50
  postpone: 'Postpone',
50
51
  youHaveLoggedInAs: 'You have logged in as another user: %userName%',
51
52
  applyChange: 'Apply change',
@@ -361,22 +362,41 @@ export default class Auth {
361
362
  return await this._backgroundFlow?.authorize() ?? null;
362
363
  }
363
364
  catch (error) {
364
- if (error instanceof Error) {
365
- if (this._canShowDialogs()) {
366
- this._showAuthDialog({ nonInteractive: true, error });
367
- return null;
368
- }
369
- else {
370
- const authRequest = await this._requestBuilder?.prepareAuthRequest();
371
- if (authRequest != null) {
372
- this._redirectCurrentPage(authRequest.url);
373
- }
374
- }
375
- throw new TokenValidator.TokenValidationError(error.message);
365
+ if (!(error instanceof Error)) {
366
+ return null;
367
+ }
368
+ if (this._canShowDialogs()) {
369
+ return new Promise(resolve => {
370
+ const onTryAgain = async () => {
371
+ try {
372
+ const result = await this._backgroundFlow?.authorize();
373
+ resolve(result ?? null);
374
+ }
375
+ catch (retryError) {
376
+ if (retryError instanceof Error) {
377
+ this._showAuthDialog({
378
+ nonInteractive: true,
379
+ error: retryError,
380
+ onTryAgain
381
+ });
382
+ }
383
+ throw retryError;
384
+ }
385
+ };
386
+ this._showAuthDialog({
387
+ nonInteractive: true,
388
+ error: error,
389
+ onTryAgain
390
+ });
391
+ });
376
392
  }
377
393
  else {
378
- return null;
394
+ const authRequest = await this._requestBuilder?.prepareAuthRequest();
395
+ if (authRequest != null) {
396
+ this._redirectCurrentPage(authRequest.url);
397
+ }
379
398
  }
399
+ throw new TokenValidator.TokenValidationError(error.message);
380
400
  }
381
401
  }
382
402
  async loadCurrentService() {
@@ -462,7 +482,7 @@ export default class Auth {
462
482
  }
463
483
  this.logout();
464
484
  }
465
- _showAuthDialog({ nonInteractive, error, canCancel } = {}) {
485
+ _showAuthDialog({ nonInteractive, error, canCancel, onTryAgain } = {}) {
466
486
  const { embeddedLogin, onPostponeLogout, translations } = this.config;
467
487
  const cancelable = this.user?.guest || canCancel;
468
488
  this._createInitDeferred();
@@ -498,15 +518,21 @@ export default class Auth {
498
518
  this._initDeferred?.resolve?.();
499
519
  }
500
520
  };
521
+ const onTryAgainClick = async () => {
522
+ await onTryAgain?.();
523
+ closeDialog();
524
+ };
501
525
  const hide = this._authDialogService?.({
502
526
  ...this._service,
503
527
  loginCaption: translations.login,
504
528
  loginToCaption: translations.loginTo,
505
529
  confirmLabel: translations.login,
530
+ tryAgainLabel: translations.tryAgainLabel,
506
531
  cancelLabel: cancelable ? translations.cancel : translations.postpone,
507
532
  errorMessage: this._extractErrorMessage(error, true),
508
533
  onConfirm,
509
- onCancel
534
+ onCancel,
535
+ onTryAgain: onTryAgain ? onTryAgainClick : undefined
510
536
  });
511
537
  const stopTokenListening = this._storage?.onTokenChange(token => {
512
538
  if (token) {
@@ -530,6 +556,7 @@ export default class Auth {
530
556
  loginCaption: translations.login,
531
557
  loginToCaption: translations.loginTo,
532
558
  confirmLabel: translations.applyChange,
559
+ tryAgainLabel: translations.tryAgainLabel,
533
560
  cancelLabel: translations.postpone,
534
561
  onConfirm: () => {
535
562
  done();
@@ -700,9 +727,13 @@ export default class Auth {
700
727
  return await (stateId && this._storage?.getState(stateId)) || {};
701
728
  }
702
729
  _checkBackendsAreUp() {
730
+ const abortCtrl = new AbortController();
703
731
  const { backendCheckTimeout } = this.config;
704
732
  return Promise.all([
705
- 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
+ }),
706
737
  this.config.checkBackendIsUp()
707
738
  ]).catch(err => {
708
739
  if (err instanceof TypeError) {
@@ -11,7 +11,7 @@
11
11
 
12
12
  word-wrap: break-word;
13
13
 
14
- color: var(--ring-dark-active-color);
14
+ color: var(--ring-text-color);
15
15
 
16
16
  line-height: calc(unit * 2);
17
17
  }
@@ -15,8 +15,10 @@ export interface AuthDialogProps {
15
15
  cancelOnEsc: boolean;
16
16
  confirmLabel: string;
17
17
  cancelLabel: string;
18
+ tryAgainLabel: string;
18
19
  onConfirm: () => void;
19
20
  onCancel: () => void;
21
+ onTryAgain?: () => void;
20
22
  }
21
23
  export default class AuthDialog extends Component<AuthDialogProps> {
22
24
  static propTypes: {
@@ -31,12 +33,15 @@ export default class AuthDialog extends Component<AuthDialogProps> {
31
33
  cancelOnEsc: PropTypes.Requireable<boolean>;
32
34
  confirmLabel: PropTypes.Requireable<string>;
33
35
  cancelLabel: PropTypes.Requireable<string>;
36
+ tryAgainLabel: PropTypes.Requireable<string>;
34
37
  onConfirm: PropTypes.Requireable<(...args: any[]) => any>;
35
38
  onCancel: PropTypes.Requireable<(...args: any[]) => any>;
39
+ onTryAgain: PropTypes.Requireable<(...args: any[]) => any>;
36
40
  };
37
41
  static defaultProps: {
38
42
  loginCaption: string;
39
43
  loginToCaption: string;
44
+ tryAgainLabel: string;
40
45
  show: boolean;
41
46
  cancelOnEsc: boolean;
42
47
  confirmLabel: string;
@@ -44,6 +49,12 @@ export default class AuthDialog extends Component<AuthDialogProps> {
44
49
  onConfirm: () => void;
45
50
  onCancel: () => void;
46
51
  };
52
+ state: {
53
+ retrying: boolean;
54
+ };
55
+ componentDidMount(): void;
56
+ componentWillUnmount(): void;
47
57
  onEscPress: () => void;
58
+ onRetryPress: () => Promise<void>;
48
59
  render(): JSX.Element;
49
60
  }
@@ -19,12 +19,15 @@ export default class AuthDialog extends Component {
19
19
  cancelOnEsc: PropTypes.bool,
20
20
  confirmLabel: PropTypes.string,
21
21
  cancelLabel: PropTypes.string,
22
+ tryAgainLabel: PropTypes.string,
22
23
  onConfirm: PropTypes.func,
23
- onCancel: PropTypes.func
24
+ onCancel: PropTypes.func,
25
+ onTryAgain: PropTypes.func
24
26
  };
25
27
  static defaultProps = {
26
28
  loginCaption: 'Log in',
27
29
  loginToCaption: 'Log in to %serviceName%',
30
+ tryAgainLabel: 'Try again',
28
31
  show: false,
29
32
  cancelOnEsc: true,
30
33
  confirmLabel: 'Log in',
@@ -32,13 +35,38 @@ export default class AuthDialog extends Component {
32
35
  onConfirm: () => { },
33
36
  onCancel: () => { }
34
37
  };
38
+ state = {
39
+ retrying: false
40
+ };
41
+ componentDidMount() {
42
+ window.addEventListener('online', this.onRetryPress);
43
+ }
44
+ componentWillUnmount() {
45
+ window.removeEventListener('online', this.onRetryPress);
46
+ }
35
47
  onEscPress = () => {
36
48
  if (this.props.cancelOnEsc) {
37
49
  this.props.onCancel();
38
50
  }
39
51
  };
52
+ onRetryPress = async () => {
53
+ if (!this.props.onTryAgain || this.state.retrying) {
54
+ return;
55
+ }
56
+ this.setState({ retrying: true });
57
+ try {
58
+ await this.props.onTryAgain();
59
+ }
60
+ catch (e) {
61
+ // do nothing, error is handled in onTryAgain
62
+ }
63
+ finally {
64
+ this.setState({ retrying: false });
65
+ }
66
+ };
40
67
  render() {
41
- const { show, className, errorMessage, serviceImage, serviceName, loginCaption, loginToCaption, confirmLabel, cancelLabel, onConfirm, onCancel } = this.props;
68
+ const { show, className, errorMessage, serviceImage, serviceName, loginCaption, loginToCaption, confirmLabel, cancelLabel, tryAgainLabel, onConfirm, onCancel, onTryAgain } = this.props;
69
+ const { retrying } = this.state;
42
70
  const defaultTitle = serviceName ? loginToCaption : loginCaption;
43
71
  const title = (this.props.title || defaultTitle).replace('%serviceName%', serviceName ?? '');
44
72
  return (<Dialog label={title} data-test="ring-auth-dialog" className={className} contentClassName={classNames(className, styles.dialog)} onEscPress={this.onEscPress} show={show} trapFocus>
@@ -50,6 +78,9 @@ export default class AuthDialog extends Component {
50
78
  <Button primary className={styles.firstButton} data-test="auth-dialog-confirm-button" onClick={onConfirm}>
51
79
  {confirmLabel}
52
80
  </Button>
81
+ {onTryAgain && (<Button className={styles.button} data-test="auth-dialog-retry-button" onClick={() => this.onRetryPress()} loader={retrying} disabled={retrying}>
82
+ {tryAgainLabel}
83
+ </Button>)}
53
84
  <Button className={styles.button} data-test="auth-dialog-cancel-button" onClick={onCancel}>
54
85
  {cancelLabel}
55
86
  </Button>
@@ -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
@@ -6,7 +6,7 @@ import angular from 'angular';
6
6
  import {FOCUSABLE_ELEMENTS} from '../tab-trap/tab-trap';
7
7
 
8
8
  const angularModule = angular.module('Ring.autofocus', []);
9
- const RING_SELECT_SELECTOR = '[data-test=ring-select__focus]';
9
+ const RING_SELECT_SELECTOR = '[data-test*=ring-select__focus]';
10
10
  const RING_SELECT = 'rg-select';
11
11
 
12
12
  angularModule.directive('rgAutofocus', function rgAutofocusDirective() {
@@ -37,7 +37,7 @@ describe('Autofocus Ng', () => {
37
37
 
38
38
  it('Should focus on select button', () => {
39
39
  element = $compile('<rg-select rg-autofocus="vm.focus" options="item in []"/>')($scope);
40
- const selectButton = element[0].querySelector('[data-test=ring-select__focus]');
40
+ const selectButton = element[0].querySelector('[data-test*=ring-select__focus]');
41
41
 
42
42
  sandbox.spy(selectButton, 'focus');
43
43
 
@@ -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>;
File without changes
@@ -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`;
File without changes