@jetbrains/ring-ui 4.1.0-beta.4 → 4.1.2

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 (455) 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/alert.test.js +21 -48
  6. package/components/alert/container.css +1 -1
  7. package/components/alert/container.test.js +3 -13
  8. package/components/alert-service/alert-service.examples.css +18 -0
  9. package/components/alert-service/alert-service.examples.js +21 -0
  10. package/components/alert-service/alert-service.js +10 -3
  11. package/components/analytics/analytics__fus-plugin.js +3 -3
  12. package/components/analytics/analytics__ga-plugin.js +2 -2
  13. package/components/auth/auth.test.js +14 -7
  14. package/components/auth/auth__core.js +64 -33
  15. package/components/auth-dialog/auth-dialog.css +2 -3
  16. package/components/auth-dialog/auth-dialog.js +4 -1
  17. package/components/auth-dialog/auth-dialog.test.js +3 -19
  18. package/components/avatar/avatar.css +4 -1
  19. package/components/avatar/avatar.examples.js +3 -2
  20. package/components/avatar/avatar.js +34 -6
  21. package/components/avatar/avatar.test.js +20 -17
  22. package/components/avatar/fallback-avatar.js +136 -0
  23. package/components/avatar-editor-ng/avatar-editor-ng.css +2 -2
  24. package/components/avatar-editor-ng/avatar-editor-ng.js +2 -1
  25. package/components/avatar-editor-ng/{avatar-editor-ng.html → avatar-editor-ng__template.js} +2 -2
  26. package/components/badge/badge.test.js +13 -20
  27. package/components/button/button.css +2 -2
  28. package/components/button/button.js +4 -1
  29. package/components/button/button.test.js +32 -33
  30. package/components/button-group/button-group.js +1 -1
  31. package/components/button-group/caption.js +1 -1
  32. package/components/button-ng/button-ng.js +1 -1
  33. package/components/button-set-ng/button-set-ng.js +3 -1
  34. package/components/checkbox/checkbox.css +1 -1
  35. package/components/code/code.js +2 -5
  36. package/components/confirm/confirm.js +1 -0
  37. package/components/confirm-service/confirm-service.js +5 -5
  38. package/components/content-layout/content-layout.css +1 -1
  39. package/components/data-list/data-list.css +1 -1
  40. package/components/date-picker/date-input.js +5 -4
  41. package/components/date-picker/date-picker.css +34 -22
  42. package/components/date-picker/date-picker.js +16 -14
  43. package/components/date-picker/date-popup.js +22 -7
  44. package/components/date-picker/month-names.js +8 -5
  45. package/components/date-picker/month.js +6 -2
  46. package/components/date-picker/weekdays.js +10 -2
  47. package/components/dialog/dialog.examples.js +3 -1
  48. package/components/dialog/dialog.js +10 -5
  49. package/components/dialog/dialog.test.js +1 -1
  50. package/components/dialog/dialog__body-scroll-preventer.js +51 -31
  51. package/components/dialog-ng/dialog-ng.js +10 -10
  52. package/components/dialog-ng/{dialog-ng.html → dialog-ng__template.js} +2 -2
  53. package/components/dropdown/dropdown.examples.js +36 -1
  54. package/components/dropdown/dropdown.test.js +2 -2
  55. package/components/dropdown-menu/dropdown-menu.examples.js +47 -0
  56. package/components/dropdown-menu/dropdown-menu.js +117 -0
  57. package/components/dropdown-menu/dropdown-menu.test.js +76 -0
  58. package/components/error-bubble/error-bubble-legacy.css +1 -1
  59. package/components/error-bubble/error-bubble.css +1 -1
  60. package/components/error-bubble/error-bubble.examples.js +1 -1
  61. package/components/error-page/error-page.css +2 -2
  62. package/components/footer-ng/footer-ng.js +13 -3
  63. package/components/form/form.css +2 -2
  64. package/components/form-ng/form-ng.js +3 -1
  65. package/components/global/global.css +1 -1
  66. package/components/global/theme.js +1 -1
  67. package/components/global/variables.css +8 -1
  68. package/components/grid/grid.css +10 -9
  69. package/components/header/header.css +1 -1
  70. package/components/header/header.examples.js +7 -8
  71. package/components/header/profile.js +10 -11
  72. package/components/http/http.js +1 -1
  73. package/components/icon/icon.css +5 -4
  74. package/components/input/input-legacy.css +7 -7
  75. package/components/island/header.js +2 -2
  76. package/components/island/island.css +8 -3
  77. package/components/island-legacy/island-legacy.css +3 -1
  78. package/components/list/list.js +6 -1
  79. package/components/list/list__custom.js +9 -3
  80. package/components/list/list__item.js +8 -2
  81. package/components/list/list__link.js +2 -1
  82. package/components/loader-inline/loader-inline.css +1 -1
  83. package/components/loader-screen/loader-screen.css +1 -1
  84. package/components/message/message.css +1 -1
  85. package/components/message/message.examples.js +8 -7
  86. package/components/pager/pager.js +5 -3
  87. package/components/permissions/permissions.js +1 -1
  88. package/components/popup/popup.js +1 -1
  89. package/components/popup/popup.test.js +15 -13
  90. package/components/progress-bar/progress-bar.css +1 -1
  91. package/components/progress-bar/progress-bar.examples.js +3 -3
  92. package/components/progress-bar/progress-bar.js +5 -2
  93. package/components/progress-bar/progress-bar.test.js +12 -13
  94. package/components/progress-bar-ng/progress-bar-ng.examples.js +3 -3
  95. package/components/query-assist/query-assist.css +13 -3
  96. package/components/query-assist/query-assist.examples.js +3 -4
  97. package/components/query-assist/query-assist.js +56 -12
  98. package/components/query-assist/query-assist.test.js +37 -5
  99. package/components/save-field-ng/save-field-ng.css +0 -3
  100. package/components/save-field-ng/save-field-ng.js +3 -1
  101. package/components/save-field-ng/{save-field-ng.html → save-field-ng__template.js} +2 -2
  102. package/components/select/select.css +12 -7
  103. package/components/select/select.examples.js +13 -0
  104. package/components/select/select.js +30 -43
  105. package/components/select/select.test.js +4 -5
  106. package/components/select/select__popup.js +1 -0
  107. package/components/shortcuts-hint-ng/shortcuts-hint-ng.css +1 -1
  108. package/components/shortcuts-hint-ng/shortcuts-hint-ng.js +1 -1
  109. package/components/shortcuts-hint-ng/{shortcuts-hint-ng.html → shortcuts-hint-ng__template.js} +2 -2
  110. package/components/sidebar/sidebar.css +1 -0
  111. package/components/sidebar-ng/sidebar-ng.js +6 -2
  112. package/components/sidebar-ng/{sidebar-ng__button.html → sidebar-ng__button-template.js} +2 -2
  113. package/components/sidebar-ng/{sidebar-ng.html → sidebar-ng__template.js} +2 -2
  114. package/components/table/header.js +9 -1
  115. package/components/table/row.js +2 -1
  116. package/components/table/table.css +2 -1
  117. package/components/table-legacy/table-legacy.css +2 -2
  118. package/components/table-legacy/table-legacy__toolbar.css +2 -2
  119. package/components/table-legacy-ng/table-legacy-ng.js +38 -5
  120. package/components/table-legacy-ng/table-legacy-ng__pager.js +7 -1
  121. package/components/tabs/collapsible-tab.js +2 -2
  122. package/components/tabs/collapsible-tabs.js +5 -9
  123. package/components/tabs/tab-link.js +4 -2
  124. package/components/tabs/tabs.css +32 -5
  125. package/components/tabs-ng/tabs-ng.js +4 -2
  126. package/components/tabs-ng/{tabs-ng.html → tabs-ng__template.js} +6 -2
  127. package/components/tag/tag.css +5 -2
  128. package/components/tag/tag.examples.js +3 -0
  129. package/components/tag/tag.js +19 -16
  130. package/components/tags-input/tag-input.examples.js +1 -1
  131. package/components/tags-input/tags-input.js +5 -2
  132. package/components/template-ng/template-ng.js +1 -1
  133. package/components/tooltip/tooltip.js +7 -2
  134. package/components/user-agreement/user-agreement.css +1 -5
  135. package/components/user-agreement/user-agreement.examples.js +7 -6
  136. package/components/user-agreement/user-agreement.js +11 -3
  137. package/dist/_helpers/_rollupPluginBabelHelpers.js +1 -90
  138. package/dist/_helpers/anchor.js +6 -7
  139. package/dist/_helpers/badge.js +1 -1
  140. package/dist/_helpers/button-group.js +3 -0
  141. package/dist/_helpers/button-set.js +3 -0
  142. package/dist/_helpers/button-toolbar.js +3 -0
  143. package/dist/_helpers/button__classes.js +16 -15
  144. package/dist/_helpers/card.js +6 -8
  145. package/dist/_helpers/checkbox.js +3 -0
  146. package/dist/_helpers/date-picker.js +1 -1
  147. package/dist/_helpers/dialog__body-scroll-preventer.js +49 -32
  148. package/dist/_helpers/error-message.js +3 -0
  149. package/dist/_helpers/footer.js +121 -0
  150. package/dist/_helpers/grid.js +1 -1
  151. package/dist/_helpers/group.js +3 -0
  152. package/dist/_helpers/header.js +1 -1
  153. package/dist/_helpers/icon.js +3 -0
  154. package/dist/_helpers/inject-styles.js +1 -1
  155. package/dist/_helpers/input.js +3 -0
  156. package/dist/_helpers/island.js +1 -1
  157. package/dist/_helpers/link.js +3 -0
  158. package/dist/_helpers/list.js +1 -1
  159. package/dist/_helpers/loader-screen.js +3 -0
  160. package/dist/_helpers/panel.js +3 -0
  161. package/dist/_helpers/query-assist__suggestions.js +1 -1
  162. package/dist/_helpers/radio.js +3 -0
  163. package/dist/_helpers/select__filter.js +8 -10
  164. package/dist/_helpers/services-link.js +6 -8
  165. package/dist/_helpers/sidebar.js +17 -17
  166. package/dist/_helpers/table.js +1 -1
  167. package/dist/_helpers/tabs.js +1 -1
  168. package/dist/_helpers/title.js +3 -3
  169. package/dist/alert/alert.js +20 -9
  170. package/dist/alert/container.js +7 -9
  171. package/dist/alert-service/alert-service.js +26 -13
  172. package/dist/analytics/analytics.js +2 -2
  173. package/dist/analytics/analytics__custom-plugin.js +1 -1
  174. package/dist/analytics/analytics__fus-plugin.js +13 -11
  175. package/dist/analytics/analytics__ga-plugin.js +3 -3
  176. package/dist/analytics/analytics__plugin-utils.js +1 -1
  177. package/dist/analytics-ng/analytics-ng.js +94 -0
  178. package/dist/auth/auth.js +7 -4
  179. package/dist/auth/auth__core.js +106 -63
  180. package/dist/auth/background-flow.js +1 -2
  181. package/dist/auth/down-notification.js +19 -12
  182. package/dist/auth/iframe-flow.js +5 -2
  183. package/dist/auth/landing-entry.js +1 -1
  184. package/dist/auth/landing.js +5 -2
  185. package/dist/auth/request-builder.js +1 -1
  186. package/dist/auth/response-parser.js +3 -2
  187. package/dist/auth/storage.js +5 -3
  188. package/dist/auth/token-validator.js +6 -5
  189. package/dist/auth/window-flow.js +1 -1
  190. package/dist/auth-dialog/auth-dialog.js +9 -6
  191. package/dist/auth-dialog-service/auth-dialog-service.js +9 -6
  192. package/dist/auth-ng/auth-ng.js +203 -0
  193. package/dist/auth-ng/auth-ng.mock.js +33 -0
  194. package/dist/autofocus-ng/autofocus-ng.js +50 -0
  195. package/dist/avatar/avatar.js +41 -32
  196. package/dist/avatar/fallback-avatar.js +141 -0
  197. package/dist/avatar-editor-ng/avatar-editor-ng.js +164 -0
  198. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +30 -0
  199. package/dist/avatar-ng/avatar-ng.js +18 -0
  200. package/dist/badge/badge.js +6 -8
  201. package/dist/badge-ng/badge-ng.js +16 -0
  202. package/dist/breadcrumb-ng/breadcrumb-ng.js +61 -0
  203. package/dist/button/button.js +16 -10
  204. package/dist/button-group/button-group.js +4 -4
  205. package/dist/button-group/caption.js +24 -5
  206. package/dist/button-group-ng/button-group-ng.js +38 -0
  207. package/dist/button-ng/button-ng.js +223 -0
  208. package/dist/button-set/button-set.js +3 -4
  209. package/dist/button-set-ng/button-set-ng.js +19 -0
  210. package/dist/button-toolbar/button-toolbar.js +3 -4
  211. package/dist/button-toolbar-ng/button-toolbar-ng.js +23 -0
  212. package/dist/caret/caret.js +4 -2
  213. package/dist/checkbox/checkbox.js +11 -13
  214. package/dist/checkbox-ng/checkbox-ng.js +55 -0
  215. package/dist/code/code.js +136 -0
  216. package/dist/compiler-ng/compiler-ng.js +53 -0
  217. package/dist/confirm/confirm.js +8 -5
  218. package/dist/confirm-ng/confirm-ng.js +66 -0
  219. package/dist/confirm-service/confirm-service.js +21 -18
  220. package/dist/content-layout/content-layout.js +8 -10
  221. package/dist/contenteditable/contenteditable.js +14 -17
  222. package/dist/data-list/data-list.js +12 -9
  223. package/dist/data-list/data-list.mock.js +2 -2
  224. package/dist/data-list/item.js +7 -5
  225. package/dist/data-list/selection.js +7 -3
  226. package/dist/data-list/title.js +3 -1
  227. package/dist/data-list-ng/data-list-ng.js +59 -0
  228. package/dist/date-picker/consts.js +1 -2
  229. package/dist/date-picker/date-input.js +17 -12
  230. package/dist/date-picker/date-picker.js +41 -32
  231. package/dist/date-picker/date-popup.js +51 -28
  232. package/dist/date-picker/day.js +4 -4
  233. package/dist/date-picker/formats.js +1 -1
  234. package/dist/date-picker/month-names.js +18 -11
  235. package/dist/date-picker/month-slider.js +4 -4
  236. package/dist/date-picker/month.js +13 -7
  237. package/dist/date-picker/months.js +3 -3
  238. package/dist/date-picker/weekdays.js +12 -4
  239. package/dist/date-picker/years.js +4 -4
  240. package/dist/dialog/dialog.js +21 -16
  241. package/dist/dialog/dialog__body-scroll-preventer.js +1 -1
  242. package/dist/dialog-ng/dialog-ng.js +601 -0
  243. package/dist/dialog-ng/dialog-ng__template.js +71 -0
  244. package/dist/docked-panel-ng/docked-panel-ng.js +170 -0
  245. package/dist/dropdown/anchor.js +2 -1
  246. package/dist/dropdown/dropdown.js +22 -18
  247. package/dist/dropdown-menu/dropdown-menu.js +175 -0
  248. package/dist/error-bubble/error-bubble.js +7 -9
  249. package/dist/error-message/error-message.js +4 -4
  250. package/dist/error-message-ng/error-message-ng.js +53 -0
  251. package/dist/footer/footer.js +6 -119
  252. package/dist/footer-ng/footer-ng.js +75 -0
  253. package/dist/form-ng/form-ng.js +169 -0
  254. package/dist/global/angular-component-factory.js +6 -4
  255. package/dist/global/compose.js +8 -2
  256. package/dist/global/composeRefs.js +13 -7
  257. package/dist/global/conic-gradient.js +13 -12
  258. package/dist/global/create-stateful-context.js +12 -9
  259. package/dist/global/data-tests.js +10 -3
  260. package/dist/global/dom.js +12 -5
  261. package/dist/global/focus-sensor-hoc.js +20 -19
  262. package/dist/global/fuzzy-highlight.js +10 -6
  263. package/dist/global/get-event-key.js +1 -1
  264. package/dist/global/get-uid.js +1 -1
  265. package/dist/global/inject-styles.js +4 -1
  266. package/dist/global/linear-function.js +1 -2
  267. package/dist/global/listeners.js +1 -1
  268. package/dist/global/memoize.js +3 -2
  269. package/dist/global/normalize-indent.js +1 -1
  270. package/dist/global/promise-with-timeout.js +5 -4
  271. package/dist/global/radial-gradient-mask.js +6 -3
  272. package/dist/global/react-dom-renderer.js +3 -3
  273. package/dist/global/rerender-hoc.js +14 -12
  274. package/dist/global/ring-angular-component.js +6 -2
  275. package/dist/global/schedule-raf.js +1 -1
  276. package/dist/global/sniffer.js +1 -1
  277. package/dist/global/supports-css.js +1 -1
  278. package/dist/global/theme.js +27 -26
  279. package/dist/global/trivial-template-tag.js +6 -2
  280. package/dist/global/url.js +3 -1
  281. package/dist/global/variables_dark.js +1 -1
  282. package/dist/grid/col.js +6 -8
  283. package/dist/grid/grid.js +5 -7
  284. package/dist/grid/row.js +6 -8
  285. package/dist/group/group.js +7 -10
  286. package/dist/group-ng/group-ng.js +11 -0
  287. package/dist/header/header.js +29 -26
  288. package/dist/header/logo.js +8 -9
  289. package/dist/header/profile.js +54 -46
  290. package/dist/header/services-link.js +1 -0
  291. package/dist/header/services.js +23 -19
  292. package/dist/header/smart-profile.js +29 -26
  293. package/dist/header/smart-services.js +12 -11
  294. package/dist/header/tray-icon.js +12 -12
  295. package/dist/header/tray.js +6 -8
  296. package/dist/heading/heading.js +10 -13
  297. package/dist/http/http.js +53 -44
  298. package/dist/http/http.mock.js +4 -4
  299. package/dist/hub-source/hub-source.js +1 -1
  300. package/dist/hub-source/hub-source__user.js +4 -2
  301. package/dist/hub-source/hub-source__users-groups.js +5 -3
  302. package/dist/icon/icon.js +8 -8
  303. package/dist/icon/icon__svg.js +81 -6
  304. package/dist/icon/index.js +2 -1
  305. package/dist/icon-ng/icon-ng.js +89 -0
  306. package/dist/input/input.js +11 -14
  307. package/dist/input-ng/input-ng.js +166 -0
  308. package/dist/island/adaptive-island-hoc.js +10 -9
  309. package/dist/island/content.js +8 -10
  310. package/dist/island/header.js +7 -9
  311. package/dist/island/island.js +6 -9
  312. package/dist/island-legacy/content-legacy.js +6 -8
  313. package/dist/island-legacy/header-legacy.js +6 -8
  314. package/dist/island-legacy/island-legacy.js +6 -8
  315. package/dist/island-ng/island-content-ng.js +56 -0
  316. package/dist/island-ng/island-header-ng.js +32 -0
  317. package/dist/island-ng/island-ng-class-fixer.js +9 -0
  318. package/dist/island-ng/island-ng.js +31 -0
  319. package/dist/link/clickableLink.js +8 -10
  320. package/dist/link/link.js +12 -15
  321. package/dist/link-ng/link-ng.js +25 -0
  322. package/dist/list/list.js +100 -76
  323. package/dist/list/list__custom.js +15 -12
  324. package/dist/list/list__hint.js +1 -1
  325. package/dist/list/list__item.js +22 -15
  326. package/dist/list/list__link.js +11 -12
  327. package/dist/list/list__separator.js +1 -1
  328. package/dist/list/list__title.js +1 -1
  329. package/dist/list/list__users-groups-source.js +13 -8
  330. package/dist/loader/loader.js +8 -10
  331. package/dist/loader/loader__core.js +9 -8
  332. package/dist/loader-inline/inject-styles.js +1 -1
  333. package/dist/loader-inline/loader-inline.js +6 -8
  334. package/dist/loader-inline-ng/loader-inline-ng.js +42 -0
  335. package/dist/loader-ng/loader-ng.js +43 -0
  336. package/dist/loader-screen/loader-screen.js +7 -10
  337. package/dist/loader-screen-ng/loader-screen-ng.js +99 -0
  338. package/dist/login-dialog/login-dialog.js +7 -5
  339. package/dist/login-dialog/service.js +9 -6
  340. package/dist/markdown/code.js +30 -0
  341. package/dist/markdown/heading.js +23 -0
  342. package/dist/markdown/link.js +30 -0
  343. package/dist/markdown/markdown.js +73 -0
  344. package/dist/message/message.js +7 -6
  345. package/dist/message-bundle-ng/message-bundle-ng.js +111 -0
  346. package/dist/old-browsers-message/old-browsers-message.js +0 -1
  347. package/dist/old-browsers-message/old-browsers-message__stop.js +0 -1
  348. package/dist/old-browsers-message/white-list.js +4 -5
  349. package/dist/pager/pager.js +20 -11
  350. package/dist/pager-ng/pager-ng.js +96 -0
  351. package/dist/panel/panel.js +7 -10
  352. package/dist/panel-ng/panel-ng.js +16 -0
  353. package/dist/permissions/permissions.js +4 -2
  354. package/dist/permissions/permissions__cache.js +1 -1
  355. package/dist/permissions-ng/permissions-ng.js +274 -0
  356. package/dist/place-under-ng/place-under-ng.js +157 -0
  357. package/dist/popup/popup.js +11 -11
  358. package/dist/popup/popup.target.js +4 -5
  359. package/dist/popup/position.js +18 -16
  360. package/dist/popup-menu/popup-menu.js +23 -16
  361. package/dist/progress-bar/progress-bar.js +14 -12
  362. package/dist/progress-bar-ng/progress-bar-ng.js +15 -0
  363. package/dist/promised-click-ng/promised-click-ng.js +126 -0
  364. package/dist/proxy-attrs/proxy-attrs.js +1 -1
  365. package/dist/query-assist/query-assist.js +156 -76
  366. package/dist/query-assist/query-assist__suggestions.js +5 -1
  367. package/dist/query-assist-ng/query-assist-ng.js +82 -0
  368. package/dist/radio/radio.js +9 -7
  369. package/dist/radio/radio__item.js +13 -18
  370. package/dist/radio-ng/radio-ng.js +63 -0
  371. package/dist/save-field-ng/save-field-ng.js +335 -0
  372. package/dist/save-field-ng/save-field-ng__template.js +34 -0
  373. package/dist/select/select.js +118 -95
  374. package/dist/select/select__filter.js +6 -1
  375. package/dist/select/select__popup.js +12 -6
  376. package/dist/select-ng/select-ng.js +621 -0
  377. package/dist/select-ng/select-ng__lazy.js +150 -0
  378. package/dist/select-ng/select-ng__options.js +145 -0
  379. package/dist/shortcuts/core.js +7 -4
  380. package/dist/shortcuts/shortcuts-hoc.js +8 -10
  381. package/dist/shortcuts/shortcuts.js +6 -6
  382. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +120 -0
  383. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +50 -0
  384. package/dist/shortcuts-ng/shortcuts-ng.js +261 -0
  385. package/dist/sidebar-ng/sidebar-ng.js +111 -0
  386. package/dist/sidebar-ng/sidebar-ng__button-template.js +20 -0
  387. package/dist/sidebar-ng/sidebar-ng__template.js +12 -0
  388. package/dist/storage/storage.js +3 -2
  389. package/dist/storage/storage__fallback.js +3 -2
  390. package/dist/storage/storage__local.js +5 -3
  391. package/dist/style.css +1 -1
  392. package/dist/tab-trap/tab-trap.js +15 -13
  393. package/dist/table/cell.js +2 -2
  394. package/dist/table/disable-hover-hoc.js +4 -4
  395. package/dist/table/header-cell.js +10 -11
  396. package/dist/table/header.js +19 -12
  397. package/dist/table/multitable.js +33 -25
  398. package/dist/table/row-with-focus-sensor.js +7 -5
  399. package/dist/table/row.js +17 -15
  400. package/dist/table/selection-adapter.js +1 -1
  401. package/dist/table/selection-shortcuts-hoc.js +10 -8
  402. package/dist/table/selection.js +25 -17
  403. package/dist/table/smart-table.js +16 -10
  404. package/dist/table/table.js +38 -33
  405. package/dist/table-legacy-ng/table-legacy-ng.js +501 -0
  406. package/dist/table-legacy-ng/table-legacy-ng__pager.js +122 -0
  407. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +123 -0
  408. package/dist/table-legacy-ng/table-legacy-ng__selection.js +179 -0
  409. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +56 -0
  410. package/dist/table-ng/smart-table-ng.js +65 -0
  411. package/dist/table-ng/table-ng.js +64 -0
  412. package/dist/tabs/collapsible-more.js +37 -30
  413. package/dist/tabs/collapsible-tab.js +16 -14
  414. package/dist/tabs/collapsible-tabs.js +83 -80
  415. package/dist/tabs/custom-item.js +6 -3
  416. package/dist/tabs/dumb-tabs.js +19 -14
  417. package/dist/tabs/smart-tabs.js +13 -11
  418. package/dist/tabs/tab-link.js +13 -7
  419. package/dist/tabs/tab.js +1 -1
  420. package/dist/tabs/tabs.js +5 -1
  421. package/dist/tabs-ng/tabs-ng.js +193 -0
  422. package/dist/tabs-ng/tabs-ng__template.js +40 -0
  423. package/dist/tag/tag.js +22 -16
  424. package/dist/tags-input/tags-input.js +48 -36
  425. package/dist/tags-input-ng/tags-input-ng.js +89 -0
  426. package/dist/tags-list/tags-list.js +8 -9
  427. package/dist/template-ng/template-ng.js +70 -0
  428. package/dist/text/text.js +7 -9
  429. package/dist/theme-ng/theme-ng.js +44 -0
  430. package/dist/title-ng/title-ng.js +114 -0
  431. package/dist/toggle/toggle.js +8 -11
  432. package/dist/toggle-ng/toggle-ng.js +16 -0
  433. package/dist/tooltip/tooltip.js +16 -14
  434. package/dist/tooltip-ng/tooltip-ng.js +98 -0
  435. package/dist/user-agreement/service.js +409 -0
  436. package/dist/user-agreement/toolbox.eula.js +162 -0
  437. package/dist/user-agreement/user-agreement.js +167 -0
  438. package/dist/user-card/card.js +3 -0
  439. package/dist/user-card/smart-user-card-tooltip.js +16 -16
  440. package/dist/user-card/tooltip.js +9 -7
  441. package/dist/user-card/user-card.js +5 -2
  442. package/dist/user-card-ng/user-card-ng.js +59 -0
  443. package/package.json +83 -81
  444. package/webpack.config.js +14 -10
  445. package/components/button-set-ng/button-set-ng.html +0 -1
  446. package/components/footer-ng/footer-ng.html +0 -13
  447. package/components/form-ng/form-ng__error-bubble.html +0 -3
  448. package/components/table-legacy-ng/table-legacy-ng.html +0 -4
  449. package/components/table-legacy-ng/table-legacy-ng__column.html +0 -12
  450. package/components/table-legacy-ng/table-legacy-ng__header.html +0 -4
  451. package/components/table-legacy-ng/table-legacy-ng__pager.html +0 -7
  452. package/components/table-legacy-ng/table-legacy-ng__row.html +0 -12
  453. package/components/table-legacy-ng/table-legacy-ng__title.html +0 -9
  454. package/dist/_helpers/caption.js +0 -25
  455. package/dist/_helpers/icon__svg.js +0 -83
