@jetbrains/ring-ui 4.1.0-beta.9 → 4.1.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 (354) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +17 -15
  3. package/babel.config.js +3 -2
  4. package/components/alert/alert.js +9 -3
  5. package/components/alert/container.css +1 -1
  6. package/components/alert-service/alert-service.examples.css +18 -0
  7. package/components/alert-service/alert-service.examples.js +21 -0
  8. package/components/alert-service/alert-service.js +10 -3
  9. package/components/analytics/analytics__fus-plugin.js +1 -1
  10. package/components/auth/auth.test.js +14 -7
  11. package/components/auth/auth__core.js +64 -33
  12. package/components/auth-dialog/auth-dialog.js +1 -0
  13. package/components/avatar/avatar.css +4 -1
  14. package/components/avatar/avatar.examples.js +3 -2
  15. package/components/avatar/avatar.js +31 -6
  16. package/components/avatar/fallback-avatar.js +136 -0
  17. package/components/avatar-editor-ng/avatar-editor-ng.css +2 -2
  18. package/components/avatar-editor-ng/avatar-editor-ng.js +2 -1
  19. package/components/avatar-editor-ng/{avatar-editor-ng.html → avatar-editor-ng__template.js} +2 -2
  20. package/components/button/button.css +2 -2
  21. package/components/button/button.js +4 -1
  22. package/components/button-group/button-group.js +1 -1
  23. package/components/button-group/caption.js +1 -1
  24. package/components/button-ng/button-ng.js +1 -1
  25. package/components/button-set-ng/button-set-ng.js +3 -1
  26. package/components/checkbox/checkbox.css +1 -1
  27. package/components/code/code.js +1 -1
  28. package/components/confirm/confirm.js +1 -0
  29. package/components/confirm-service/confirm-service.js +5 -5
  30. package/components/content-layout/content-layout.css +1 -1
  31. package/components/data-list/data-list.css +1 -1
  32. package/components/date-picker/date-input.js +5 -4
  33. package/components/date-picker/date-picker.css +34 -22
  34. package/components/date-picker/date-picker.js +16 -14
  35. package/components/date-picker/date-popup.js +22 -7
  36. package/components/date-picker/month-names.js +8 -5
  37. package/components/date-picker/month.js +6 -2
  38. package/components/date-picker/weekdays.js +10 -2
  39. package/components/dialog/dialog.examples.js +3 -1
  40. package/components/dialog/dialog.js +5 -2
  41. package/components/dialog/dialog.test.js +1 -1
  42. package/components/dialog/dialog__body-scroll-preventer.js +2 -2
  43. package/components/dialog-ng/dialog-ng.js +7 -8
  44. package/components/dialog-ng/{dialog-ng.html → dialog-ng__template.js} +2 -2
  45. package/components/dropdown/dropdown.examples.js +36 -1
  46. package/components/dropdown-menu/dropdown-menu.examples.js +47 -0
  47. package/components/dropdown-menu/dropdown-menu.js +117 -0
  48. package/components/dropdown-menu/dropdown-menu.test.js +76 -0
  49. package/components/error-bubble/error-bubble-legacy.css +1 -1
  50. package/components/error-bubble/error-bubble.css +1 -1
  51. package/components/error-bubble/error-bubble.examples.js +1 -1
  52. package/components/error-page/error-page.css +2 -2
  53. package/components/footer-ng/footer-ng.js +13 -3
  54. package/components/form/form.css +2 -2
  55. package/components/form-ng/form-ng.js +3 -1
  56. package/components/global/global.css +1 -1
  57. package/components/global/theme.js +1 -1
  58. package/components/global/variables.css +8 -1
  59. package/components/grid/grid.css +10 -9
  60. package/components/header/header.css +1 -1
  61. package/components/header/header.examples.js +7 -8
  62. package/components/header/profile.js +10 -11
  63. package/components/http/http.js +1 -1
  64. package/components/icon/icon.css +5 -4
  65. package/components/island/island.css +4 -3
  66. package/components/island-legacy/island-legacy.css +3 -1
  67. package/components/list/list.js +6 -1
  68. package/components/list/list__custom.js +9 -3
  69. package/components/list/list__item.js +8 -2
  70. package/components/list/list__link.js +2 -1
  71. package/components/loader-inline/loader-inline.css +1 -1
  72. package/components/loader-screen/loader-screen.css +1 -1
  73. package/components/message/message.css +1 -1
  74. package/components/message/message.examples.js +8 -5
  75. package/components/pager/pager.js +5 -3
  76. package/components/permissions/permissions.js +1 -1
  77. package/components/progress-bar/progress-bar.css +1 -1
  78. package/components/progress-bar/progress-bar.examples.js +3 -3
  79. package/components/progress-bar/progress-bar.js +5 -2
  80. package/components/progress-bar/progress-bar.test.js +12 -13
  81. package/components/progress-bar-ng/progress-bar-ng.examples.js +3 -3
  82. package/components/query-assist/query-assist.css +13 -3
  83. package/components/query-assist/query-assist.examples.js +3 -1
  84. package/components/query-assist/query-assist.js +56 -12
  85. package/components/query-assist/query-assist.test.js +37 -5
  86. package/components/save-field-ng/save-field-ng.css +0 -3
  87. package/components/save-field-ng/save-field-ng.js +3 -1
  88. package/components/save-field-ng/{save-field-ng.html → save-field-ng__template.js} +2 -2
  89. package/components/select/select.css +12 -7
  90. package/components/select/select.examples.js +13 -0
  91. package/components/select/select.js +30 -43
  92. package/components/select/select.test.js +4 -5
  93. package/components/shortcuts-hint-ng/shortcuts-hint-ng.css +1 -1
  94. package/components/shortcuts-hint-ng/shortcuts-hint-ng.js +1 -1
  95. package/components/shortcuts-hint-ng/{shortcuts-hint-ng.html → shortcuts-hint-ng__template.js} +2 -2
  96. package/components/sidebar/sidebar.css +1 -0
  97. package/components/sidebar-ng/sidebar-ng.js +6 -2
  98. package/components/sidebar-ng/{sidebar-ng__button.html → sidebar-ng__button-template.js} +2 -2
  99. package/components/sidebar-ng/{sidebar-ng.html → sidebar-ng__template.js} +2 -2
  100. package/components/table/row.js +2 -1
  101. package/components/table/table.css +2 -1
  102. package/components/table-legacy/table-legacy.css +2 -2
  103. package/components/table-legacy/table-legacy__toolbar.css +2 -2
  104. package/components/table-legacy-ng/table-legacy-ng.js +38 -5
  105. package/components/table-legacy-ng/table-legacy-ng__pager.js +7 -1
  106. package/components/tabs/collapsible-tab.js +2 -2
  107. package/components/tabs/collapsible-tabs.js +4 -8
  108. package/components/tabs/tab-link.js +4 -2
  109. package/components/tabs/tabs.css +27 -0
  110. package/components/tabs-ng/tabs-ng.js +4 -2
  111. package/components/tabs-ng/{tabs-ng.html → tabs-ng__template.js} +6 -2
  112. package/components/tag/tag.css +5 -2
  113. package/components/tag/tag.examples.js +3 -0
  114. package/components/tag/tag.js +19 -16
  115. package/components/tags-input/tag-input.examples.js +1 -1
  116. package/components/tags-input/tags-input.js +5 -2
  117. package/components/template-ng/template-ng.js +1 -1
  118. package/components/tooltip/tooltip.js +7 -2
  119. package/components/user-agreement/user-agreement.css +1 -1
  120. package/components/user-agreement/user-agreement.examples.js +7 -4
  121. package/components/user-agreement/user-agreement.js +1 -0
  122. package/package.json +75 -78
  123. package/webpack.config.js +14 -10
  124. package/components/button-set-ng/button-set-ng.html +0 -1
  125. package/components/footer-ng/footer-ng.html +0 -13
  126. package/components/form-ng/form-ng__error-bubble.html +0 -3
  127. package/components/table-legacy-ng/table-legacy-ng.html +0 -4
  128. package/components/table-legacy-ng/table-legacy-ng__column.html +0 -12
  129. package/components/table-legacy-ng/table-legacy-ng__header.html +0 -4
  130. package/components/table-legacy-ng/table-legacy-ng__pager.html +0 -7
  131. package/components/table-legacy-ng/table-legacy-ng__row.html +0 -12
  132. package/components/table-legacy-ng/table-legacy-ng__title.html +0 -9
  133. package/dist/_helpers/_rollupPluginBabelHelpers.js +0 -127
  134. package/dist/_helpers/anchor.js +0 -33
  135. package/dist/_helpers/badge.js +0 -3
  136. package/dist/_helpers/button__classes.js +0 -39
  137. package/dist/_helpers/caption.js +0 -25
  138. package/dist/_helpers/card.js +0 -77
  139. package/dist/_helpers/date-picker.js +0 -3
  140. package/dist/_helpers/dialog__body-scroll-preventer.js +0 -56
  141. package/dist/_helpers/grid.js +0 -3
  142. package/dist/_helpers/header.js +0 -3
  143. package/dist/_helpers/icon__svg.js +0 -83
  144. package/dist/_helpers/inject-styles.js +0 -22
  145. package/dist/_helpers/island.js +0 -3
  146. package/dist/_helpers/list.js +0 -3
  147. package/dist/_helpers/query-assist__suggestions.js +0 -95
  148. package/dist/_helpers/select__filter.js +0 -78
  149. package/dist/_helpers/services-link.js +0 -42
  150. package/dist/_helpers/sidebar.js +0 -127
  151. package/dist/_helpers/table.js +0 -3
  152. package/dist/_helpers/tabs.js +0 -3
  153. package/dist/_helpers/title.js +0 -99
  154. package/dist/alert/alert.js +0 -254
  155. package/dist/alert/container.js +0 -50
  156. package/dist/alert-service/alert-service.js +0 -159
  157. package/dist/analytics/analytics.js +0 -116
  158. package/dist/analytics/analytics__custom-plugin.js +0 -127
  159. package/dist/analytics/analytics__fus-plugin.js +0 -101
  160. package/dist/analytics/analytics__ga-plugin.js +0 -66
  161. package/dist/analytics/analytics__plugin-utils.js +0 -79
  162. package/dist/auth/auth.js +0 -90
  163. package/dist/auth/auth__core.js +0 -987
  164. package/dist/auth/background-flow.js +0 -123
  165. package/dist/auth/down-notification.js +0 -111
  166. package/dist/auth/iframe-flow.js +0 -147
  167. package/dist/auth/landing-entry.js +0 -5
  168. package/dist/auth/landing.js +0 -84
  169. package/dist/auth/request-builder.js +0 -75
  170. package/dist/auth/response-parser.js +0 -117
  171. package/dist/auth/storage.js +0 -279
  172. package/dist/auth/token-validator.js +0 -176
  173. package/dist/auth/window-flow.js +0 -133
  174. package/dist/auth-dialog/auth-dialog.js +0 -132
  175. package/dist/auth-dialog-service/auth-dialog-service.js +0 -67
  176. package/dist/avatar/avatar-example-datauri.js +0 -26
  177. package/dist/avatar/avatar.js +0 -155
  178. package/dist/badge/badge.js +0 -52
  179. package/dist/button/button.js +0 -117
  180. package/dist/button/button__classes.js +0 -5
  181. package/dist/button-group/button-group.js +0 -30
  182. package/dist/button-group/caption.js +0 -5
  183. package/dist/button-set/button-set.js +0 -27
  184. package/dist/button-toolbar/button-toolbar.js +0 -30
  185. package/dist/caret/caret.js +0 -264
  186. package/dist/checkbox/checkbox.js +0 -110
  187. package/dist/confirm/confirm.js +0 -122
  188. package/dist/confirm-service/confirm-service.js +0 -112
  189. package/dist/content-layout/content-layout.js +0 -67
  190. package/dist/content-layout/sidebar.js +0 -6
  191. package/dist/contenteditable/contenteditable.js +0 -81
  192. package/dist/data-list/data-list.js +0 -203
  193. package/dist/data-list/data-list.mock.js +0 -190
  194. package/dist/data-list/item.js +0 -225
  195. package/dist/data-list/selection.js +0 -101
  196. package/dist/data-list/title.js +0 -16
  197. package/dist/date-picker/consts.js +0 -70
  198. package/dist/date-picker/date-input.js +0 -169
  199. package/dist/date-picker/date-picker.js +0 -356
  200. package/dist/date-picker/date-popup.js +0 -459
  201. package/dist/date-picker/day.js +0 -119
  202. package/dist/date-picker/formats.js +0 -3
  203. package/dist/date-picker/month-names.js +0 -92
  204. package/dist/date-picker/month-slider.js +0 -83
  205. package/dist/date-picker/month.js +0 -48
  206. package/dist/date-picker/months.js +0 -121
  207. package/dist/date-picker/weekdays.js +0 -24
  208. package/dist/date-picker/years.js +0 -109
  209. package/dist/dialog/dialog.js +0 -197
  210. package/dist/dialog/dialog__body-scroll-preventer.js +0 -2
  211. package/dist/dropdown/anchor.js +0 -16
  212. package/dist/dropdown/dropdown.js +0 -236
  213. package/dist/error-bubble/error-bubble.js +0 -59
  214. package/dist/error-message/error-message.js +0 -55
  215. package/dist/footer/footer.js +0 -127
  216. package/dist/global/angular-component-factory.js +0 -83
  217. package/dist/global/compose.js +0 -9
  218. package/dist/global/composeRefs.js +0 -15
  219. package/dist/global/conic-gradient.js +0 -37
  220. package/dist/global/create-stateful-context.js +0 -54
  221. package/dist/global/data-tests.js +0 -22
  222. package/dist/global/dom.js +0 -124
  223. package/dist/global/focus-sensor-hoc.js +0 -147
  224. package/dist/global/fuzzy-highlight.js +0 -67
  225. package/dist/global/get-event-key.js +0 -111
  226. package/dist/global/get-uid.js +0 -15
  227. package/dist/global/inject-styles.js +0 -17
  228. package/dist/global/linear-function.js +0 -18
  229. package/dist/global/listeners.js +0 -42
  230. package/dist/global/memoize.js +0 -18
  231. package/dist/global/normalize-indent.js +0 -28
  232. package/dist/global/promise-with-timeout.js +0 -13
  233. package/dist/global/radial-gradient-mask.js +0 -49
  234. package/dist/global/react-dom-renderer.js +0 -45
  235. package/dist/global/rerender-hoc.js +0 -53
  236. package/dist/global/ring-angular-component.js +0 -24
  237. package/dist/global/schedule-raf.js +0 -31
  238. package/dist/global/sniffer.js +0 -6
  239. package/dist/global/supports-css.js +0 -20
  240. package/dist/global/theme.js +0 -56
  241. package/dist/global/trivial-template-tag.js +0 -15
  242. package/dist/global/url.js +0 -163
  243. package/dist/global/variables_dark.js +0 -57
  244. package/dist/grid/col.js +0 -62
  245. package/dist/grid/grid.js +0 -35
  246. package/dist/grid/row.js +0 -66
  247. package/dist/group/group.js +0 -34
  248. package/dist/header/header.js +0 -144
  249. package/dist/header/logo.js +0 -39
  250. package/dist/header/profile.js +0 -212
  251. package/dist/header/services-link.js +0 -10
  252. package/dist/header/services.js +0 -135
  253. package/dist/header/smart-profile.js +0 -227
  254. package/dist/header/smart-services.js +0 -159
  255. package/dist/header/tray-icon.js +0 -45
  256. package/dist/header/tray.js +0 -33
  257. package/dist/heading/heading.js +0 -76
  258. package/dist/http/http.js +0 -216
  259. package/dist/http/http.mock.js +0 -65
  260. package/dist/hub-source/hub-source.js +0 -130
  261. package/dist/hub-source/hub-source__user.js +0 -28
  262. package/dist/hub-source/hub-source__users-groups.js +0 -62
  263. package/dist/icon/icon.js +0 -105
  264. package/dist/icon/icon__constants.js +0 -33
  265. package/dist/icon/icon__svg.js +0 -6
  266. package/dist/icon/index.js +0 -9
  267. package/dist/input/input.js +0 -231
  268. package/dist/island/adaptive-island-hoc.js +0 -48
  269. package/dist/island/content.js +0 -158
  270. package/dist/island/header.js +0 -85
  271. package/dist/island/island.js +0 -53
  272. package/dist/island-legacy/content-legacy.js +0 -28
  273. package/dist/island-legacy/header-legacy.js +0 -30
  274. package/dist/island-legacy/island-legacy.js +0 -30
  275. package/dist/link/clickableLink.js +0 -65
  276. package/dist/link/link.js +0 -118
  277. package/dist/list/consts.js +0 -26
  278. package/dist/list/list.js +0 -800
  279. package/dist/list/list__custom.js +0 -82
  280. package/dist/list/list__hint.js +0 -26
  281. package/dist/list/list__item.js +0 -197
  282. package/dist/list/list__link.js +0 -65
  283. package/dist/list/list__separator.js +0 -30
  284. package/dist/list/list__title.js +0 -39
  285. package/dist/list/list__users-groups-source.js +0 -124
  286. package/dist/loader/loader.js +0 -72
  287. package/dist/loader/loader__core.js +0 -272
  288. package/dist/loader-inline/inject-styles.js +0 -11
  289. package/dist/loader-inline/loader-inline.js +0 -58
  290. package/dist/loader-screen/loader-screen.js +0 -46
  291. package/dist/login-dialog/login-dialog.js +0 -184
  292. package/dist/login-dialog/service.js +0 -67
  293. package/dist/message/message.js +0 -232
  294. package/dist/old-browsers-message/old-browsers-message.js +0 -101
  295. package/dist/old-browsers-message/old-browsers-message__stop.js +0 -5
  296. package/dist/old-browsers-message/white-list.js +0 -34
  297. package/dist/pager/pager.js +0 -352
  298. package/dist/panel/panel.js +0 -34
  299. package/dist/permissions/permissions.js +0 -200
  300. package/dist/permissions/permissions__cache.js +0 -272
  301. package/dist/popup/popup.consts.js +0 -41
  302. package/dist/popup/popup.js +0 -389
  303. package/dist/popup/popup.target.js +0 -27
  304. package/dist/popup/position.js +0 -280
  305. package/dist/popup-menu/popup-menu.js +0 -108
  306. package/dist/progress-bar/progress-bar.js +0 -111
  307. package/dist/proxy-attrs/proxy-attrs.js +0 -19
  308. package/dist/query-assist/query-assist.js +0 -1023
  309. package/dist/query-assist/query-assist__suggestions.js +0 -43
  310. package/dist/radio/radio.js +0 -39
  311. package/dist/radio/radio__item.js +0 -82
  312. package/dist/select/select.js +0 -1335
  313. package/dist/select/select__filter.js +0 -49
  314. package/dist/select/select__popup.js +0 -541
  315. package/dist/shortcuts/core.js +0 -245
  316. package/dist/shortcuts/shortcut-title.js +0 -51
  317. package/dist/shortcuts/shortcuts-hoc.js +0 -43
  318. package/dist/shortcuts/shortcuts.js +0 -72
  319. package/dist/storage/storage.js +0 -55
  320. package/dist/storage/storage__fallback.js +0 -214
  321. package/dist/storage/storage__local.js +0 -150
  322. package/dist/style.css +0 -1
  323. package/dist/tab-trap/tab-trap.js +0 -178
  324. package/dist/table/cell.js +0 -25
  325. package/dist/table/disable-hover-hoc.js +0 -53
  326. package/dist/table/header-cell.js +0 -91
  327. package/dist/table/header.js +0 -189
  328. package/dist/table/multitable.js +0 -140
  329. package/dist/table/row-with-focus-sensor.js +0 -79
  330. package/dist/table/row.js +0 -270
  331. package/dist/table/selection-adapter.js +0 -14
  332. package/dist/table/selection-shortcuts-hoc.js +0 -212
  333. package/dist/table/selection.js +0 -221
  334. package/dist/table/smart-table.js +0 -113
  335. package/dist/table/table.js +0 -405
  336. package/dist/tabs/collapsible-more.js +0 -193
  337. package/dist/tabs/collapsible-tab.js +0 -90
  338. package/dist/tabs/collapsible-tabs.js +0 -361
  339. package/dist/tabs/custom-item.js +0 -13
  340. package/dist/tabs/dumb-tabs.js +0 -159
  341. package/dist/tabs/smart-tabs.js +0 -102
  342. package/dist/tabs/tab-link.js +0 -35
  343. package/dist/tabs/tab.js +0 -32
  344. package/dist/tabs/tabs.js +0 -65
  345. package/dist/tag/tag.js +0 -190
  346. package/dist/tags-input/tags-input.js +0 -474
  347. package/dist/tags-list/tags-list.js +0 -94
  348. package/dist/text/text.js +0 -38
  349. package/dist/toggle/toggle.js +0 -80
  350. package/dist/tooltip/tooltip.js +0 -205
  351. package/dist/user-card/card.js +0 -14
  352. package/dist/user-card/smart-user-card-tooltip.js +0 -112
  353. package/dist/user-card/tooltip.js +0 -91
  354. package/dist/user-card/user-card.js +0 -46
