@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
@@ -0,0 +1,114 @@
1
+ import angular from 'angular';
2
+
3
+ const angularModule = angular.module('Ring.title', []);
4
+ angularModule.directive('rgPageTitle', function rgPageTitleDirective() {
5
+ return {
6
+ scope: {
7
+ rgPageTitle: '@?',
8
+ noTitle: '@?',
9
+ delimiter: '@'
10
+ },
11
+ controller: ["$rootScope", "$scope", "$element", "$attrs", "pageTitle", "$injector", function controller($rootScope, $scope, $element, $attrs, pageTitle, $injector) {
12
+ const element = $element[0]; // Get title prefix from title element
13
+
14
+ const elementText = element.textContent;
15
+ let offScopeWatch = angular.noop; // Set page title on route change
16
+
17
+ const offRouteWatch = $rootScope.$on('$routeChangeSuccess', (event, current) => {
18
+ //Do nothing if we're being redirected
19
+ if (current.$$route && current.$$route.redirectTo) {
20
+ // eslint-disable-line angular/no-private-call
21
+ return;
22
+ }
23
+
24
+ let routeTitle = current.$$route && current.$$route.title; // eslint-disable-line angular/no-private-call
25
+
26
+ pageTitle.setCurrent($scope.rgPageTitle || elementText); // Use title: false to prevent title change on route
27
+
28
+ if (routeTitle !== false) {
29
+ if (angular.isArray(routeTitle) || angular.isFunction(routeTitle)) {
30
+ //Invoke injector
31
+ routeTitle = $injector.invoke(routeTitle);
32
+ }
33
+
34
+ pageTitle.addElement(routeTitle || $scope.noTitle);
35
+ }
36
+ });
37
+ $scope.$on('$destroy', () => {
38
+ offRouteWatch();
39
+ offScopeWatch();
40
+ });
41
+
42
+ this.$onInit = () => {
43
+ pageTitle.setDelimiter($scope.delimiter);
44
+
45
+ if ($attrs.rgPageTitle) {
46
+ offScopeWatch = $scope.$watch('rgPageTitle', newBaseTitle => {
47
+ pageTitle.setRootElement(newBaseTitle);
48
+ });
49
+ }
50
+ };
51
+ }]
52
+ };
53
+ });
54
+ angularModule.service('pageTitle', ["$interpolate", "$document", function service($interpolate, $document) {
55
+ let delimiter = ' | ';
56
+ let current = $document[0].title;
57
+
58
+ function setTitle(text) {
59
+ current = text && $interpolate(text)();
60
+ updateDocumentTitle(current);
61
+ }
62
+
63
+ function updateDocumentTitle(text) {
64
+ $document[0].title = text;
65
+ }
66
+
67
+ function prepend(element) {
68
+ setTitle(current ? element + delimiter + current : element);
69
+ }
70
+
71
+ function replacePart(element) {
72
+ let replaceIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
73
+ const titleElements = current.split(delimiter);
74
+ titleElements[replaceIndex === -1 ? titleElements.length - 1 : replaceIndex] = element;
75
+ setTitle(titleElements.join(delimiter));
76
+ }
77
+
78
+ this.setDelimiter = newDelimiter => {
79
+ delimiter = newDelimiter || delimiter;
80
+ };
81
+
82
+ this.setCurrent = newBase => {
83
+ current = newBase;
84
+ };
85
+
86
+ this.setText = text => updateDocumentTitle(text);
87
+
88
+ this.addElement = (element, fieldName) => {
89
+ if (element.$promise) {
90
+ element.$promise.then(Data => {
91
+ this.addElement(Data[fieldName || 'name']);
92
+ });
93
+ } else {
94
+ prepend(fieldName ? element[fieldName] : element);
95
+ }
96
+ };
97
+
98
+ this.updateElement = (element, fieldName) => {
99
+ if (element.$promise) {
100
+ element.$promise.then(Data => {
101
+ this.updateElement(Data[fieldName || 'name']);
102
+ });
103
+ } else {
104
+ replacePart(fieldName ? element[fieldName] : element);
105
+ }
106
+ };
107
+
108
+ this.setRootElement = element => {
109
+ replacePart(element, -1);
110
+ };
111
+ }]);
112
+ var titleNg = angularModule.name;
113
+
114
+ export { titleNg as default };
@@ -72,7 +72,6 @@ _defineProperty(Toggle, "propTypes", {
72
72
  'data-test': PropTypes.string
73
73
  });