@@ -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}
@@ -1,6 +1,4 @@
1
- /* eslint-disable react/no-find-dom-node */
2
1
  import React from 'react';
3
- import {findDOMNode} from 'react-dom';
4
2
  import {shallow, mount} from 'enzyme';
5
3
 
6
4
  import Theme from '../global/theme';
@@ -9,8 +7,9 @@ import ProgressBar from './progress-bar';
9
7
  import styles from './progress-bar.css';
10
8
 
11
9
  describe('Progress Bar', () => {
12
- const shallowProgressBar = props => shallow(<ProgressBar {...props}/>);
13
- const mountProgressBar = props => mount(<ProgressBar {...props}/>).find('ProgressBar');
10
+ const shallowProgressBar = props => shallow(<ProgressBar label="Progress" {...props}/>);
11
+ const mountProgressBar = props =>
12
+ mount(<ProgressBar label="Progress" {...props}/>).find('ProgressBar');
14
13
 
15
14
  it('should create component', () => {
16
15
  shallowProgressBar().should.exist;
@@ -48,14 +47,14 @@ describe('Progress Bar', () => {
48
47
  className: 'test-class'
49
48
  });
50
49
 
51
- findDOMNode(wrapper.instance().progressbarWrapper).should.have.class('test-class');
50
+ wrapper.instance().progressbarWrapper.should.have.class('test-class');
52
51
  });
53
52
 
54
53
  it('should set light modifier', () => {
55
54
  const wrapper = mountProgressBar({
56
55
  theme: Theme.DARK
57
56
  });
58
- findDOMNode(wrapper.instance().progressbarWrapper).
57
+ wrapper.instance().progressbarWrapper.
59
58
  should.have.class(styles.dark);
60
59
  });
61
60
 
@@ -64,7 +63,7 @@ describe('Progress Bar', () => {
64
63
  global: true
65
64
  });
66
65
 
67
- findDOMNode(wrapper.instance().progressbarWrapper).
66
+ wrapper.instance().progressbarWrapper.
68
67
  should.have.class(styles.globalMode);
69
68
  });