@@ -57,7 +57,7 @@ export const inDialogForm = () => {
57
57
  const {value} = this.state;
58
58
 
59
59
  return (
60
- <Dialog show>
60
+ <Dialog label="Dialog" show>
61
61
  <Header>Dialog example</Header>
62
62
  <Content>
63
63
  <form className="ring-form">
@@ -15,10 +15,10 @@
15
15
  width: 100%;
16
16
  height: 100%;
17
17
 
18
- content: '';
18
+ content: "";
19
19
  }
20
20
 
21
21
  .enabled::before {
22
22
  opacity: 0.06;
23
- background: url('error-page.gif');
23
+ background: url("error-page.gif");
24
24
  }
@@ -4,8 +4,6 @@ import RingAngularComponent from '../global/ring-angular-component';
4
4
  import styles from '../footer/footer.css';
5
5
  import {copyright} from '../footer/footer';
6
6
 
7
- import template from './footer-ng.html';
8
-
9
7
  /**
10
8
  * @name Footer Ng
11
9
  */
@@ -22,7 +20,19 @@ class rgFooterComponent extends RingAngularComponent {
22
20
  right: '?rgFooterRight'
23
21
  };
24
22
 
25
- static template = template;
23
+ static template = `<footer ng-class=":: $ctrl.styles.footer" data-test="ring-footer">
24
+ <div ng-class=":: $ctrl.styles.columnLeft">
25
+ <div ng-transclude="left" ng-class=":: $ctrl.styles.columnItem"></div>
26
+ </div>
27
+
28
+ <div ng-class=":: $ctrl.styles.columnCenter">
29
+ <div ng-transclude="center" ng-class=":: $ctrl.styles.columnItem"></div>
30
+ </div>
31
+
32
+ <div ng-class=":: $ctrl.styles.columnRight">
33
+ <div ng-transclude="right" ng-class=":: $ctrl.styles.columnItem"></div>
34
+ </div>
35
+ </footer>`;
26
36
  }
