@jetbrains/ring-ui 4.1.0-beta.13 → 4.1.0-beta.17

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 (382) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +14 -13
  3. package/components/alert/container.css +1 -1
  4. package/components/auth/auth.test.js +14 -7
  5. package/components/auth/auth__core.js +12 -6
  6. package/components/avatar/avatar.css +4 -1
  7. package/components/avatar/avatar.examples.js +3 -2
  8. package/components/avatar/avatar.js +31 -6
  9. package/components/avatar/fallback-avatar.js +136 -0
  10. package/components/avatar-editor-ng/avatar-editor-ng.css +2 -2
  11. package/components/avatar-editor-ng/avatar-editor-ng.js +2 -1
  12. package/components/avatar-editor-ng/{avatar-editor-ng.html → avatar-editor-ng__template.js} +2 -2
  13. package/components/button/button.css +2 -2
  14. package/components/button-group/button-group.js +1 -1
  15. package/components/button-group/caption.js +1 -1
  16. package/components/button-ng/button-ng.js +1 -1
  17. package/components/button-set-ng/button-set-ng.js +3 -1
  18. package/components/checkbox/checkbox.css +1 -1
  19. package/components/code/code.js +1 -1
  20. package/components/content-layout/content-layout.css +1 -1
  21. package/components/data-list/data-list.css +1 -1
  22. package/components/date-picker/date-input.js +5 -4
  23. package/components/date-picker/date-picker.css +10 -6
  24. package/components/date-picker/date-picker.js +16 -14
  25. package/components/date-picker/date-popup.js +8 -4
  26. package/components/date-picker/month-names.js +8 -5
  27. package/components/date-picker/month.js +6 -2
  28. package/components/date-picker/weekdays.js +10 -2
  29. package/components/dialog-ng/dialog-ng.js +6 -7
  30. package/components/dialog-ng/{dialog-ng.html → dialog-ng__template.js} +2 -2
  31. package/components/dropdown/dropdown.examples.js +36 -1
  32. package/components/dropdown-menu/dropdown-menu.examples.js +47 -0
  33. package/components/dropdown-menu/dropdown-menu.js +117 -0
  34. package/components/dropdown-menu/dropdown-menu.test.js +76 -0
  35. package/components/error-bubble/error-bubble-legacy.css +1 -1
  36. package/components/error-bubble/error-bubble.css +1 -1
  37. package/components/error-page/error-page.css +2 -2
  38. package/components/footer-ng/footer-ng.js +13 -3
  39. package/components/form/form.css +2 -2
  40. package/components/form-ng/form-ng.js +3 -1
  41. package/components/global/global.css +1 -1
  42. package/components/global/variables.css +8 -1
  43. package/components/grid/grid.css +10 -9
  44. package/components/header/header.css +1 -1
  45. package/components/header/header.examples.js +7 -8
  46. package/components/header/profile.js +10 -11
  47. package/components/http/http.js +1 -1
  48. package/components/icon/icon.css +5 -4
  49. package/components/island/island.css +4 -3
  50. package/components/island-legacy/island-legacy.css +3 -1
  51. package/components/list/list.js +6 -1
  52. package/components/list/list__custom.js +9 -3
  53. package/components/list/list__item.js +8 -2
  54. package/components/loader-inline/loader-inline.css +1 -1
  55. package/components/loader-screen/loader-screen.css +1 -1
  56. package/components/message/message.css +1 -1
  57. package/components/pager/pager.js +5 -3
  58. package/components/permissions/permissions.js +1 -1
  59. package/components/progress-bar/progress-bar.css +1 -1
  60. package/components/query-assist/query-assist.css +1 -1
  61. package/components/save-field-ng/save-field-ng.js +3 -1
  62. package/components/save-field-ng/{save-field-ng.html → save-field-ng__template.js} +2 -2
  63. package/components/select/select.css +4 -0
  64. package/components/select/select.examples.js +13 -0
  65. package/components/select/select.js +6 -6
  66. package/components/shortcuts-hint-ng/shortcuts-hint-ng.css +1 -1
  67. package/components/shortcuts-hint-ng/shortcuts-hint-ng.js +1 -1
  68. package/components/shortcuts-hint-ng/{shortcuts-hint-ng.html → shortcuts-hint-ng__template.js} +2 -2
  69. package/components/sidebar/sidebar.css +1 -0
  70. package/components/sidebar-ng/sidebar-ng.js +6 -2
  71. package/components/sidebar-ng/{sidebar-ng__button.html → sidebar-ng__button-template.js} +2 -2
  72. package/components/sidebar-ng/{sidebar-ng.html → sidebar-ng__template.js} +2 -2
  73. package/components/table/table.css +2 -1
  74. package/components/table-legacy/table-legacy.css +2 -2
  75. package/components/table-legacy-ng/table-legacy-ng.js +38 -5
  76. package/components/table-legacy-ng/table-legacy-ng__pager.js +7 -1
  77. package/components/tabs-ng/tabs-ng.js +3 -1
  78. package/components/tabs-ng/{tabs-ng.html → tabs-ng__template.js} +2 -2
  79. package/components/tag/tag.css +5 -2
  80. package/components/tags-input/tags-input.js +5 -2
  81. package/components/template-ng/template-ng.js +1 -1
  82. package/components/tooltip/tooltip.js +7 -2
  83. package/components/user-agreement/user-agreement.css +1 -1
  84. package/dist/_helpers/button-group.js +3 -0
  85. package/dist/_helpers/button-set.js +3 -0
  86. package/dist/_helpers/button-toolbar.js +3 -0
  87. package/dist/_helpers/button__classes.js +1 -1
  88. package/dist/_helpers/checkbox.js +3 -0
  89. package/dist/_helpers/date-picker.js +1 -1
  90. package/dist/_helpers/error-message.js +3 -0
  91. package/dist/_helpers/footer.js +121 -0
  92. package/dist/_helpers/grid.js +1 -1
  93. package/dist/_helpers/group.js +3 -0
  94. package/dist/_helpers/header.js +1 -1
  95. package/dist/_helpers/icon.js +3 -0
  96. package/dist/_helpers/inject-styles.js +1 -1
  97. package/dist/_helpers/input.js +3 -0
  98. package/dist/_helpers/island.js +1 -1
  99. package/dist/_helpers/link.js +3 -0
  100. package/dist/_helpers/loader-screen.js +3 -0
  101. package/dist/_helpers/panel.js +3 -0
  102. package/dist/_helpers/query-assist__suggestions.js +1 -1
  103. package/dist/_helpers/radio.js +3 -0
  104. package/dist/_helpers/sidebar.js +1 -1
  105. package/dist/_helpers/table.js +1 -1
  106. package/dist/_helpers/tabs.js +1 -1
  107. package/dist/_helpers/title.js +1 -1
  108. package/dist/alert/alert.js +3 -3
  109. package/dist/alert/container.js +2 -2
  110. package/dist/alert-service/alert-service.js +3 -2
  111. package/dist/analytics/analytics.js +2 -2
  112. package/dist/analytics/analytics__custom-plugin.js +1 -1
  113. package/dist/analytics/analytics__fus-plugin.js +1 -1
  114. package/dist/analytics/analytics__ga-plugin.js +1 -1
  115. package/dist/analytics/analytics__plugin-utils.js +1 -1
  116. package/dist/analytics-ng/analytics-ng.js +94 -0
  117. package/dist/auth/auth.js +4 -1
  118. package/dist/auth/auth__core.js +15 -9
  119. package/dist/auth/background-flow.js +1 -2
  120. package/dist/auth/down-notification.js +5 -2
  121. package/dist/auth/iframe-flow.js +5 -2
  122. package/dist/auth/landing-entry.js +1 -1
  123. package/dist/auth/landing.js +5 -2
  124. package/dist/auth/request-builder.js +1 -1
  125. package/dist/auth/response-parser.js +1 -1
  126. package/dist/auth/storage.js +3 -2
  127. package/dist/auth/token-validator.js +1 -1
  128. package/dist/auth/window-flow.js +1 -1
  129. package/dist/auth-dialog/auth-dialog.js +4 -3
  130. package/dist/auth-dialog-service/auth-dialog-service.js +3 -2
  131. package/dist/auth-ng/auth-ng.js +203 -0
  132. package/dist/auth-ng/auth-ng.mock.js +33 -0
  133. package/dist/autofocus-ng/autofocus-ng.js +50 -0
  134. package/dist/avatar/avatar.js +19 -7
  135. package/dist/avatar/fallback-avatar.js +141 -0
  136. package/dist/avatar-editor-ng/avatar-editor-ng.js +164 -0
  137. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +30 -0
  138. package/dist/avatar-ng/avatar-ng.js +18 -0
  139. package/dist/badge/badge.js +1 -1
  140. package/dist/badge-ng/badge-ng.js +16 -0
  141. package/dist/breadcrumb-ng/breadcrumb-ng.js +61 -0
  142. package/dist/button/button.js +3 -2
  143. package/dist/button-group/button-group.js +3 -3
  144. package/dist/button-group/caption.js +24 -5
  145. package/dist/button-group-ng/button-group-ng.js +38 -0
  146. package/dist/button-ng/button-ng.js +223 -0
  147. package/dist/button-set/button-set.js +2 -3
  148. package/dist/button-set-ng/button-set-ng.js +19 -0
  149. package/dist/button-toolbar/button-toolbar.js +2 -3
  150. package/dist/button-toolbar-ng/button-toolbar-ng.js +23 -0
  151. package/dist/caret/caret.js +1 -1
  152. package/dist/checkbox/checkbox.js +4 -4
  153. package/dist/checkbox-ng/checkbox-ng.js +55 -0
  154. package/dist/code/code.js +136 -0
  155. package/dist/compiler-ng/compiler-ng.js +53 -0
  156. package/dist/confirm/confirm.js +4 -2
  157. package/dist/confirm-ng/confirm-ng.js +66 -0
  158. package/dist/confirm-service/confirm-service.js +4 -3
  159. package/dist/content-layout/content-layout.js +1 -1
  160. package/dist/contenteditable/contenteditable.js +1 -1
  161. package/dist/data-list/data-list.js +6 -3
  162. package/dist/data-list/data-list.mock.js +2 -2
  163. package/dist/data-list/item.js +5 -3
  164. package/dist/data-list/selection.js +1 -1
  165. package/dist/data-list/title.js +3 -1
  166. package/dist/data-list-ng/data-list-ng.js +59 -0
  167. package/dist/date-picker/consts.js +1 -2
  168. package/dist/date-picker/date-input.js +10 -6
  169. package/dist/date-picker/date-picker.js +28 -16
  170. package/dist/date-picker/date-popup.js +20 -9
  171. package/dist/date-picker/day.js +1 -1
  172. package/dist/date-picker/formats.js +1 -1
  173. package/dist/date-picker/month-names.js +14 -7
  174. package/dist/date-picker/month-slider.js +1 -1
  175. package/dist/date-picker/month.js +12 -6
  176. package/dist/date-picker/months.js +1 -1
  177. package/dist/date-picker/weekdays.js +12 -4
  178. package/dist/date-picker/years.js +1 -1
  179. package/dist/dialog/dialog.js +3 -2
  180. package/dist/dialog-ng/dialog-ng.js +601 -0
  181. package/dist/dialog-ng/dialog-ng__template.js +71 -0
  182. package/dist/docked-panel-ng/docked-panel-ng.js +170 -0
  183. package/dist/dropdown/anchor.js +2 -1
  184. package/dist/dropdown/dropdown.js +3 -2
  185. package/dist/dropdown-menu/dropdown-menu.js +175 -0
  186. package/dist/error-bubble/error-bubble.js +2 -2
  187. package/dist/error-message/error-message.js +4 -4
  188. package/dist/error-message-ng/error-message-ng.js +53 -0
  189. package/dist/footer/footer.js +6 -122
  190. package/dist/footer-ng/footer-ng.js +75 -0
  191. package/dist/form-ng/form-ng.js +169 -0
  192. package/dist/global/angular-component-factory.js +1 -2
  193. package/dist/global/compose.js +1 -1
  194. package/dist/global/composeRefs.js +1 -1
  195. package/dist/global/conic-gradient.js +1 -2
  196. package/dist/global/create-stateful-context.js +1 -1
  197. package/dist/global/data-tests.js +1 -1
  198. package/dist/global/focus-sensor-hoc.js +1 -1
  199. package/dist/global/fuzzy-highlight.js +1 -1
  200. package/dist/global/get-event-key.js +1 -1
  201. package/dist/global/get-uid.js +1 -1
  202. package/dist/global/linear-function.js +1 -2
  203. package/dist/global/listeners.js +1 -1
  204. package/dist/global/memoize.js +1 -1
  205. package/dist/global/normalize-indent.js +1 -1
  206. package/dist/global/promise-with-timeout.js +1 -1
  207. package/dist/global/radial-gradient-mask.js +1 -1
  208. package/dist/global/react-dom-renderer.js +1 -1
  209. package/dist/global/rerender-hoc.js +1 -1
  210. package/dist/global/ring-angular-component.js +1 -1
  211. package/dist/global/schedule-raf.js +1 -1
  212. package/dist/global/sniffer.js +1 -1
  213. package/dist/global/supports-css.js +1 -1
  214. package/dist/global/theme.js +1 -2
  215. package/dist/global/trivial-template-tag.js +1 -1
  216. package/dist/global/variables_dark.js +1 -1
  217. package/dist/grid/col.js +1 -1
  218. package/dist/grid/row.js +1 -1
  219. package/dist/group/group.js +2 -3
  220. package/dist/group-ng/group-ng.js +11 -0
  221. package/dist/header/header.js +24 -19
  222. package/dist/header/logo.js +3 -2
  223. package/dist/header/profile.js +31 -25
  224. package/dist/header/services-link.js +1 -0
  225. package/dist/header/services.js +4 -2
  226. package/dist/header/smart-profile.js +22 -16
  227. package/dist/header/smart-services.js +5 -2
  228. package/dist/header/tray-icon.js +3 -2
  229. package/dist/header/tray.js +1 -1
  230. package/dist/heading/heading.js +2 -3
  231. package/dist/http/http.js +1 -2
  232. package/dist/http/http.mock.js +1 -1
  233. package/dist/hub-source/hub-source.js +1 -1
  234. package/dist/hub-source/hub-source__users-groups.js +1 -1
  235. package/dist/icon/icon.js +3 -2
  236. package/dist/icon/icon__svg.js +81 -6
  237. package/dist/icon/index.js +2 -1
  238. package/dist/icon-ng/icon-ng.js +89 -0
  239. package/dist/input/input.js +4 -5
  240. package/dist/input-ng/input-ng.js +166 -0
  241. package/dist/island/adaptive-island-hoc.js +1 -2
  242. package/dist/island/content.js +1 -1
  243. package/dist/island/header.js +1 -1
  244. package/dist/island/island.js +1 -2
  245. package/dist/island-legacy/content-legacy.js +1 -1
  246. package/dist/island-legacy/header-legacy.js +1 -1
  247. package/dist/island-legacy/island-legacy.js +1 -1
  248. package/dist/island-ng/island-content-ng.js +56 -0
  249. package/dist/island-ng/island-header-ng.js +32 -0
  250. package/dist/island-ng/island-ng-class-fixer.js +9 -0
  251. package/dist/island-ng/island-ng.js +31 -0
  252. package/dist/link/clickableLink.js +1 -1
  253. package/dist/link/link.js +2 -4
  254. package/dist/link-ng/link-ng.js +25 -0
  255. package/dist/list/list.js +13 -5
  256. package/dist/list/list__custom.js +8 -3
  257. package/dist/list/list__hint.js +1 -1
  258. package/dist/list/list__item.js +15 -6
  259. package/dist/list/list__link.js +2 -1
  260. package/dist/list/list__separator.js +1 -1
  261. package/dist/list/list__title.js +1 -1
  262. package/dist/list/list__users-groups-source.js +6 -2
  263. package/dist/loader/loader.js +1 -1
  264. package/dist/loader/loader__core.js +1 -1
  265. package/dist/loader-inline/loader-inline.js +1 -1
  266. package/dist/loader-inline-ng/loader-inline-ng.js +42 -0
  267. package/dist/loader-ng/loader-ng.js +43 -0
  268. package/dist/loader-screen/loader-screen.js +2 -3
  269. package/dist/loader-screen-ng/loader-screen-ng.js +99 -0
  270. package/dist/login-dialog/login-dialog.js +4 -2
  271. package/dist/login-dialog/service.js +4 -2
  272. package/dist/markdown/code.js +30 -0
  273. package/dist/markdown/heading.js +23 -0
  274. package/dist/markdown/link.js +30 -0
  275. package/dist/markdown/markdown.js +73 -0
  276. package/dist/message/message.js +4 -3
  277. package/dist/message-bundle-ng/message-bundle-ng.js +111 -0
  278. package/dist/pager/pager.js +16 -7
  279. package/dist/pager-ng/pager-ng.js +96 -0
  280. package/dist/panel/panel.js +2 -3
  281. package/dist/panel-ng/panel-ng.js +16 -0
  282. package/dist/permissions/permissions.js +1 -1
  283. package/dist/permissions/permissions__cache.js +1 -1
  284. package/dist/permissions-ng/permissions-ng.js +274 -0
  285. package/dist/place-under-ng/place-under-ng.js +157 -0
  286. package/dist/popup/popup.js +2 -3
  287. package/dist/popup/position.js +1 -2
  288. package/dist/popup-menu/popup-menu.js +6 -3
  289. package/dist/progress-bar/progress-bar.js +2 -2
  290. package/dist/progress-bar-ng/progress-bar-ng.js +15 -0
  291. package/dist/promised-click-ng/promised-click-ng.js +126 -0
  292. package/dist/proxy-attrs/proxy-attrs.js +1 -1
  293. package/dist/query-assist/query-assist.js +6 -3
  294. package/dist/query-assist/query-assist__suggestions.js +5 -1
  295. package/dist/query-assist-ng/query-assist-ng.js +82 -0
  296. package/dist/radio/radio.js +2 -1
  297. package/dist/radio/radio__item.js +2 -4
  298. package/dist/radio-ng/radio-ng.js +63 -0
  299. package/dist/save-field-ng/save-field-ng.js +335 -0
  300. package/dist/save-field-ng/save-field-ng__template.js +34 -0
  301. package/dist/select/select.js +13 -11
  302. package/dist/select/select__filter.js +6 -1
  303. package/dist/select/select__popup.js +7 -2
  304. package/dist/select-ng/select-ng.js +621 -0
  305. package/dist/select-ng/select-ng__lazy.js +150 -0
  306. package/dist/select-ng/select-ng__options.js +145 -0
  307. package/dist/shortcuts/core.js +2 -2
  308. package/dist/shortcuts/shortcuts-hoc.js +1 -1
  309. package/dist/shortcuts/shortcuts.js +6 -6
  310. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +120 -0
  311. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +50 -0
  312. package/dist/shortcuts-ng/shortcuts-ng.js +261 -0
  313. package/dist/sidebar-ng/sidebar-ng.js +111 -0
  314. package/dist/sidebar-ng/sidebar-ng__button-template.js +20 -0
  315. package/dist/sidebar-ng/sidebar-ng__template.js +12 -0
  316. package/dist/storage/storage.js +3 -2
  317. package/dist/storage/storage__fallback.js +1 -1
  318. package/dist/storage/storage__local.js +3 -2
  319. package/dist/style.css +1 -1
  320. package/dist/tab-trap/tab-trap.js +1 -2
  321. package/dist/table/cell.js +1 -1
  322. package/dist/table/disable-hover-hoc.js +1 -1
  323. package/dist/table/header-cell.js +3 -2
  324. package/dist/table/header.js +4 -2
  325. package/dist/table/multitable.js +1 -1
  326. package/dist/table/row-with-focus-sensor.js +4 -2
  327. package/dist/table/row.js +4 -2
  328. package/dist/table/selection-adapter.js +1 -1
  329. package/dist/table/selection-shortcuts-hoc.js +1 -1
  330. package/dist/table/selection.js +1 -1
  331. package/dist/table/smart-table.js +4 -2
  332. package/dist/table/table.js +4 -3
  333. package/dist/table-legacy-ng/table-legacy-ng.js +501 -0
  334. package/dist/table-legacy-ng/table-legacy-ng__pager.js +122 -0
  335. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +123 -0
  336. package/dist/table-legacy-ng/table-legacy-ng__selection.js +179 -0
  337. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +56 -0
  338. package/dist/table-ng/smart-table-ng.js +65 -0
  339. package/dist/table-ng/table-ng.js +64 -0
  340. package/dist/tabs/collapsible-more.js +5 -1
  341. package/dist/tabs/collapsible-tab.js +2 -1
  342. package/dist/tabs/collapsible-tabs.js +6 -3
  343. package/dist/tabs/dumb-tabs.js +6 -2
  344. package/dist/tabs/smart-tabs.js +6 -2
  345. package/dist/tabs/tab-link.js +2 -1
  346. package/dist/tabs/tab.js +1 -1
  347. package/dist/tabs/tabs.js +5 -1
  348. package/dist/tabs-ng/tabs-ng.js +193 -0
  349. package/dist/tabs-ng/tabs-ng__template.js +40 -0
  350. package/dist/tag/tag.js +4 -3
  351. package/dist/tags-input/tags-input.js +12 -8
  352. package/dist/tags-input-ng/tags-input-ng.js +89 -0
  353. package/dist/tags-list/tags-list.js +3 -2
  354. package/dist/template-ng/template-ng.js +70 -0
  355. package/dist/text/text.js +1 -1
  356. package/dist/theme-ng/theme-ng.js +44 -0
  357. package/dist/title-ng/title-ng.js +114 -0
  358. package/dist/toggle/toggle.js +2 -3
  359. package/dist/toggle-ng/toggle-ng.js +16 -0
  360. package/dist/tooltip/tooltip.js +8 -4
  361. package/dist/tooltip-ng/tooltip-ng.js +98 -0
  362. package/dist/user-agreement/service.js +409 -0
  363. package/dist/user-agreement/toolbox.eula.js +162 -0
  364. package/dist/user-agreement/user-agreement.js +167 -0
  365. package/dist/user-card/card.js +3 -0
  366. package/dist/user-card/smart-user-card-tooltip.js +5 -2
  367. package/dist/user-card/tooltip.js +5 -2
  368. package/dist/user-card/user-card.js +5 -2
  369. package/dist/user-card-ng/user-card-ng.js +59 -0
  370. package/package.json +62 -64
  371. package/webpack.config.js +10 -8
  372. package/components/button-set-ng/button-set-ng.html +0 -1
  373. package/components/footer-ng/footer-ng.html +0 -13
  374. package/components/form-ng/form-ng__error-bubble.html +0 -3
  375. package/components/table-legacy-ng/table-legacy-ng.html +0 -4
  376. package/components/table-legacy-ng/table-legacy-ng__column.html +0 -12
  377. package/components/table-legacy-ng/table-legacy-ng__header.html +0 -4
  378. package/components/table-legacy-ng/table-legacy-ng__pager.html +0 -7
  379. package/components/table-legacy-ng/table-legacy-ng__row.html +0 -12
  380. package/components/table-legacy-ng/table-legacy-ng__title.html +0 -9
  381. package/dist/_helpers/caption.js +0 -25
  382. package/dist/_helpers/icon__svg.js +0 -82