70
69
  });
@@ -76,7 +75,7 @@ describe('Progress Bar', () => {
76
75
  describe('#render', () => {
77
76
  it('should set min value to equal zero', () => {
78
77
  const wrapper = mountProgressBar();
79
- findDOMNode(wrapper.instance().progressbar).should.have.attr('aria-valuemin', '0');
78
+ wrapper.instance().progressbar.should.have.attr('aria-valuemin', '0');
80
79
  });
81
80
 
82
81
  it('should update max value in DOM', () => {
@@ -84,7 +83,7 @@ describe('Progress Bar', () => {
84
83
  max: 100
85
84
  });
86
85
 
87
- findDOMNode(wrapper.instance().progressbar).should.have.attr('aria-valuemax', '100');
86
+ wrapper.instance().progressbar.should.have.attr('aria-valuemax', '100');
88
87
  });
89
88
 
90
89
  it('should update progress value in DOM', () => {
@@ -92,8 +91,8 @@ describe('Progress Bar', () => {
92
91
  value: 0.5
93
92
  });
94
93
 
95
- findDOMNode(wrapper.instance().progressbar).should.have.attr('aria-valuenow', '0.5');
96
- findDOMNode(wrapper.instance().progressbar).should.have.attr('style').match(/width: 50%;/);
94
+ wrapper.instance().progressbar.should.have.attr('aria-valuenow', '0.5');
95
+ wrapper.instance().progressbar.should.have.attr('style').match(/width: 50%;/);
97
96
  });
98
97
 
99
98
  it('should set width equal 100% if progress value more than max value', () => {
@@ -102,14 +101,14 @@ describe('Progress Bar', () => {
102
101
  value: 10
103
102
  });
104
103
 
105
- findDOMNode(wrapper.instance().progressbar).should.have.attr('style').match(/width: 100%;/);
104
+ wrapper.instance().progressbar.should.have.attr('style').match(/width: 100%;/);
106
105
  });
107
106
 
108
107
  it('should not set style if value is not a number', () => {
109
108
  const wrapper = mountProgressBar({
110
109
  value: null
111
110
  });
112
- findDOMNode(wrapper.instance().progressbar).should.not.have.attr('style');
111
+ wrapper.instance().progressbar.should.not.have.attr('style');
113
112
  });
114
113
  });
115
114
  });