27
37
 
28
38
  class rgFooterLineComponent extends RingAngularComponent {
@@ -96,7 +96,7 @@
96
96
  display: block;
97
97
  clear: both;
98
98
 
99
- content: '';
99
+ content: "";
100
100
  }
101
101
 
102
102
  :global(.ring-form__group_united) {
@@ -167,7 +167,7 @@
167
167
 
168
168
  height: calc(unit * 3);
169
169
 
170
- content: '';
170
+ content: "";
171
171
  vertical-align: middle;
172
172
  }
173
173
 
@@ -54,7 +54,9 @@ angularModule.directive('rgErrorBubble', function rgErrorBubbleDirective(getForm
54
54
  },
55
55
 
56
56
  replace: true,
57
- template: require('./form-ng__error-bubble.html'),
57
+ template: `<div class="ring-error-bubble" ng-class="{ active: active, 'ring-error-bubble_material': material }" ng-style="style">
58
+ <div ng-repeat="errorMessage in getFormErrorMessages(errorBubble().$error)">{{ errorMessage }}</div>
59
+ </div>`,
58
60
 
59
61
  link: function link(scope, iElement, iAttrs) {
60
62
  scope.style = {};
@@ -11,7 +11,7 @@ Also it won't form in FF47 https://bugzilla.mozilla.org/show_bug.cgi?id=594933
11
11
  display: block;
12
12
  clear: both;
13
13
 
14
- content: '';
14
+ content: "";
15
15
  }
16
16
  }