@@ -46,7 +46,7 @@
46
46
  width: unit;
47
47
  height: unit;
48
48
 
49
- content: '';
49
+ content: "";
50
50
  transform: rotate(45deg);
51
51
 
52
52
  border: 1px solid var(--ring-popup-border-color);
@@ -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
 
@@ -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>
@@ -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
 
@@ -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));
@@ -161,7 +161,7 @@
161
161
  }
162
162
 
163
163
  .queryAssist {
164
- composes: font from '../global/global.css';
164
+ composes: font from "../global/global.css";
165
165
 
166
166
  position: relative;
167
167
 
@@ -13,6 +13,8 @@ import Shortcuts from '../shortcuts-ng/shortcuts-ng';
13
13
  import Button from '../button-ng/button-ng';
14
14
  import PromisedClick from '../promised-click-ng/promised-click-ng';
15
15
 
16
+ import template from './save-field-ng__template';
17
+
16
18
  const angularModule = angular.module('Ring.save-field', [
17
19
  MessageBundle,
18
20
 
@@ -64,7 +66,7 @@ angularModule.directive(
64
66
  return {
65
67
  require: 'rgSaveField',
66
68
  transclude: true,
67
- template: require('./save-field-ng.html'),
69
+ template,
68
70
  scope: {
69
71
  api: '=?',
70
72
  value: '=',
@@ -1,4 +1,4 @@
1
- <div class="ring-save-field" ng-form="saveFieldForm" rg-shortcuts="ring-save-field" shortcuts-map="keyMap" shortcuts-focus="focus">
1
+ export default `<div class="ring-save-field" ng-form="saveFieldForm" rg-shortcuts="ring-save-field" shortcuts-map="keyMap" shortcuts-focus="focus">
2
2
  <span class="ring-save-field__transclude-placeholder" ng-transclude=""></span>
3
3
 
4
4
  <rg-button
@@ -29,4 +29,4 @@
29
29
  >
30
30
  {{wording.saved}}
31
31
  </rg-button>
32
- </div>
32
+ </div>`;
@@ -248,3 +248,7 @@
248
248
 
249
249
  color: inherit;
250
250
  }
251
+
252
+ .avatar {
253
+ vertical-align: -6px;
254
+ }
@@ -36,6 +36,7 @@ export default {
36
36
  };
37
37
 
38
38
  export const withAFilterAndTags = args => <Select {...args}/>;
39
+ export const withAvatars = args => <Select {...args}/>;
39
40
 
40
41
  {
41
42
  const avatarUrl = `${hubConfig.serverUri}/api/rest/avatar/default?username=blue`;
@@ -53,6 +54,12 @@ export const withAFilterAndTags = args => <Select {...args}/>;
53
54
  label: 'With avatar',
54
55
  key: 5,
55
56
  avatar: avatarUrl
57
+ },
58
+ {
59
+ label: 'With generated avatar',
60
+ showGeneratedAvatar: true,
61
+ username: 'With generated avatar',
62
+ key: 6
56
63
  }
57
64
  ];
58
65
 
@@ -71,6 +78,12 @@ export const withAFilterAndTags = args => <Select {...args}/>;
71
78
  data: tags,
72
79
  selected: [tags[0]]
73
80
  };
81
+
82
+ withAvatars.args = {
83
+ data: tags,
84
+ selected: tags[4],
85
+ type: Select.Type.BUTTON
86
+ };
74
87
  }
75
88
 
76
89
  withAFilterAndTags.storyName = 'with a filter and tags';
@@ -220,6 +220,7 @@ export default class Select extends Component {
220
220
 
221
221
  static propTypes = {
222
222
  className: PropTypes.string,
223
+ buttonClassName: PropTypes.string,
223
224
  id: PropTypes.string,
224
225
  multiple: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
225
226
  allowAny: PropTypes.bool,
@@ -521,10 +522,6 @@ export default class Select extends Component {
521
522
  return getSelectedIndex(selected, data, this.props.multiple);
522
523
  }
523
524
 
524
- popupRef = el => {
525
- this._popup = el;
526
- };
527
-
528
525
  _getResetOption() {
529
526
  const isOptionsSelected = this.state.selected && this.state.selected.length;
530
527
  const hasTagsResetProp = this.props.tags && this.props.tags.reset;
@@ -1034,10 +1031,12 @@ export default class Select extends Component {
1034
1031
  }
1035
1032
 
1036
1033
  _getAvatar() {
1037
- return this.state.selected && this.state.selected.avatar && (
1034
+ return this.state.selected &&
1035
+ (this.state.selected.avatar || this.state.selected.showGeneratedAvatar) && (
1038
1036
  <Avatar
1039
1037
  className={styles.avatar}
1040
1038
  url={this.state.selected.avatar}
1039
+ username={this.state.selected.username}
1041
1040
  size={AvatarSize.Size20}
1042
1041
  />
1043
1042
  );
@@ -1152,6 +1151,7 @@ export default class Select extends Component {
1152
1151
  id={this.props.id}
1153
1152
  onClick={this._clickHandler}
1154
1153
  className={classNames(
1154
+ this.props.buttonClassName,
1155
1155
  styles.buttonValue,
1156
1156
  {
1157
1157
  [styles.buttonValueOpen]: this.state.showPopup
@@ -1192,7 +1192,7 @@ export default class Select extends Component {
1192
1192
  onClick={this._clickHandler}
1193
1193
  type="button"
1194
1194
  disabled={this.props.disabled}
1195
- className={classNames(styles.value, {
1195
+ className={classNames(this.props.buttonClassName, styles.value, {
1196
1196
  [styles.open]: this.state.showPopup,
1197
1197
  [styles.label]: this._selectionIsEmpty()
1198
1198
  })}
@@ -43,7 +43,7 @@
43
43
 
44
44
  height: calc(unit / 2);
45
45
 
46
- content: '';
46
+ content: "";
47
47
  }
48
48
 
49
49
  :global(.shortcuts-hint__search-input-wrapper) {
@@ -10,7 +10,7 @@ import IconNg from '../icon-ng/icon-ng';
10
10
  import InputNg from '../input-ng/input-ng';
11
11
  import {getShortcutTitle} from '../shortcuts/shortcut-title';
12
12
 
13
- import HintPopupTpl from './shortcuts-hint-ng.html';
13
+ import HintPopupTpl from './shortcuts-hint-ng__template';
14
14
  import './shortcuts-hint-ng.css';
15
15
 
16
16
  /**