@@ -31,13 +31,13 @@ export const basic = () => {
31
31
  return `
32
32
  <div ng-controller="ExampleCtrl as ctrl">
33
33
  <div style="height: 25px; padding-top: 25px;">
34
- <rg-progress-bar value="ctrl.value" class="example-progress"></rg-progress-bar>
34
+ <rg-progress-bar label="'Progress'" value="ctrl.value" class="example-progress"></rg-progress-bar>
35
35
  </div>
36
36
  <div style="height: 25px; background: #000; padding-top: 25px;">
37
- <rg-progress-bar value="ctrl.value" theme="'dark'" class="example-progress"></rg-progress-bar>
37
+ <rg-progress-bar label="'Progress'" value="ctrl.value" theme="'dark'" class="example-progress"></rg-progress-bar>
38
38
  </div>
39
39
  <div style="height: 25px; background: #F0F0F0; padding-top: 25px;">
40
- <rg-progress-bar value="ctrl.value" class="example-progress"></rg-progress-bar>
40
+ <rg-progress-bar label="'Progress'" value="ctrl.value" class="example-progress"></rg-progress-bar>
41
41
  </div>
42
42
  </div>
43
43
  `;
@@ -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
 
@@ -176,7 +176,7 @@
176
176
  top: 1px;
177
177
  left: 1px;
178
178
 
179
- overflow: hidden;
179
+ overflow: auto;
180
180
 
181
181
  box-sizing: border-box;
182
182
 
@@ -194,6 +194,8 @@
194
194
 
195
195
  line-height: 16px;
196
196
 
197
+ scrollbar-width: none;
198
+
197
199
  &:active,
198
200
  &:focus {
199
201
  outline: 0;
@@ -227,8 +229,12 @@
227
229
  }
228
230
 
229
231
  &.inputDisabled {
230
- color: var(--ring-disabled-color);
231
232
  border-color: var(--ring-line-color);
233
+ box-shadow: 0 0 0 1px var(--ring-line-color);
234
+ }
235
+
236
+ &.inputDisabled span > span {
237
+ color: var(--ring-disabled-color);
232
238
  }
233
239
  }