17
17
 
@@ -5,7 +5,7 @@ const Theme = {
5
5
  DARK: 'dark'
6
6
  };
7
7
 
8
- export const ThemeContext = createContext();
8
+ export const ThemeContext = createContext(null);
9
9
 
10
10
  const getDisplayName = Component => (typeof Component === 'string' ? Component : (Component.name ?? Component.displayName ?? 'Component'));
11
11
 
@@ -87,7 +87,14 @@
87
87
  --ring-ease: 0.3s ease-out;
88
88
  --ring-fast-ease: 0.15s ease-out;
89
89
  --ring-font-family: system-ui, Arial, sans-serif;
90
- --ring-font-family-monospace: Menlo, "Bitstream Vera Sans Mono", "Ubuntu Mono", Consolas, "Courier New", Courier, monospace;
90
+ --ring-font-family-monospace:
91
+ Menlo,
92
+ "Bitstream Vera Sans Mono",
93
+ "Ubuntu Mono",
94
+ Consolas,
95
+ "Courier New",
96
+ Courier,
97
+ monospace;
91
98
 
92
99
  /* Common z-index-values */
93
100
 
@@ -1,23 +1,24 @@
1
1
  @import "../global/variables.css";
2
2
 
3
- @value unit, breakpoint-small, breakpoint-middle, breakpoint-large, large-screen-media, middle-screen-media, small-screen-media from '../global/global.css';
3
+ @value unit, breakpoint-small, breakpoint-middle, breakpoint-large from "../global/global.css";
4
+ @value large-screen-media, middle-screen-media, small-screen-media from "../global/global.css";
4
5
  @value gutterWidth: (unit*2);