74
74
 
75
- var toggle = withTheme()(Toggle);
75
+ var Toggle$1 = withTheme()(Toggle);
76
76
 
77
- export default toggle;
78
- export { Size };
77
+ export { Size, Toggle$1 as default };
@@ -0,0 +1,16 @@
1
+ import angularComponentFactory from '../global/angular-component-factory.js';
2
+ import Toggle from '../toggle/toggle.js';
3
+ import '../_helpers/_rollupPluginBabelHelpers.js';
4
+ import 'angular';
5
+ import 'react';
6
+ import 'react-dom';
7
+ import '../global/ring-angular-component.js';
8
+ import '../global/react-dom-renderer.js';
9
+ import 'prop-types';
10
+ import 'classnames';
11
+ import '../global/theme.js';
12
+ import '../global/data-tests.js';
13
+
14
+ var toggleNg = angularComponentFactory(Toggle, 'Toggle').name;
15
+
16
+ export { toggleNg as default };
@@ -153,6 +153,10 @@ class Tooltip extends Component {
153
153
  popupProps,
154
154
  ...restProps
155
155
  } = this.props;
156
+ const ariaProps = typeof title === 'string' && !!title ? {
157
+ 'aria-label': title,
158
+ role: 'tooltip'
159
+ } : {};
156
160
  const {
157
161
  onNestedTooltipShow,
158
162
  onNestedTooltipHide
@@ -162,10 +166,10 @@ class Tooltip extends Component {
162
166
  onNestedTooltipShow,
163
167
  onNestedTooltipHide
164
168
  }
165
- }, /*#__PURE__*/React.createElement("span", _extends({}, restProps, {
169
+ }, /*#__PURE__*/React.createElement("span", _extends({}, ariaProps, restProps, {
166
170
  ref: this.containerRef,
167
171
  "data-test": joinDataTestAttributes('ring-tooltip', dataTest),
168
- "data-test-title": title
172
+ "data-test-title": typeof title === 'string' ? title : undefined
169
173
  }), children, /*#__PURE__*/React.createElement(Popup, _extends({
170
174
  trapFocus: false,
171
175
  hidden: !this.state.showPopup || this.state.showNestedPopup,
@@ -185,7 +189,7 @@ _defineProperty(Tooltip, "propTypes", {
185
189
  delay: PropTypes.number,
186
190
  selfOverflowOnly: PropTypes.bool,
187
191
  popupProps: PropTypes.object,
188
- title: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
192
+ title: PropTypes.node,
189
193
  children: PropTypes.node,
190
194
  'data-test': PropTypes.string
191
195
  });
@@ -200,4 +204,4 @@ _defineProperty(Tooltip, "PopupProps", Popup.PopupProps);
200
204
 
201
205
  _defineProperty(Tooltip, "contextType", TooltipContext);
202
206
 
203
- export default Tooltip;
207
+ export { Tooltip as default };
@@ -0,0 +1,98 @@
1
+ import angular from 'angular';
2
+ import { createElement } from 'react';
3
+ import { render } from 'react-dom';
4
+ import classNames from 'classnames';
5
+ import Popup from '../popup/popup.js';
6
+ import '../_helpers/_rollupPluginBabelHelpers.js';
7
+ import 'prop-types';
8
+ import '../global/get-uid.js';
9
+ import '../global/schedule-raf.js';
10
+ import '../global/dom.js';
11
+ import '../shortcuts/shortcuts.js';
12
+ import '../shortcuts/core.js';
13
+ import 'combokeys';
14
+ import '../global/sniffer.js';
15
+ import 'sniffr';
16
+ import '../global/data-tests.js';
17
+ import '../tab-trap/tab-trap.js';
18
+ import '../popup/position.js';
19
+ import '../popup/popup.consts.js';
20
+ import '../popup/popup.target.js';
21
+
22
+ /**
23
+ * @name Tooltip Ng
24
+ */
25
+
26
+ const OPEN_CLASS = 'ring-tooltip-ng_open';
27
+ const name = angular.module('Ring.tooltip', []);
28
+ name.directive('rgTooltip', ["RgTooltipPopup", function rgTooltipDirective(RgTooltipPopup) {
29
+ return {
30
+ restrict: 'A',
31
+ link: function link(scope, iElement, iAttrs) {
32
+ const element = iElement[0];
33
+
34
+ const getTooltipText = () => {
35
+ try {
36
+ return scope.$eval(iAttrs.rgTooltip);
37
+ } catch (err) {
38
+ return iAttrs.rgTooltip;
39
+ }
40
+ };
41
+
42
+ const popupWrapper = new RgTooltipPopup(element, getTooltipText);
43
+ element.addEventListener('mouseover', () => {
44
+ popupWrapper.displayTooltip(iAttrs.rgTooltipClass);
45
+ element.classList.add(OPEN_CLASS);
46
+ });
47
+ element.addEventListener('mouseout', () => {
48
+ popupWrapper.hideTooltip();
49
+ element.classList.remove(OPEN_CLASS);
50
+ });
51
+ }
52
+ };
53
+ }]);
54
+ name.factory('RgTooltipPopup', function RgTooltipPopupDirective() {
55
+ // eslint-disable-next-line func-names
56
+ return function (anchorElement, textGetter) {
57
+ this.wrapperElement = document.createElement('span');
58
+ this.defaultProps = {
59
+ anchorElement,
60
+ maxHeight: 400,
61
+ attached: false,
62
+ dontCloseOnAnchorClick: true,
63
+ trapFocus: false
64
+ };
65
+
66
+ this.renderPopup = props => {
67
+ this.popup = render( /*#__PURE__*/createElement(Popup, { ...this.defaultProps,
68
+ ...props
69
+ }, this.text), this.wrapperElement);
70
+ };
71
+
72
+ this.displayTooltip = customClass => {
73
+ const text = textGetter();
74
+
75
+ if (!text) {
76
+ return;
77
+ }
78
+
79
+ this.text = text;
80
+ const className = classNames({
81
+ 'ring-tooltip-ng': true
82
+ }, customClass);
83
+ this.renderPopup({
84
+ hidden: false,
85
+ className
86
+ });
87
+ };
88
+
89
+ this.hideTooltip = () => {
90
+ this.renderPopup({
91
+ hidden: true
92
+ });
93
+ };
94
+ };
95
+ });
96
+ var tooltipNg = name.name;
97
+
98
+ export { tooltipNg as default };
@@ -0,0 +1,409 @@
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import React from 'react';
3
+ import { render, unmountComponentAtNode } from 'react-dom';
4
+ import ActualStorage from '../storage/storage.js';
5
+ import alertService from '../alert-service/alert-service.js';
6
+ import Link from '../link/link.js';
7
+ import Alert from '../alert/alert.js';
8
+ import Group from '../group/group.js';
9
+ import UserAgreement from './user-agreement.js';
10
+ import '../storage/storage__local.js';
11
+ import '../global/get-uid.js';
12
+ import 'classnames';
13
+ import 'prop-types';
14
+ import '@jetbrains/icons/exception';
15
+ import '@jetbrains/icons/checkmark';
16
+ import '@jetbrains/icons/warning';
17
+ import '@jetbrains/icons/close';
18
+ import '../icon/icon.js';
19
+ import 'util-deprecate';
20
+ import '../icon/icon__constants.js';
21
+ import '../_helpers/icon.js';
22
+ import '../icon/icon__svg.js';
23
+ import '../global/memoize.js';
24
+ import '../loader-inline/loader-inline.js';
25
+ import '../global/theme.js';
26
+ import '../global/data-tests.js';
27
+ import '../_helpers/inject-styles.js';
28
+ import '../global/conic-gradient.js';
29
+ import 'conic-gradient';
30
+ import '../global/supports-css.js';
31
+ import '../global/inject-styles.js';
32
+ import '../global/radial-gradient-mask.js';
33
+ import '../global/dom.js';
34
+ import '../alert/container.js';
35
+ import '../storage/storage__fallback.js';
36
+ import 'deep-equal';
37
+ import 'focus-visible';
38
+ import '../link/clickableLink.js';
39
+ import '../_helpers/link.js';
40
+ import '../_helpers/group.js';
41
+ import '../dialog/dialog.js';
42
+ import '../island/island.js';
43
+ import '../island/adaptive-island-hoc.js';
44
+ import '../global/linear-function.js';
45
+ import '../_helpers/island.js';
46
+ import '../island/header.js';
47
+ import '../island/content.js';
48
+ import 'element-resize-detector';
49
+ import '../global/schedule-raf.js';
50
+ import '../shortcuts/shortcuts.js';
51
+ import '../shortcuts/core.js';
52
+ import 'combokeys';
53
+ import '../global/sniffer.js';
54
+ import 'sniffr';
55
+ import '../tab-trap/tab-trap.js';
56
+ import '../button/button.js';
57
+ import '@jetbrains/icons/chevron-10px';
58
+ import '../_helpers/button__classes.js';
59
+ import '../popup/popup.target.js';
60
+ import '../_helpers/dialog__body-scroll-preventer.js';
61
+ import 'scrollbar-width';
62
+ import '../panel/panel.js';
63
+ import '../_helpers/panel.js';
64
+ import '../markdown/markdown.js';
65
+ import 'react-markdown';
66
+ import 'remark-breaks';
67
+ import 'remark-gfm';
68
+ import '../global/normalize-indent.js';
69
+ import '../global/trivial-template-tag.js';
70
+ import '../markdown/code.js';
71
+ import '../code/code.js';
72
+ import 'highlight.js/lib/core';
73
+ import '../markdown/link.js';
74
+ import '../markdown/heading.js';
75
+ import '../heading/heading.js';
76
+
77
+ const GUEST_SESSION_KEY = 'end-user-agreement-consent';
78
+ const ONE_HOUR = 60 * 60 * 1000; // eslint-disable-line no-magic-numbers
79
+
80
+ const storageKey = 'userAgreementKey';
81
+ const showMessage = 'userAgreementShow';
82
+ const hideMessage = 'userAgreementHide';
83
+ const DEFAULT_CONSENT = {
84
+ accepted: false,
85
+ majorVersion: 0,
86
+ minorVersion: 0
87
+ };
88
+ const DEFAULT_AGREEMENT = {
89
+ enabled: false,
90
+ majorVersion: 0,
91
+ minorVersion: 0,
92
+ requiredForREST: false,
93
+ text: ''
94
+ };
95
+ class UserAgreementService {
96
+ constructor() {
97
+ var _this = this;
98
+
99
+ let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
100
+
101
+ _defineProperty(this, "_dialogPromise", null);
102
+
103
+ _defineProperty(this, "_alertPromise", null);
104
+
105
+ _defineProperty(this, "tabId", Math.random());
106
+
107
+ _defineProperty(this, "interval", ONE_HOUR);
108
+
109
+ _defineProperty(this, "container", document.createElement('div'));
110
+
111
+ _defineProperty(this, "storage", new ActualStorage());
112
+
113
+ _defineProperty(this, "checkingPromise", null);
114
+
115
+ _defineProperty(this, "guest", false);
116
+
117
+ _defineProperty(this, "userAgreement", DEFAULT_AGREEMENT);
118
+
119
+ _defineProperty(this, "userConsent", DEFAULT_CONSENT);
120
+
121
+ _defineProperty(this, "startChecking", () => {
122
+ this.intervalId = setInterval(this.checkConsentAndShowDialog, this.interval);
123
+ window.addEventListener('storage', this.onStorageEvent);
124
+ this.checkConsentAndShowDialog();
125
+ });
126
+
127
+ _defineProperty(this, "stopChecking", () => {
128
+ clearInterval(this.intervalId);
129
+ window.removeEventListener('storage', this.onStorageEvent);
130
+ this.hideDialog();
131
+ });
132
+
133
+ _defineProperty(this, "onStorageEvent", event => {
134
+ if (event.key === storageKey) {
135
+ const {
136
+ tabId,
137
+ command
138
+ } = JSON.parse(event.newValue);
139
+
140
+ if (tabId !== this.tabId) {
141
+ if (command === showMessage) {
142
+ this.checkConsentAndShowDialog(true);
143
+ } else if (command === hideMessage) {
144
+ this.hideDialogAndAlert(true);
145
+ }
146
+ }
147
+ }
148
+ });
149
+
150
+ _defineProperty(this, "_notifyAboutShowing", () => {
151
+ localStorage.setItem(storageKey, JSON.stringify({
152
+ command: showMessage,
153
+ tabId: this.tabId
154
+ }));
155
+ });
156
+
157
+ _defineProperty(this, "_notifyAboutHiding", () => {
158
+ localStorage.setItem(storageKey, JSON.stringify({
159
+ command: hideMessage,
160
+ tabId: this.tabId
161
+ }));
162
+ });
163
+
164
+ _defineProperty(this, "getUserAgreement", async () => {
165
+ this.userAgreement = (await this.config.getUserAgreement()) || DEFAULT_AGREEMENT;
166
+ return this.userAgreement;
167
+ });
168
+
169
+ _defineProperty(this, "getUserConsent", async () => {
170
+ const {
171
+ guest,
172
+ endUserAgreementConsent
173
+ } = await this.config.getUserConsent();
174
+ this.guest = guest;
175
+
176
+ if (guest) {
177
+ this.userConsent = (await this.storage.get(GUEST_SESSION_KEY)) || this.userConsent;
178
+ } else {
179
+ this.userConsent = endUserAgreementConsent || this.userConsent;
180
+ }
181
+
182
+ return this.userConsent;
183
+ });
184
+
185
+ _defineProperty(this, "checkConsentAndShowDialog", async withoutNotifications => {
186
+ if (await this.checkConsent()) {
187
+ return this.hideDialogAndAlert(withoutNotifications);
188
+ } else {
189
+ return this.showDialogOrAlert(withoutNotifications);
190
+ }
191
+ });
192
+
193
+ _defineProperty(this, "checkConsent", async () => {
194
+ if (!this.checkingPromise) {
195
+ this.checkingPromise = Promise.all([this.getUserAgreement(), this.getUserConsent()]);
196
+ }
197
+
198
+ const [userAgreement, userConsent] = await this.checkingPromise;
199
+ this.checkingPromise = null;
200
+ const {
201
+ enabled,
202
+ majorVersion: actualVersion
203
+ } = userAgreement;
204
+ const {
205
+ accepted,
206
+ majorVersion: acceptedVersion
207
+ } = userConsent;
208
+ return !enabled || accepted && actualVersion === acceptedVersion;
209
+ });
210
+
211
+ _defineProperty(this, "showAlert", withoutNotifications => {
212
+ if (this._alertPromise) {
213
+ return this._alertPromise;
214
+ }
215
+
216
+ this._alertPromise = new Promise((resolve, reject) => {
217
+ const {
218
+ userAgreement,
219
+ reviewNow,
220
+ remindLater
221
+ } = this.config.translations || {};
222
+
223
+ const onRemind = () => {
224
+ this.hideDialogAndAlert(withoutNotifications);
225
+ reject('Postponed');
226
+ };
227
+
228
+ const onReview = async () => {
229
+ await this.showDialog(true, false, {
230
+ onRemindLater: onRemind
231
+ });
232
+ this.hideAlert(withoutNotifications);
233
+ resolve();
234
+ };
235
+
236
+ const message = /*#__PURE__*/React.createElement(Group, null, /*#__PURE__*/React.createElement("span", null, userAgreement || 'User Agreement'), /*#__PURE__*/React.createElement(Link, {
237
+ onClick: onReview,
238
+ "data-test": "review"
239
+ }, reviewNow || 'Review now'), /*#__PURE__*/React.createElement(Link, {
240
+ onClick: onRemind,
241
+ "data-test": "later"
242
+ }, remindLater || 'Remind me later'));
243
+ this.alertKey = alertService.addAlert(message, Alert.Type.WARNING, 0, {
244
+ closeable: false
245
+ });
246
+ });
247
+
248
+ if (!withoutNotifications) {
249
+ this._notifyAboutShowing();
250
+ }
251
+
252
+ return this._alertPromise;
253
+ });
254
+
255
+ _defineProperty(this, "hideAlert", withoutNotifications => {
256
+ const {
257
+ onRemindLater
258
+ } = this.config;
259
+ alertService.remove(this.alertKey);
260
+ this.alertKey = null;
261
+ this._alertPromise = null;
262
+
263
+ if (onRemindLater) {
264
+ onRemindLater();
265
+ }
266
+
267
+ if (!withoutNotifications) {
268
+ this._notifyAboutHiding();
269
+ }
270
+ });
271
+
272
+ _defineProperty(this, "showDialog", function (withoutNotifications) {
273
+ let preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
274
+ let restOptions = arguments.length > 2 ? arguments[2] : undefined;
275
+ const {
276
+ translations,
277
+ onDialogShow
278
+ } = _this.config;
279
+ const {
280
+ text
281
+ } = _this.userAgreement;
282
+ const show = true;
283
+
284
+ if (!_this._dialogPromise) {
285
+ _this._dialogPromise = new Promise((resolve, reject) => {
286
+ const onAccept = async () => {
287
+ await _this.onAccept();
288
+ resolve();
289
+ };
290
+
291
+ const onDecline = async () => {
292
+ await _this.onDecline();
293
+ reject();
294
+ };
295
+
296
+ const onClose = _this.hideDialogAndAlert;
297
+ const props = {
298
+ text,
299
+ show,
300
+ onAccept,
301
+ onDecline,
302
+ onClose,
303
+ translations,
304
+ preview,
305
+ ...restOptions
306
+ };
307
+ render( /*#__PURE__*/React.createElement(UserAgreement, props), _this.container);
308
+
309
+ if (onDialogShow) {
310
+ onDialogShow();
311
+ }
312
+ });
313
+
314
+ if (!withoutNotifications) {
315
+ _this._notifyAboutShowing();
316
+ }
317
+ }
318
+
319
+ return _this._dialogPromise;
320
+ });
321
+
322
+ _defineProperty(this, "hideDialog", withoutNotifications => {
323
+ const {
324
+ onDialogHide
325
+ } = this.config;
326
+ unmountComponentAtNode(this.container);
327
+
328
+ if (onDialogHide) {
329
+ onDialogHide();
330
+ this._dialogPromise = null;
331
+
332
+ if (!withoutNotifications) {
333
+ this._notifyAboutHiding();
334
+ }
335
+ }
336
+ });
337
+
338
+ _defineProperty(this, "showDialogOrAlert", function () {
339
+ if (_this.guest && !_this.userAgreement.requiredForREST) {
340
+ return _this.showAlert(...arguments);
341
+ }
342
+
343
+ return _this.showDialog(...arguments);
344
+ });
345
+
346
+ _defineProperty(this, "hideDialogAndAlert", function () {
347
+ _this.hideAlert(...arguments);
348
+
349
+ _this.hideDialog(...arguments);
350
+ });
351
+
352
+ _defineProperty(this, "onAccept", async () => {
353
+ const {
354
+ setUserConsent,
355
+ onAccept
356
+ } = this.config;
357
+
358
+ if (this.guest) {
359
+ const {
360
+ majorVersion,
361
+ minorVersion
362
+ } = this.userAgreement;
363
+ this.userConsent = {
364
+ majorVersion,
365
+ minorVersion,
366
+ accepted: true
367
+ };
368
+ await this.storage.set(GUEST_SESSION_KEY, this.userConsent);
369
+ } else {
370
+ this.userConsent = await setUserConsent();
371
+ }
372
+
373
+ this.hideDialog();
374
+
375
+ if (onAccept) {
376
+ onAccept();
377
+ }
378
+ });
379
+
380
+ _defineProperty(this, "onDecline", () => {
381
+ const {
382
+ onDecline
383
+ } = this.config;
384
+ this.hideDialog();
385
+
386
+ if (onDecline) {
387
+ onDecline();
388
+ }
389
+ });
390
+
391
+ if (!config.getUserAgreement) {
392
+ throw new Error('Please pass a "getUserAgreement" option to UserAgreementService');
393
+ }
394
+
395
+ if (!config.getUserConsent) {
396
+ throw new Error('Please pass a "getUserConsent" option to UserAgreementService');
397
+ }
398
+
399
+ if (!config.setUserConsent) {
400
+ throw new Error('Please pass a "setUserConsent" option to UserAgreementService');
401
+ }
402
+
403
+ this.config = config;
404
+ this.interval = config.interval || this.interval;
405
+ }
406
+
407
+ }
408
+
409
+ export { UserAgreementService as default, hideMessage, showMessage };