234
240
 
@@ -326,3 +332,7 @@
326
332
  .input:active ~ .focusUnderline {
327
333
  width: 100%;
328
334
  }
335
+
336
+ .input::-webkit-scrollbar {
337
+ display: none;
338
+ }
@@ -22,9 +22,6 @@ export default {
22
22
  framework: 'react'
23
23
  },
24
24
  args: {
25
- // https://github.com/storybookjs/storybook/issues/12635#issuecomment-703392498
26
- theme: undefined,
27
- translations: undefined,
28
25
  placeholder: 'placeholder',
29
26
  glass: true,
30
27
  clear: true,
@@ -80,7 +77,8 @@ basic.args = {
80
77
  focus: true,
81
78
  hint: 'lol',
82
79
  hintOnSelection: 'lol selected',
83
- popupClassName: 'test'
80
+ popupClassName: 'test',
81
+ className: 'custom-class'
84
82
  };
85
83
 
86
84
  export const noAuth = args => <QueryAssist {...args}/>;
@@ -248,6 +246,7 @@ darkThemeNoAuth.parameters = {
248
246
  actions: [
249
247
  {type: 'capture', name: 'queryAssist', selector: ['[data-test~=ring-query-assist]']},
250
248
  {type: 'click', selector: '[data-test=ring-query-assist-input]'},
249
+ {type: 'sendKeys', selector: '[data-test=ring-query-assist-input]', value: 'test '},
251
250
  {
252
251
  type: 'capture',
253
252
  name: 'withPopup',
@@ -30,7 +30,7 @@ const ngModelStateField = 'query';
30
30
  function noop() {}
31
31
 
32
32
  function cleanText(text) {
33
- return text.trim().replace(/([\n\r])+/g, ' ');
33
+ return text.replace(/([\n\r])+/g, ' ');
34
34
  }
35
35
 
36
36
  /**
@@ -203,7 +203,7 @@ export default class QueryAssist extends Component {
203
203
 
204
204
  this.setupRequestHandler(this.props.delay);
205
205
 
206
- if (this.props.autoOpen) {
206
+ if (this.props.autoOpen && query.length > 0) {
207
207
  this.requestHandler().
208
208
  catch(noop);
209
209
  } else {
@@ -211,6 +211,7 @@ export default class QueryAssist extends Component {
211
211
  }
212
212
 
213
213
  this.setCaretPosition();
214
+ this._pushHistory(this.state);
214
215
  }
215
216
 
216
217
  shouldComponentUpdate(props, state) {
@@ -245,7 +246,7 @@ export default class QueryAssist extends Component {
245
246
  if (typeof query === 'string' && queryChanged && query !== this.immediateState.query) {
246
247
  this.immediateState.query = query;
247
248
 
248
- if (query && prevProps.autoOpen) {
249
+ if (query && prevProps.autoOpen && query.length > 0) {
249
250
  this.requestData();
250
251
  } else if (query) {
251
252
  this.requestStyleRanges();
@@ -257,6 +258,8 @@ export default class QueryAssist extends Component {
257
258
  static Theme = Theme;
258
259
 
259
260
  ngModelStateField = ngModelStateField;
261
+ // An array of {query: string; caret: number}[]
262
+ historyStack = [];
260
263
 
261
264
  handleFocusChange = e => {
262
265
  // otherwise it's blur and false
@@ -370,7 +373,9 @@ export default class QueryAssist extends Component {
370
373
 
371
374
  this.immediateState = props;
372
375
  this.props.onChange(props);
373
- this.requestData();
376
+ if (props.query.length > 0) {
377
+ this.requestData();
378
+ }
374
379
  };
375
380
 
376
381
  // It's necessary to prevent new element creation before any other hooks
@@ -402,6 +407,38 @@ export default class QueryAssist extends Component {
402
407
  return true;
403
408
  };
404
409
 
410
+ setState = (state, resolve) => {
411
+ super.setState(state, () => {
412
+ this._pushHistory(state);
413
+ resolve?.();
414
+ });
415
+ };
416
+
417
+ _pushHistory(state) {
418
+ const queryIsSet = 'query' in state;
419
+ const queryIsSame = this.historyStack[0]?.query === state.query;
420
+
421
+ if (queryIsSet && !queryIsSame) {
422
+ this.historyStack.unshift({
423
+ query: state.query,
424
+ caret: this.caret?.getPosition({avoidFocus: true}) ?? -1
425
+ });
426
+ }
427
+ }
428
+
429
+ undo = e => {
430
+ // eslint-disable-next-line no-unused-vars
431
+ const [current, previous] = this.historyStack.splice(0, 2);
432
+ if (!previous) {
433
+ return;
434
+ }
435
+
436
+ this.setState({query: previous.query}, () => {
437
+ this.caret.setPosition(previous.caret);
438
+ this.handleInput(e);
439
+ });
440
+ };
441
+
405
442
  handlePaste = e => {
406
443
  const INSERT_COMMAND = 'insertText';
407
444
  if (e.clipboardData && document.queryCommandSupported(INSERT_COMMAND)) {
@@ -426,7 +463,13 @@ export default class QueryAssist extends Component {
426
463
  if (!this.props.disabled && (caret !== this.immediateState.caret || popupHidden)) {
427
464
  this.immediateState.caret = caret;
428
465
  this.scrollInput();
429
- this.requestData();
466
+ if (this.immediateState.query.length > 0) {
467
+ this.requestData();
468
+ }
469
+ }
470
+
471
+ if (this.immediateState.query.length < 1) {
472
+ this.setState({showPopup: false});
430
473
  }
431
474
  };
432
475
 
@@ -437,7 +480,7 @@ export default class QueryAssist extends Component {
437
480
  caret = 0,
438
481
  styleRanges,
439
482
  suggestions = []
440
- }) => new Promise((resolve, reject) => {
483
+ }, afterCompletion = false) => new Promise((resolve, reject) => {
441
484
  if (
442
485
  query === this.getQuery() &&
443
486
  (caret === this.immediateState.caret ||
@@ -454,7 +497,7 @@ export default class QueryAssist extends Component {
454
497
  placeholderEnabled: !query,
455
498
  query,
456
499
  suggestions,
457
- showPopup: !!suggestions.length
500
+ showPopup: !!suggestions.length && !afterCompletion
458
501
  };
459
502
 
460
503
  this.immediateState.suggestionsQuery = query;
@@ -526,7 +569,7 @@ export default class QueryAssist extends Component {
526
569
  }
527
570
 
528
571
  this.closePopup();
529
- this.requestData();
572
+ this.requestData(true);
530
573
  };
531
574
 
532
575
  requestStyleRanges = () => {
@@ -541,7 +584,7 @@ export default class QueryAssist extends Component {
541
584
  catch(noop);
542
585
  };
543
586
 
544
- requestHandler = () => {
587
+ requestHandler = (afterCompletion = false) => {
545
588
  if (this.props.disabled) {
546
589
  return Promise.reject(new Error('QueryAssist(@jetbrains/ring-ui): null exception'));
547
590
  }
@@ -549,7 +592,7 @@ export default class QueryAssist extends Component {
549
592
  const {query, caret} = this.immediateState;
550
593
 
551
594
  return this.sendRequest({query, caret}).
552
- then(this.handleResponse).
595
+ then(data => this.handleResponse(data, afterCompletion)).
553
596
  catch(noop);
554
597
  };
555
598
 
@@ -801,6 +844,7 @@ export default class QueryAssist extends Component {
801
844
  'ctrl+enter': this.handleComplete,
802
845
  'ctrl+space': this.handleCtrlSpace,
803
846
  tab: this.handleTab,
847
+ 'meta+z': this.undo,
804
848
  right: noop,
805
849
  left: noop,
806
850
  space: noop,
@@ -831,7 +875,7 @@ export default class QueryAssist extends Component {
831
875
  }
832
876
 
833
877
  render() {
834
- const {theme, glass, 'data-test': dataTest, useCustomItemRender} = this.props;
878
+ const {theme, glass, 'data-test': dataTest, className, useCustomItemRender} = this.props;
835
879
  const renderPlaceholder = !!this.props.placeholder && this.state.placeholderEnabled;
836
880
  const renderLoader = this.props.loader !== false && this.state.loading;
837
881
  const renderGlass = glass && !renderLoader;
@@ -849,7 +893,7 @@ export default class QueryAssist extends Component {
849
893
  return (
850
894
  <div
851
895
  data-test={dataTests('ring-query-assist', dataTest)}
852
- className={classNames(styles.queryAssist, styles[theme])}
896
+ className={classNames(className, styles.queryAssist, styles[theme])}
853
897
  role="presentation"
854
898
  ref={this.nodeRef}
855
899
  >
@@ -1,7 +1,6 @@
1
- /* eslint-disable no-magic-numbers,react/no-find-dom-node */
1
+ /* eslint-disable no-magic-numbers */
2
2
 
3
3
  import React from 'react';
4
- import {findDOMNode} from 'react-dom';
5
4
  import {Simulate} from 'react-dom/test-utils';
6
5
  import {mount} from 'enzyme';
7
6
 
@@ -243,6 +242,12 @@ describe('Query Assist', () => {
243
242
  describe('rendering', () => {
244
243
  const LETTER_CLASS = styles.letter;
245
244
 
245
+ it('should pass className', () => {
246
+ const instance = mountQueryAssist({className: 'test-class'}).find('QueryAssist').instance();
247
+
248
+ instance.node.className.should.contain('test-class');
249
+ });
250
+
246
251
  it('should render letters', () => {
247
252
  const instance = mountQueryAssist().find('QueryAssist').instance();
248
253
 
@@ -251,6 +256,19 @@ describe('Query Assist', () => {
251
256
  should.have.length(testQueryLength);
252
257
  });
253
258
 
259
+ it('should support undo', done => {
260
+ const instance = mountQueryAssist().find('QueryAssist').instance();
261
+
262
+ instance.setState({query: 'newQuery'}, () => {
263
+ simulateCombo('meta+z');
264
+
265
+ setTimeout(() => {
266
+ instance.state.query.should.equal(testQuery);
267
+ done();
268
+ });
269
+ });
270
+ });
271
+
254
272
 
255
273
  it('should render nothing on empty query', () => {
256
274
  const instance = mountQueryAssist({
@@ -474,7 +492,7 @@ describe('Query Assist', () => {
474
492
 
475
493
  instance.requestData().
476
494
  then(() => {
477
- const list = findDOMNode(instance._popup.list);
495
+ const list = instance._popup.list.container;
478
496
  const {length} = suggestions;
479
497
 
480
498
  list.querySelectorAll('[data-test~=ring-list-item]').should.have.length(length);
@@ -560,6 +578,20 @@ describe('Query Assist', () => {
560
578
  instance.input.should.have.text(getSuggestionText(suggestions[2]));
561
579
  });
562
580
  });
581
+
582
+ it('should undo last applied completion', () => {
583
+ const instance = mountQueryAssist({
584
+ query: completeQuery,
585
+ caret: middleCaret
586
+ }).find('QueryAssist').instance();
587
+
588
+ return instance.requestData().then(() => {
589
+ simulateCombo('down down down tab');
590
+ instance.input.should.not.have.text(completeQuery);
591
+ simulateCombo('meta+z');
592
+ instance.input.should.have.text(completeQuery);
593
+ });
594
+ });
563
595
  });
564
596
 
565
597
  describe('callbacks', () => {
@@ -598,7 +630,7 @@ describe('Query Assist', () => {
598
630
  onApply
599
631
  }).find('QueryAssist').instance();
600
632
 
601
- Simulate.click(findDOMNode(instance.glass));
633
+ Simulate.click(instance.glass.buttonRef.current);
602
634
  onApply.should.have.been.calledWithMatch({
603
635
  query: testQuery,
604
636
  caret: testQueryLength
@@ -612,7 +644,7 @@ describe('Query Assist', () => {
612
644
  onClear
613
645
  }).find('QueryAssist').instance();
614
646
 
615
- Simulate.click(findDOMNode(instance.clear));
647
+ Simulate.click(instance.clear.buttonRef.current);
616
648
  onClear.should.have.been.calledWithExactly();
617
649
  });
618
650
  });
@@ -4,9 +4,6 @@
4
4
 
5
5
  :global(.ring-save-field) {
6
6
  display: inline-block;
7
-
8
- font-size: 0;
9
- line-height: 0;
10
7
  }
11
8
 
12
9
  :global(.ring-save-field .ring-save-field__button) {
@@ -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>`;
@@ -158,9 +158,15 @@
158
158
  }
159
159
  }
160
160
 
161
+ .buttonContainer {
162
+ position: relative;
163
+ }
164
+
161
165
  .buttonValue {
162
166
  composes: ellipsis from "../global/global.css";
163
167
 
168
+ display: block;
169
+
164
170
  width: 100%;
165
171
 
166
172
  text-align: left;
@@ -170,12 +176,6 @@
170
176
  .buttonValueOpen {
171
177
  border-color: var(--ring-selected-background-color);
172
178
  background-color: var(--ring-selected-background-color);
173
-
174
- & .icons {
175
- transition: none;
176
-
177
- color: var(--ring-main-color);
178
- }
179
179
  }
180
180
 
181
181
  .label {
@@ -189,7 +189,8 @@
189
189
  .value:focus,
190
190
  .value:focus + .icons,
191
191
  .open,
192
- .open + .icons {
192
+ .open + .icons,
193
+ .buttonValueOpen + .icons {
193
194
  transition: none;
194
195
 
195
196
  color: var(--ring-main-color);
@@ -247,3 +248,7 @@
247
248
 
248
249
  color: inherit;
249
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';