5
6
  @value gutterCompensation: calc(gutterWidth / -2);
6
7
  @value outerMargin: calc(unit*2);
7
8
  @value containerSmall: calc(breakpoint-small + gutterWidth);
8
9
  @value containerMedium: calc(breakpoint-middle + gutterWidth);
9
10
  @value containerLarge: calc(breakpoint-large + gutterWidth);
10
- @value width-1: 8.33333333%;
11
- @value width-2: 16.66666667%;
11
+ @value width-1: 8.3333%;
12
+ @value width-2: 16.6667%;
12
13
  @value width-3: 25%;
13
- @value width-4: 33.33333333%;
14
- @value width-5: 41.66666667%;
14
+ @value width-4: 33.3333%;
15
+ @value width-5: 41.6667%;
15
16
  @value width-6: 50%;
16
- @value width-7: 58.33333333%;
17
- @value width-8: 66.66666667%;
17
+ @value width-7: 58.3333%;
18
+ @value width-8: 66.6667%;
18
19
  @value width-9: 75%;
19
- @value width-10: 83.33333333%;
20
- @value width-11: 91.66666667%;
20
+ @value width-10: 83.3333%;
21
+ @value width-11: 91.6667%;
21
22
  @value width-12: 100%;
22
23
 
23
24
  .container-fluid,
@@ -152,7 +152,7 @@
152
152
  width: unit;
153
153
  height: unit;
154
154
 
155
- content: '';
155
+ content: "";
156
156
 
157
157
  border: 1px solid var(--ring-dark-text-color);
158
158
  border-radius: 50%;
@@ -13,8 +13,7 @@ import hubConfig from '../../.storybook/hub-config';
13
13
  import Link from '@jetbrains/ring-ui/components/link/link';
14
14
 
15
15
 
16
- import PopupMenu from '@jetbrains/ring-ui/components/popup-menu/popup-menu';
17
- import Dropdown from '@jetbrains/ring-ui/components/dropdown/dropdown';
16
+ import DropdownMenu from '@jetbrains/ring-ui/components/dropdown-menu/dropdown-menu';
18
17
  import showAuthDialog from '@jetbrains/ring-ui/components/auth-dialog-service/auth-dialog-service';
19
18
 
20
19
  import Theme from '@jetbrains/ring-ui/components/global/theme';
@@ -77,13 +76,13 @@ export const header = ({isCompact, ...args}) => {
77
76
  <TrayIcon title="Help" icon={helpIcon}/>
78
77
  <TrayIcon title="What's new" icon={giftIcon}/>
79
78
  <TrayIcon title="Search" icon={searchIcon}/>
80
- <Dropdown
81
- anchor={({active}) => (
82
- <TrayIcon title="Settings" active={active} icon={settingsIcon}/>
79
+ <DropdownMenu
80
+ data={[{label: 'Test'}, {label: 'Test2'}]}
81
+ anchor={({active, pinned, ...ariaProps}) => (
82
+ <TrayIcon title="Settings" active={active} icon={settingsIcon} {...ariaProps}/>
83
83
  )}
84
- >
85
- <PopupMenu top={-12} closeOnSelect data={[{label: 'Test'}, {label: 'Test2'}]}/>
86
- </Dropdown>
84
+ menuProps={{top: -12}}
85
+ />
87
86
  <SmartServices auth={auth}/>
88
87
  <SmartProfile auth={auth} hasUpdates LinkComponent={Comp}/>
89
88
  </Tray>
@@ -4,7 +4,7 @@ import classNames from 'classnames';
4
4
 
5
5
  import Avatar, {Size} from '../avatar/avatar';
6
6
  import Button from '../button/button';
7
- import Dropdown from '../dropdown/dropdown';
7
+ import DropdownMenu from '../dropdown-menu/dropdown-menu';
8
8
  import PopupMenu from '../popup-menu/popup-menu';
9
9
 
10
10
  import styles from './header.css';
@@ -162,21 +162,20 @@ export default class Profile extends PureComponent {
162
162
  ].filter(it => !!it);
163
163
 
164
164
  return (
165
- <Dropdown
165
+ <DropdownMenu
166
166
  {...props}
167
167
  title={user.name}
168
168
  anchor={anchor}
169
+ data={renderPopupItems(items)}
169
170
  data-test="ring-profile"
170
171
  className={classNames(styles.profile, className)}
171
- >
172
- <PopupMenu
173
- closeOnSelect={closeOnSelect}
174
- data={renderPopupItems(items)}
175
- left={-2}
176
- top={-8}
177
- sidePadding={32}
178
- />
179
- </Dropdown>
172
+ menuProps={{
173
+ closeOnSelect,
174
+ left: -2,
175
+ top: -8,
176
+ sidePadding: 32
177
+ }}
178
+ />
180
179
  );
181
180
  }
182
181
  }
@@ -192,5 +192,5 @@ export default class HTTP {
192
192
  method: 'POST',
193
193
  ...params
194
194
  })
195
- )
195
+ );
196
196
  }
@@ -16,22 +16,22 @@
16
16
 
17
17
  pointer-events: none;
18
18
 
19
- &[width='10'] {
19
+ &[width="10"] {
20
20
  vertical-align: -1px;
21
21
  }
22
22
 
23
- &[width='14'] {
23
+ &[width="14"] {
24
24
  margin-right: -2px;
25
25
  margin-left: 0;
26
26
 
27
27
  vertical-align: -3px;
28
28
  }
29
29
 
30
- &[width='16'] {
30
+ &[width="16"] {
31
31
  vertical-align: -3px;
32
32
  }
33
33
 
34
- &[width='20'] {
34
+ &[width="20"] {
35
35
  vertical-align: -2px;
36
36
  }
37
37
 
@@ -44,6 +44,7 @@
44
44
  }
45
45
 
46
46
  /* HACK: This media query hack makes styles applied for WebKit browsers only */
47
+ /* stylelint-disable-next-line media-feature-name-no-vendor-prefix */
47
48
  @media screen and (-webkit-min-device-pixel-ratio: 0) {
48
49
  .glyph {
49
50
  width: auto; /* Safari size bug workaround, see https://youtrack.jetbrains.com/issue/RG-1983 */
@@ -96,12 +96,13 @@
96
96
  width: 100%;
97
97
  height: calc(unit * 3);
98
98
 
99
- content: '';
99
+ content: "";
100
100
 
101
101
  pointer-events: none;
102
102
 
103
103
  opacity: 0.8;
104
- background: linear-gradient(to top, gradientStart, gradientStop); /* stylelint-disable-line function-linear-gradient-no-nonstandard-direction */
104
+
105
+ background: linear-gradient(to top, gradientStart, gradientStop);
105
106
  }
106
107
 
107
108
  .contentWithTopFade:first-child::before {
@@ -119,7 +120,7 @@
119
120
  width: 100%;
120
121
  height: calc(unit * 3);
121
122
 
122
- content: '';
123
+ content: "";
123
124
  pointer-events: none;
124
125
 
125
126
  opacity: 0.8;
@@ -70,7 +70,9 @@
70
70
 
71
71
  :global(.ring-island__header-btn),
72
72
  :global(.ring-island__header-button:hover) {
73
- background: var(--ring-hover-background-color) linear-gradient(to top, var(--ring-hover-background-color), var(--ring-content-background-color));
73
+ background:
74
+ var(--ring-hover-background-color)
75
+ linear-gradient(to top, var(--ring-hover-background-color), var(--ring-content-background-color));
74
76
  }
75
77
 
76
78
  :global(.ring-island__header-btn),
@@ -570,7 +570,11 @@ export default class List extends Component {
570
570
  )}
571
571
  </CellMeasurer>
572
572
  )
573
- : cloneElement(el, {key: itemKey});
573
+ : (
574
+ <div role="row" id={itemId} key={itemKey}>
575
+ <div role="cell">{cloneElement(el)}</div>
576
+ </div>
577
+ );
574
578
  };
575
579
 
576
580
  addItemDataTestToProp = props => {
@@ -679,6 +683,7 @@ export default class List extends Component {
679
683
  >
680
684
  <div
681
685
  aria-label={this.props.ariaLabel}
686
+ role="grid"
682
687
  style={maxHeight
683
688
  ? {maxHeight: this.getVisibleListHeight(this.props)}
684
689
  : null
@@ -24,6 +24,8 @@ export default class ListCustom extends PureComponent {
24
24
  onMouseOver: PropTypes.func,
25
25
  onMouseUp: PropTypes.func,
26
26
  onCheckboxChange: PropTypes.func,
27
+ role: PropTypes.string,
28
+ tagName: PropTypes.string,
27
29
  'data-test': PropTypes.string
28
30
  };
29
31
 
@@ -51,6 +53,8 @@ export default class ListCustom extends PureComponent {
51
53
  onCheckboxChange,
52
54
  onMouseOver,
53
55
  onMouseUp,
56
+ role,
57
+ tagName,
54
58
  ...restProps
55
59
  } = this.props;
56
60
  const classes = classNames(styles.item, className, {
@@ -65,9 +69,11 @@ export default class ListCustom extends PureComponent {
65
69
  }, restProps['data-test']);
66
70
 
67
71
  const content = (typeof template === 'function') ? template(this.props) : template;
72
+ const TagName = tagName || 'span';
73
+
68
74
  return (
69
- <span
70
- role="button"
75
+ <TagName
76
+ role={role || 'button'}
71
77
  tabIndex={tabIndex}
72
78
  onClick={onClick}
73
79
  onKeyPress={this.handleKeyPress}
@@ -78,7 +84,7 @@ export default class ListCustom extends PureComponent {
78
84
  data-test={dataTest}
79
85
  >
80
86
  {content}
81
- </span>
87
+ </TagName>
82
88
  );
83
89
  }
84
90
  }
@@ -35,6 +35,8 @@ export default class ListItem extends PureComponent {
35
35
  PropTypes.element,
36
36
  PropTypes.array
37
37
  ]),
38
+ showGeneratedAvatar: PropTypes.bool,
39
+ username: PropTypes.string,
38
40
  avatar: PropTypes.string,
39
41
  subavatar: PropTypes.string,
40
42
  glyph: PropTypes.oneOfType([PropTypes.string, PropTypes.elementType]),
@@ -97,11 +99,14 @@ export default class ListItem extends PureComponent {
97
99
  onMouseUp,
98
100
  rightNodes,
99
101
  leftNodes,
102
+ showGeneratedAvatar,
103
+ username,
100
104
  ...restProps
101
105
  } = this.props;
102
106
 
103
107
  const checkable = checkbox !== undefined;
104
- const hasLeftNodes = leftNodes || glyph || avatar;
108
+ const shouldShowGeneratedAvatar = showGeneratedAvatar && username != null;
109
+ const hasLeftNodes = leftNodes || glyph || avatar || shouldShowGeneratedAvatar;
105
110
  const showCheckbox = checkable && (checkbox || !hasLeftNodes || (hover && !disabled));
106
111
 
107
112
  const classes = classNames(styles.item, globalStyles.resetButton, className, {
@@ -177,12 +182,13 @@ export default class ListItem extends PureComponent {
177
182
  size={this.props.iconSize}
178
183
  />
179
184
  )}
180
- {avatar && (
185
+ {(avatar || shouldShowGeneratedAvatar) && (
181
186
  <Avatar
182
187
  className={styles.avatar}
183
188
  url={avatar}
184
189
  size={AvatarSize.Size20}
185
190
  subavatar={subavatar}
191
+ username={username}
186
192
  />
187
193
  )}
188
194
  </div>
@@ -17,7 +17,8 @@ export default class ListLink extends PureComponent {
17
17
  description: PropTypes.string,
18
18
  label: PropTypes.oneOfType([
19
19
  PropTypes.element,
20
- PropTypes.string
20
+ PropTypes.string,
21
+ PropTypes.func
21
22
  ]),
22
23
  rgItemType: PropTypes.number,
23
24
  scrolling: PropTypes.bool,
@@ -49,7 +49,7 @@
49
49
  width: calc(unit * 2);
50
50
  height: calc(unit * 2);
51
51
 
52
- content: '';
52
+ content: "";
53
53
  animation: pulse 0.85s cubic-bezier(0.68, 0, 0.74, 0.74) infinite alternate;
54
54
  }
55
55
  }
@@ -14,7 +14,7 @@
14
14
 
15
15
  height: 100%;
16
16
 
17
- content: '';
17
+ content: "";
18
18
 
19
19
  vertical-align: middle;
20
20
  }
@@ -28,7 +28,7 @@
28
28
  bottom: 0;
29
29
  left: 0;
30
30
 
31
- content: '';
31
+ content: "";
32
32
 
33
33
  border-radius: var(--ring-border-radius);
34
34
 
@@ -40,8 +40,10 @@ export const basic = args => (
40
40
 
41
41
  basic.storyName = 'basic';
42
42
  basic.args = {
43
- tailOffset: 32,
44
- onDismiss: null
43
+ tailOffset: 32
44
+ };
45
+ basic.parameters = {
46
+ actions: {argTypesRegex: '^onClose$'}
45
47
  };
46
48
 
47
49
  export const withOnDissmiss = args => (
@@ -69,7 +71,8 @@ export const wishNarrowAnchor = args => (
69
71
 
70
72
  wishNarrowAnchor.storyName = 'with narrow anchor';
71
73
  wishNarrowAnchor.args = {
72
- popupProps: {left: -8},
73
- onClose: null,
74
- onDismiss: null
74
+ popupProps: {left: -8}
75
+ };
76
+ wishNarrowAnchor.parameters = {
77
+ actions: {argTypesRegex: null}
75
78
  };
@@ -33,6 +33,7 @@ export default class Pager extends PureComponent {
33
33
  className: PropTypes.string,
34
34
  translations: PropTypes.object,
35
35
  loader: PropTypes.bool,
36
+ loaderNavigation: PropTypes.bool,
36
37
  hrefFunc: PropTypes.func //function which generates href for all pager's buttons based on pager state passed as a function parameter, either this function or onPageChange should be provided
37
38
  };
38
39
 
@@ -53,6 +54,7 @@ export default class Pager extends PureComponent {
53
54
  previousPage: 'Previous'
54
55
  },
55
56
  loader: false,
57
+ loaderNavigation: false,
56
58
  onPageSizeChange: () => {},
57
59
  onLoadPage: () => {}
58
60
  };
@@ -109,7 +111,7 @@ export default class Pager extends PureComponent {
109
111
  href={this.generateHref(page)}
110
112
  key={key}
111
113
  active={active}
112
- disabled={this.props.loader && !active}
114
+ disabled={this.props.loader && !active && !this.props.loaderNavigation}
113
115
  loader={this.props.loader && active}
114
116
  {...this.getClickProps(this.handlePageChange(page))}
115
117
  >
@@ -187,7 +189,7 @@ export default class Pager extends PureComponent {
187
189
 
188
190
  return (
189
191
  <div className={style.links}>
190
- {prevLinkAvailable && !this.props.loader
192
+ {prevLinkAvailable && (!this.props.loader || this.props.loaderNavigation)
191
193
  ? (
192
194
  <Link
193
195
  href={prevLinkHref}
@@ -202,7 +204,7 @@ export default class Pager extends PureComponent {
202
204
  )
203
205
  }
204
206
 
205
- {nextLinkAvailable && !this.props.loader
207
+ {nextLinkAvailable && (!this.props.loader || this.props.loaderNavigation)
206
208
  ? (
207
209
  <Link
208
210
  href={nextLinkHref}
@@ -54,7 +54,7 @@ export default class Permissions {
54
54
  query
55
55
  }
56
56
  })
57
- )
57
+ );
58
58
 
59
59
  /**
60
60
  * Returns function, which cuts off prefix from server-side permission name
@@ -61,7 +61,7 @@
61
61
  bottom: 0;
62
62
  left: 0;
63
63
 
64
- content: '';
64
+ content: "";
65
65
  animation: progress-bar 2500ms linear infinite;
66
66
 
67
67
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0), rgba(255, 255, 255, 0.6), rgba(0, 0, 0, 0));
@@ -35,15 +35,15 @@ export const basic = () => {
35
35
  return (
36
36
  <div>
37
37
  <div style={{height: '25px', paddingTop: '25px'}}>
38
- <ProgressBar value={value} style={{width: 288}}/>
38
+ <ProgressBar label="Progress" value={value} style={{width: 288}}/>
39
39
  </div>
40
40
 
41
41
  <div style={{height: '25px', paddingTop: '25px', background: '#000'}}>
42
- <ProgressBar value={value} theme={Theme.DARK} style={{width: 288}}/>
42
+ <ProgressBar label="Progress" value={value} theme={Theme.DARK} style={{width: 288}}/>
43
43
  </div>
44
44
 
45
45
  <div style={{height: '25px', paddingTop: '25px', background: '#F0F0F0'}}>
46
- <ProgressBar value={value} style={{width: 288}}/>
46
+ <ProgressBar label="Progress" value={value} style={{width: 288}}/>
47
47
  </div>
48
48
  </div>
49
49
  );
@@ -23,6 +23,7 @@ export default class ProgressBar extends PureComponent {
23
23
  }
24
24
 
25
25
  static propTypes = {
26
+ label: PropTypes.string,
26
27
  theme: PropTypes.string,
27
28
 
28
29
  /**
@@ -58,7 +59,8 @@ export default class ProgressBar extends PureComponent {
58
59
  static defaultProps = {
59
60
  max: 1.0,
60
61
  value: 0,
61
- theme: Theme.LIGHT
62
+ theme: Theme.LIGHT,
63
+ label: 'Progress'
62
64
  };
63
65
 
64
66
  progressbarWrapperRef = el => {
@@ -70,7 +72,7 @@ export default class ProgressBar extends PureComponent {
70
72
  };
71
73
 
72
74
  render() {
73
- const {theme, className, global, max, value, ...otherProps} = this.props;
75
+ const {theme, className, global, max, value, label, ...otherProps} = this.props;
74
76
 
75
77
  const width = value ? `${ProgressBar.toPercent(value, max)}%` : null;
76
78
  const classes = classNames(styles.progressBar, className, {
@@ -89,6 +91,7 @@ export default class ProgressBar extends PureComponent {
89
91
  className={styles.line}
90
92
  ref={this.progressbarRef}
91
93
  role="progressbar"
94
+ aria-label={label}
92
95
  aria-valuenow={value}
93
96
  aria-valuemin={0}
94
97
  aria-valuemax={max}