@jetbrains/ring-ui 4.1.0-beta.9 → 4.1.4

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 (438) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +22 -16
  3. package/babel.config.js +3 -2
  4. package/components/alert/alert.js +9 -3
  5. package/components/alert/container.css +1 -1
  6. package/components/alert-service/alert-service.examples.css +18 -0
  7. package/components/alert-service/alert-service.examples.js +21 -0
  8. package/components/alert-service/alert-service.js +10 -3
  9. package/components/analytics/analytics__fus-plugin.js +1 -1
  10. package/components/auth/auth.test.js +14 -7
  11. package/components/auth/auth__core.js +64 -33
  12. package/components/auth-dialog/auth-dialog.js +1 -0
  13. package/components/avatar/avatar.css +4 -1
  14. package/components/avatar/avatar.examples.js +3 -2
  15. package/components/avatar/avatar.js +31 -6
  16. package/components/avatar/fallback-avatar.js +136 -0
  17. package/components/avatar-editor-ng/avatar-editor-ng.css +2 -2
  18. package/components/avatar-editor-ng/avatar-editor-ng.js +2 -1
  19. package/components/avatar-editor-ng/{avatar-editor-ng.html → avatar-editor-ng__template.js} +2 -2
  20. package/components/button/button.css +2 -2
  21. package/components/button/button.js +4 -1
  22. package/components/button-group/button-group.js +1 -1
  23. package/components/button-group/caption.js +1 -1
  24. package/components/button-ng/button-ng.js +1 -1
  25. package/components/button-set-ng/button-set-ng.js +3 -1
  26. package/components/checkbox/checkbox.css +1 -1
  27. package/components/code/code.js +1 -1
  28. package/components/confirm/confirm.js +1 -0
  29. package/components/confirm-service/confirm-service.js +5 -5
  30. package/components/content-layout/content-layout.css +1 -1
  31. package/components/data-list/data-list.css +1 -1
  32. package/components/date-picker/date-input.js +5 -4
  33. package/components/date-picker/date-picker.css +34 -22
  34. package/components/date-picker/date-picker.examples.js +1 -1
  35. package/components/date-picker/date-picker.js +16 -14
  36. package/components/date-picker/date-popup.js +22 -7
  37. package/components/date-picker/month-names.js +8 -5
  38. package/components/date-picker/month.js +6 -2
  39. package/components/date-picker/weekdays.js +10 -2
  40. package/components/dialog/dialog.examples.js +3 -1
  41. package/components/dialog/dialog.js +5 -2
  42. package/components/dialog/dialog.test.js +1 -1
  43. package/components/dialog/dialog__body-scroll-preventer.js +2 -2
  44. package/components/dialog-ng/dialog-ng.js +7 -8
  45. package/components/dialog-ng/{dialog-ng.html → dialog-ng__template.js} +2 -2
  46. package/components/dropdown/anchor.js +1 -0
  47. package/components/dropdown/dropdown.examples.js +36 -1
  48. package/components/dropdown-menu/dropdown-menu.examples.js +47 -0
  49. package/components/dropdown-menu/dropdown-menu.js +117 -0
  50. package/components/dropdown-menu/dropdown-menu.test.js +76 -0
  51. package/components/error-bubble/error-bubble-legacy.css +1 -1
  52. package/components/error-bubble/error-bubble.css +1 -1
  53. package/components/error-bubble/error-bubble.examples.js +1 -1
  54. package/components/error-page/error-page.css +2 -2
  55. package/components/footer-ng/footer-ng.js +13 -3
  56. package/components/form/form.css +2 -2
  57. package/components/form-ng/form-ng.js +3 -1
  58. package/components/global/global.css +1 -1
  59. package/components/global/theme.js +1 -1
  60. package/components/global/variables.css +8 -1
  61. package/components/grid/grid.css +10 -9
  62. package/components/header/header.css +1 -1
  63. package/components/header/header.examples.js +7 -8
  64. package/components/header/profile.js +10 -11
  65. package/components/http/http.js +1 -1
  66. package/components/icon/icon.css +5 -4
  67. package/components/island/island.css +4 -3
  68. package/components/island-legacy/island-legacy.css +3 -1
  69. package/components/list/list.js +6 -1
  70. package/components/list/list__custom.js +9 -3
  71. package/components/list/list__item.js +8 -2
  72. package/components/list/list__link.js +2 -1
  73. package/components/loader-inline/loader-inline.css +1 -1
  74. package/components/loader-screen/loader-screen.css +1 -1
  75. package/components/message/message.css +1 -1
  76. package/components/message/message.examples.js +8 -5
  77. package/components/pager/pager.js +5 -3
  78. package/components/permissions/permissions.js +1 -1
  79. package/components/progress-bar/progress-bar.css +1 -1
  80. package/components/progress-bar/progress-bar.examples.js +3 -3
  81. package/components/progress-bar/progress-bar.js +5 -2
  82. package/components/progress-bar/progress-bar.test.js +12 -13
  83. package/components/progress-bar-ng/progress-bar-ng.examples.js +3 -3
  84. package/components/query-assist/query-assist.css +13 -3
  85. package/components/query-assist/query-assist.examples.js +3 -1
  86. package/components/query-assist/query-assist.js +56 -12
  87. package/components/query-assist/query-assist.test.js +37 -5
  88. package/components/save-field-ng/save-field-ng.css +0 -3
  89. package/components/save-field-ng/save-field-ng.js +3 -1
  90. package/components/save-field-ng/{save-field-ng.html → save-field-ng__template.js} +2 -2
  91. package/components/select/select.css +12 -7
  92. package/components/select/select.examples.js +13 -0
  93. package/components/select/select.js +30 -43
  94. package/components/select/select.test.js +4 -5
  95. package/components/shortcuts-hint-ng/shortcuts-hint-ng.css +1 -1
  96. package/components/shortcuts-hint-ng/shortcuts-hint-ng.js +1 -1
  97. package/components/shortcuts-hint-ng/{shortcuts-hint-ng.html → shortcuts-hint-ng__template.js} +2 -2
  98. package/components/sidebar/sidebar.css +1 -0
  99. package/components/sidebar-ng/sidebar-ng.js +6 -2
  100. package/components/sidebar-ng/{sidebar-ng__button.html → sidebar-ng__button-template.js} +2 -2
  101. package/components/sidebar-ng/{sidebar-ng.html → sidebar-ng__template.js} +2 -2
  102. package/components/table/row.js +2 -1
  103. package/components/table/table.css +2 -1
  104. package/components/table-legacy/table-legacy.css +2 -2
  105. package/components/table-legacy/table-legacy__toolbar.css +2 -2
  106. package/components/table-legacy-ng/table-legacy-ng.js +38 -5
  107. package/components/table-legacy-ng/table-legacy-ng__pager.js +7 -1
  108. package/components/tabs/collapsible-tab.js +2 -2
  109. package/components/tabs/collapsible-tabs.js +4 -8
  110. package/components/tabs/dumb-tabs.js +1 -0
  111. package/components/tabs/tab-link.js +4 -2
  112. package/components/tabs/tabs.css +27 -0
  113. package/components/tabs-ng/tabs-ng.js +4 -2
  114. package/components/tabs-ng/{tabs-ng.html → tabs-ng__template.js} +6 -2
  115. package/components/tag/tag.css +5 -2
  116. package/components/tag/tag.examples.js +3 -0
  117. package/components/tag/tag.js +19 -16
  118. package/components/tags-input/tag-input.examples.js +1 -1
  119. package/components/tags-input/tags-input.js +5 -2
  120. package/components/template-ng/template-ng.js +1 -1
  121. package/components/tooltip/tooltip.js +7 -2
  122. package/components/user-agreement/user-agreement.css +1 -1
  123. package/components/user-agreement/user-agreement.examples.js +7 -4
  124. package/components/user-agreement/user-agreement.js +1 -0
  125. package/dist/_helpers/_rollupPluginBabelHelpers.js +1 -94
  126. package/dist/_helpers/anchor.js +6 -6
  127. package/dist/_helpers/badge.js +1 -1
  128. package/dist/_helpers/button-group.js +3 -0
  129. package/dist/_helpers/button-set.js +3 -0
  130. package/dist/_helpers/button-toolbar.js +3 -0
  131. package/dist/_helpers/button__classes.js +1 -1
  132. package/dist/_helpers/card.js +6 -8
  133. package/dist/_helpers/checkbox.js +3 -0
  134. package/dist/_helpers/date-picker.js +1 -1
  135. package/dist/_helpers/dialog__body-scroll-preventer.js +3 -2
  136. package/dist/_helpers/error-message.js +3 -0
  137. package/dist/_helpers/footer.js +121 -0
  138. package/dist/_helpers/grid.js +1 -1
  139. package/dist/_helpers/group.js +3 -0
  140. package/dist/_helpers/header.js +1 -1
  141. package/dist/_helpers/icon.js +3 -0
  142. package/dist/_helpers/inject-styles.js +1 -1
  143. package/dist/_helpers/input.js +3 -0
  144. package/dist/_helpers/island.js +1 -1
  145. package/dist/_helpers/link.js +3 -0
  146. package/dist/_helpers/list.js +1 -1
  147. package/dist/_helpers/loader-screen.js +3 -0
  148. package/dist/_helpers/panel.js +3 -0
  149. package/dist/_helpers/query-assist__suggestions.js +1 -1
  150. package/dist/_helpers/radio.js +3 -0
  151. package/dist/_helpers/select__filter.js +6 -8
  152. package/dist/_helpers/services-link.js +6 -8
  153. package/dist/_helpers/sidebar.js +6 -8
  154. package/dist/_helpers/table.js +1 -1
  155. package/dist/_helpers/tabs.js +1 -1
  156. package/dist/_helpers/title.js +1 -1
  157. package/dist/alert/alert.js +15 -9
  158. package/dist/alert/container.js +7 -9
  159. package/dist/alert-service/alert-service.js +24 -13
  160. package/dist/analytics/analytics.js +2 -2
  161. package/dist/analytics/analytics__custom-plugin.js +1 -1
  162. package/dist/analytics/analytics__fus-plugin.js +2 -2
  163. package/dist/analytics/analytics__ga-plugin.js +1 -1
  164. package/dist/analytics/analytics__plugin-utils.js +1 -1
  165. package/dist/analytics-ng/analytics-ng.js +94 -0
  166. package/dist/auth/auth.js +7 -4
  167. package/dist/auth/auth__core.js +86 -48
  168. package/dist/auth/background-flow.js +1 -2
  169. package/dist/auth/down-notification.js +6 -3
  170. package/dist/auth/iframe-flow.js +5 -2
  171. package/dist/auth/landing-entry.js +1 -1
  172. package/dist/auth/landing.js +5 -2
  173. package/dist/auth/request-builder.js +1 -1
  174. package/dist/auth/response-parser.js +1 -1
  175. package/dist/auth/storage.js +3 -2
  176. package/dist/auth/token-validator.js +1 -1
  177. package/dist/auth/window-flow.js +1 -1
  178. package/dist/auth-dialog/auth-dialog.js +5 -3
  179. package/dist/auth-dialog-service/auth-dialog-service.js +6 -5
  180. package/dist/auth-ng/auth-ng.js +203 -0
  181. package/dist/auth-ng/auth-ng.mock.js +33 -0
  182. package/dist/autofocus-ng/autofocus-ng.js +50 -0
  183. package/dist/avatar/avatar.js +36 -30
  184. package/dist/avatar/fallback-avatar.js +141 -0
  185. package/dist/avatar-editor-ng/avatar-editor-ng.js +164 -0
  186. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +30 -0
  187. package/dist/avatar-ng/avatar-ng.js +18 -0
  188. package/dist/badge/badge.js +6 -8
  189. package/dist/badge-ng/badge-ng.js +16 -0
  190. package/dist/breadcrumb-ng/breadcrumb-ng.js +61 -0
  191. package/dist/button/button.js +16 -10
  192. package/dist/button-group/button-group.js +4 -4
  193. package/dist/button-group/caption.js +24 -5
  194. package/dist/button-group-ng/button-group-ng.js +38 -0
  195. package/dist/button-ng/button-ng.js +223 -0
  196. package/dist/button-set/button-set.js +3 -4
  197. package/dist/button-set-ng/button-set-ng.js +19 -0
  198. package/dist/button-toolbar/button-toolbar.js +3 -4
  199. package/dist/button-toolbar-ng/button-toolbar-ng.js +23 -0
  200. package/dist/caret/caret.js +1 -1
  201. package/dist/checkbox/checkbox.js +9 -11
  202. package/dist/checkbox-ng/checkbox-ng.js +55 -0
  203. package/dist/code/code.js +136 -0
  204. package/dist/compiler-ng/compiler-ng.js +53 -0
  205. package/dist/confirm/confirm.js +6 -3
  206. package/dist/confirm-ng/confirm-ng.js +66 -0
  207. package/dist/confirm-service/confirm-service.js +12 -10
  208. package/dist/content-layout/content-layout.js +6 -8
  209. package/dist/contenteditable/contenteditable.js +13 -16
  210. package/dist/data-list/data-list.js +10 -7
  211. package/dist/data-list/data-list.mock.js +2 -2
  212. package/dist/data-list/item.js +5 -3
  213. package/dist/data-list/selection.js +1 -1
  214. package/dist/data-list/title.js +3 -1
  215. package/dist/data-list-ng/data-list-ng.js +59 -0
  216. package/dist/date-picker/consts.js +1 -2
  217. package/dist/date-picker/date-input.js +10 -6
  218. package/dist/date-picker/date-picker.js +38 -29
  219. package/dist/date-picker/date-popup.js +51 -28
  220. package/dist/date-picker/day.js +2 -2
  221. package/dist/date-picker/formats.js +1 -1
  222. package/dist/date-picker/month-names.js +16 -9
  223. package/dist/date-picker/month-slider.js +2 -2
  224. package/dist/date-picker/month.js +13 -7
  225. package/dist/date-picker/months.js +3 -3
  226. package/dist/date-picker/weekdays.js +12 -4
  227. package/dist/date-picker/years.js +2 -2
  228. package/dist/dialog/dialog.js +13 -10
  229. package/dist/dialog/dialog__body-scroll-preventer.js +1 -1
  230. package/dist/dialog-ng/dialog-ng.js +601 -0
  231. package/dist/dialog-ng/dialog-ng__template.js +71 -0
  232. package/dist/docked-panel-ng/docked-panel-ng.js +170 -0
  233. package/dist/dropdown/anchor.js +2 -1
  234. package/dist/dropdown/dropdown.js +8 -10
  235. package/dist/dropdown-menu/dropdown-menu.js +175 -0
  236. package/dist/error-bubble/error-bubble.js +7 -9
  237. package/dist/error-message/error-message.js +4 -4
  238. package/dist/error-message-ng/error-message-ng.js +53 -0
  239. package/dist/footer/footer.js +6 -122
  240. package/dist/footer-ng/footer-ng.js +75 -0
  241. package/dist/form-ng/form-ng.js +169 -0
  242. package/dist/global/angular-component-factory.js +1 -2
  243. package/dist/global/compose.js +1 -1
  244. package/dist/global/composeRefs.js +1 -1
  245. package/dist/global/conic-gradient.js +3 -5
  246. package/dist/global/create-stateful-context.js +1 -1
  247. package/dist/global/data-tests.js +1 -1
  248. package/dist/global/focus-sensor-hoc.js +9 -11
  249. package/dist/global/fuzzy-highlight.js +1 -1
  250. package/dist/global/get-event-key.js +1 -1
  251. package/dist/global/get-uid.js +1 -1
  252. package/dist/global/linear-function.js +1 -2
  253. package/dist/global/listeners.js +1 -1
  254. package/dist/global/memoize.js +1 -1
  255. package/dist/global/normalize-indent.js +1 -1
  256. package/dist/global/promise-with-timeout.js +1 -1
  257. package/dist/global/radial-gradient-mask.js +1 -1
  258. package/dist/global/react-dom-renderer.js +1 -1
  259. package/dist/global/rerender-hoc.js +3 -5
  260. package/dist/global/ring-angular-component.js +1 -1
  261. package/dist/global/schedule-raf.js +1 -1
  262. package/dist/global/sniffer.js +1 -1
  263. package/dist/global/supports-css.js +1 -1
  264. package/dist/global/theme.js +6 -8
  265. package/dist/global/trivial-template-tag.js +1 -1
  266. package/dist/global/variables_dark.js +1 -1
  267. package/dist/grid/col.js +6 -8
  268. package/dist/grid/grid.js +5 -7
  269. package/dist/grid/row.js +6 -8
  270. package/dist/group/group.js +7 -10
  271. package/dist/group-ng/group-ng.js +11 -0
  272. package/dist/header/header.js +29 -26
  273. package/dist/header/logo.js +8 -9
  274. package/dist/header/profile.js +37 -32
  275. package/dist/header/services-link.js +1 -0
  276. package/dist/header/services.js +10 -9
  277. package/dist/header/smart-profile.js +27 -24
  278. package/dist/header/smart-services.js +10 -9
  279. package/dist/header/tray-icon.js +12 -12
  280. package/dist/header/tray.js +6 -8
  281. package/dist/heading/heading.js +9 -12
  282. package/dist/http/http.js +37 -37
  283. package/dist/http/http.mock.js +4 -4
  284. package/dist/hub-source/hub-source.js +1 -1
  285. package/dist/hub-source/hub-source__users-groups.js +1 -1
  286. package/dist/icon/icon.js +8 -8
  287. package/dist/icon/icon__svg.js +81 -6
  288. package/dist/icon/index.js +2 -1
  289. package/dist/icon-ng/icon-ng.js +89 -0
  290. package/dist/input/input.js +9 -12
  291. package/dist/input-ng/input-ng.js +166 -0
  292. package/dist/island/adaptive-island-hoc.js +1 -2
  293. package/dist/island/content.js +6 -8
  294. package/dist/island/header.js +6 -8
  295. package/dist/island/island.js +6 -9
  296. package/dist/island-legacy/content-legacy.js +6 -8
  297. package/dist/island-legacy/header-legacy.js +6 -8
  298. package/dist/island-legacy/island-legacy.js +6 -8
  299. package/dist/island-ng/island-content-ng.js +56 -0
  300. package/dist/island-ng/island-header-ng.js +32 -0
  301. package/dist/island-ng/island-ng-class-fixer.js +9 -0
  302. package/dist/island-ng/island-ng.js +31 -0
  303. package/dist/link/clickableLink.js +6 -8
  304. package/dist/link/link.js +7 -11
  305. package/dist/link-ng/link-ng.js +25 -0
  306. package/dist/list/list.js +25 -13
  307. package/dist/list/list__custom.js +13 -10
  308. package/dist/list/list__hint.js +1 -1
  309. package/dist/list/list__item.js +20 -13
  310. package/dist/list/list__link.js +11 -12
  311. package/dist/list/list__separator.js +1 -1
  312. package/dist/list/list__title.js +1 -1
  313. package/dist/list/list__users-groups-source.js +11 -7
  314. package/dist/loader/loader.js +6 -8
  315. package/dist/loader/loader__core.js +2 -2
  316. package/dist/loader-inline/inject-styles.js +1 -1
  317. package/dist/loader-inline/loader-inline.js +6 -8
  318. package/dist/loader-inline-ng/loader-inline-ng.js +42 -0
  319. package/dist/loader-ng/loader-ng.js +43 -0
  320. package/dist/loader-screen/loader-screen.js +7 -10
  321. package/dist/loader-screen-ng/loader-screen-ng.js +99 -0
  322. package/dist/login-dialog/login-dialog.js +5 -3
  323. package/dist/login-dialog/service.js +7 -5
  324. package/dist/markdown/code.js +30 -0
  325. package/dist/markdown/heading.js +23 -0
  326. package/dist/markdown/link.js +30 -0
  327. package/dist/markdown/markdown.js +73 -0
  328. package/dist/message/message.js +5 -4
  329. package/dist/message-bundle-ng/message-bundle-ng.js +111 -0
  330. package/dist/old-browsers-message/old-browsers-message.js +0 -1
  331. package/dist/old-browsers-message/old-browsers-message__stop.js +0 -1
  332. package/dist/old-browsers-message/white-list.js +4 -5
  333. package/dist/pager/pager.js +18 -9
  334. package/dist/pager-ng/pager-ng.js +96 -0
  335. package/dist/panel/panel.js +7 -10
  336. package/dist/panel-ng/panel-ng.js +16 -0
  337. package/dist/permissions/permissions.js +1 -1
  338. package/dist/permissions/permissions__cache.js +1 -1
  339. package/dist/permissions-ng/permissions-ng.js +274 -0
  340. package/dist/place-under-ng/place-under-ng.js +157 -0
  341. package/dist/popup/popup.js +8 -8
  342. package/dist/popup/popup.target.js +4 -5
  343. package/dist/popup/position.js +1 -2
  344. package/dist/popup-menu/popup-menu.js +21 -14
  345. package/dist/progress-bar/progress-bar.js +12 -10
  346. package/dist/progress-bar-ng/progress-bar-ng.js +15 -0
  347. package/dist/promised-click-ng/promised-click-ng.js +126 -0
  348. package/dist/proxy-attrs/proxy-attrs.js +1 -1
  349. package/dist/query-assist/query-assist.js +97 -28
  350. package/dist/query-assist/query-assist__suggestions.js +5 -1
  351. package/dist/query-assist-ng/query-assist-ng.js +82 -0
  352. package/dist/radio/radio.js +7 -5
  353. package/dist/radio/radio__item.js +10 -15
  354. package/dist/radio-ng/radio-ng.js +63 -0
  355. package/dist/save-field-ng/save-field-ng.js +335 -0
  356. package/dist/save-field-ng/save-field-ng__template.js +34 -0
  357. package/dist/select/select.js +50 -49
  358. package/dist/select/select__filter.js +6 -1
  359. package/dist/select/select__popup.js +8 -3
  360. package/dist/select-ng/select-ng.js +621 -0
  361. package/dist/select-ng/select-ng__lazy.js +150 -0
  362. package/dist/select-ng/select-ng__options.js +145 -0
  363. package/dist/shortcuts/core.js +2 -2
  364. package/dist/shortcuts/shortcuts-hoc.js +6 -8
  365. package/dist/shortcuts/shortcuts.js +6 -6
  366. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +120 -0
  367. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +50 -0
  368. package/dist/shortcuts-ng/shortcuts-ng.js +261 -0
  369. package/dist/sidebar-ng/sidebar-ng.js +111 -0
  370. package/dist/sidebar-ng/sidebar-ng__button-template.js +20 -0
  371. package/dist/sidebar-ng/sidebar-ng__template.js +12 -0
  372. package/dist/storage/storage.js +3 -2
  373. package/dist/storage/storage__fallback.js +1 -1
  374. package/dist/storage/storage__local.js +3 -2
  375. package/dist/style.css +1 -1
  376. package/dist/tab-trap/tab-trap.js +7 -9
  377. package/dist/table/cell.js +2 -2
  378. package/dist/table/disable-hover-hoc.js +2 -2
  379. package/dist/table/header-cell.js +8 -9
  380. package/dist/table/header.js +5 -3
  381. package/dist/table/multitable.js +1 -1
  382. package/dist/table/row-with-focus-sensor.js +5 -3
  383. package/dist/table/row.js +11 -10
  384. package/dist/table/selection-adapter.js +1 -1
  385. package/dist/table/selection-shortcuts-hoc.js +8 -6
  386. package/dist/table/selection.js +1 -1
  387. package/dist/table/smart-table.js +14 -8
  388. package/dist/table/table.js +10 -11
  389. package/dist/table-legacy-ng/table-legacy-ng.js +501 -0
  390. package/dist/table-legacy-ng/table-legacy-ng__pager.js +122 -0
  391. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +123 -0
  392. package/dist/table-legacy-ng/table-legacy-ng__selection.js +179 -0
  393. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +56 -0
  394. package/dist/table-ng/smart-table-ng.js +65 -0
  395. package/dist/table-ng/table-ng.js +64 -0
  396. package/dist/tabs/collapsible-more.js +9 -6
  397. package/dist/tabs/collapsible-tab.js +7 -7
  398. package/dist/tabs/collapsible-tabs.js +18 -19
  399. package/dist/tabs/dumb-tabs.js +12 -9
  400. package/dist/tabs/smart-tabs.js +11 -9
  401. package/dist/tabs/tab-link.js +13 -7
  402. package/dist/tabs/tab.js +1 -1
  403. package/dist/tabs/tabs.js +5 -1
  404. package/dist/tabs-ng/tabs-ng.js +193 -0
  405. package/dist/tabs-ng/tabs-ng__template.js +40 -0
  406. package/dist/tag/tag.js +20 -14
  407. package/dist/tags-input/tags-input.js +14 -10
  408. package/dist/tags-input-ng/tags-input-ng.js +89 -0
  409. package/dist/tags-list/tags-list.js +8 -9
  410. package/dist/template-ng/template-ng.js +70 -0
  411. package/dist/text/text.js +7 -9
  412. package/dist/theme-ng/theme-ng.js +44 -0
  413. package/dist/title-ng/title-ng.js +114 -0
  414. package/dist/toggle/toggle.js +8 -11
  415. package/dist/toggle-ng/toggle-ng.js +16 -0
  416. package/dist/tooltip/tooltip.js +14 -12
  417. package/dist/tooltip-ng/tooltip-ng.js +98 -0
  418. package/dist/user-agreement/service.js +409 -0
  419. package/dist/user-agreement/toolbox.eula.js +162 -0
  420. package/dist/user-agreement/user-agreement.js +167 -0
  421. package/dist/user-card/card.js +3 -0
  422. package/dist/user-card/smart-user-card-tooltip.js +14 -14
  423. package/dist/user-card/tooltip.js +9 -7
  424. package/dist/user-card/user-card.js +5 -2
  425. package/dist/user-card-ng/user-card-ng.js +59 -0
  426. package/package.json +81 -79
  427. package/webpack.config.js +14 -10
  428. package/components/button-set-ng/button-set-ng.html +0 -1
  429. package/components/footer-ng/footer-ng.html +0 -13
  430. package/components/form-ng/form-ng__error-bubble.html +0 -3
  431. package/components/table-legacy-ng/table-legacy-ng.html +0 -4
  432. package/components/table-legacy-ng/table-legacy-ng__column.html +0 -12
  433. package/components/table-legacy-ng/table-legacy-ng__header.html +0 -4
  434. package/components/table-legacy-ng/table-legacy-ng__pager.html +0 -7
  435. package/components/table-legacy-ng/table-legacy-ng__row.html +0 -12
  436. package/components/table-legacy-ng/table-legacy-ng__title.html +0 -9
  437. package/dist/_helpers/caption.js +0 -25
  438. package/dist/_helpers/icon__svg.js +0 -83
@@ -1,5 +1,5 @@
1
- import { _ as _defineProperty, c as _objectSpread2 } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import { fixUrl, getAbsoluteBaseURL } from '../global/url.js';
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import { getAbsoluteBaseURL, fixUrl } from '../global/url.js';
3
3
  import Listeners from '../global/listeners.js';
4
4
  import HTTP from '../http/http.js';
5
5
  import promiseWithTimeout from '../global/promise-with-timeout.js';
@@ -25,7 +25,8 @@ import '@jetbrains/icons/close';
25
25
  import '../icon/icon.js';
26
26
  import 'util-deprecate';
27
27
  import '../icon/icon__constants.js';
28
- import '../_helpers/icon__svg.js';
28
+ import '../_helpers/icon.js';
29
+ import '../icon/icon__svg.js';
29
30
  import '../global/memoize.js';
30
31
  import '../loader-inline/loader-inline.js';
31
32
  import '../global/theme.js';
@@ -48,6 +49,7 @@ const DEFAULT_EXPIRES_TIMEOUT = 40 * 60;
48
49
  const DEFAULT_BACKGROUND_TIMEOUT = 10 * 1000;
49
50
  const DEFAULT_BACKEND_CHECK_TIMEOUT = 10 * 1000;
50
51
  const BACKGROUND_REDIRECT_TIMEOUT = 20 * 1000;
52
+ const DEFAULT_WAIT_FOR_REDIRECT_TIMEOUT = 5 * 1000;
51
53
  /* eslint-enable no-magic-numbers */
52
54
 
53
55
  const USER_CHANGED_EVENT = 'userChange';
@@ -79,6 +81,7 @@ const DEFAULT_CONFIG = {
79
81
  checkBackendIsUp: () => Promise.resolve(null),
80
82
  onBackendDown: () => {},
81
83
  defaultExpiresIn: DEFAULT_EXPIRES_TIMEOUT,
84
+ waitForRedirectTimeout: DEFAULT_WAIT_FOR_REDIRECT_TIMEOUT,
82
85
  translations: {
83
86
  login: 'Log in',
84
87
  loginTo: 'Log in to %serviceName%',
@@ -135,7 +138,9 @@ class Auth {
135
138
  }
136
139
 
137
140
  config.userFields = config.userFields || [];
138
- this.config = _objectSpread2(_objectSpread2({}, Auth.DEFAULT_CONFIG), config);
141
+ this.config = { ...Auth.DEFAULT_CONFIG,
142
+ ...config
143
+ };
139
144
  const {
140
145
  clientId,
141
146
  redirect,
@@ -269,7 +274,7 @@ class Auth {
269
274
 
270
275
 
271
276
  async init() {
272
- this._storage.onTokenChange(token => {
277
+ this._storage.onTokenChange(async token => {
273
278
  const isGuest = this.user ? this.user.guest : false;
274
279
 
275
280
  if (isGuest && !token) {
@@ -279,7 +284,16 @@ class Auth {
279
284
  if (!token) {
280
285
  this.logout();
281
286
  } else {
282
- this._detectUserChange(token.accessToken);
287
+ try {
288
+ await this._detectUserChange(token.accessToken);
289
+ } catch (error) {
290
+ if (this._canShowDialogs()) {
291
+ this._showAuthDialog({
292
+ nonInteractive: true,
293
+ error
294
+ });
295
+ }
296
+ }
283
297
  }
284
298
  });
285
299
 
@@ -360,8 +374,12 @@ class Auth {
360
374
  async sendRedirect(error) {
361
375
  const authRequest = await this._requestBuilder.prepareAuthRequest();
362
376
 
363
- this._redirectCurrentPage(authRequest.url);
377
+ this._redirectCurrentPage(authRequest.url); // HUB-10867 Since we already redirecting the page, there is no actual need to throw an error
378
+ // and scare user with flashing error
379
+ // But let's keep it just in case redirect was not successful
380
+
364
381
 
382
+ await new Promise(resolve => setTimeout(resolve, this.config.waitForRedirectTimeout));
365
383
  throw error;
366
384
  }
367
385
 
@@ -539,39 +557,35 @@ class Auth {
539
557
 
540
558
  async _detectUserChange(accessToken) {
541
559
  const windowWasOpen = this._isLoginWindowOpen;
560
+ const user = await this.getUser(accessToken);
542
561
 
543
- try {
544
- const user = await this.getUser(accessToken);
562
+ const onApply = () => {
563
+ this.user = user;
564
+ this.listeners.trigger(USER_CHANGED_EVENT, user);
565
+ };
545
566
 
546
- const onApply = () => {
547
- this.user = user;
548
- this.listeners.trigger(USER_CHANGED_EVENT, user);
549
- };
567
+ if (user && this.user && this.user.id !== user.id) {
568
+ if (!this._canShowDialogs() || this.user.guest || windowWasOpen) {
569
+ onApply();
570
+ return;
571
+ }
550
572
 
551
- if (user && this.user && this.user.id !== user.id) {
552
- if (!this._canShowDialogs() || this.user.guest || windowWasOpen) {
553
- onApply();
554
- return;
555
- }
573
+ if (user.guest) {
574
+ this._showAuthDialog({
575
+ nonInteractive: true
576
+ });
556
577
 
557
- if (user.guest) {
558
- this._showAuthDialog({
559
- nonInteractive: true
560
- });
578
+ return;
579
+ }
561
580
 
562
- return;
581
+ await this._showUserChangedDialog({
582
+ newUser: user,
583
+ onApply,
584
+ onPostpone: () => {
585
+ this.listeners.trigger(USER_CHANGE_POSTPONED_EVENT);
586
+ this.config.onPostponeChangedUser(this.user, user);
563
587
  }
564
-
565
- await this._showUserChangedDialog({
566
- newUser: user,
567
- onApply,
568
- onPostpone: () => {
569
- this.listeners.trigger(USER_CHANGE_POSTPONED_EVENT);
570
- this.config.onPostponeChangedUser(this.user, user);
571
- }
572
- });
573
- }
574
- } catch (e) {// noop
588
+ });
575
589
  }
576
590
  }
577
591
 
@@ -640,15 +654,15 @@ class Auth {
640
654
  }
641
655
  };
642
656
 
643
- const hide = this._authDialogService(_objectSpread2(_objectSpread2({}, this._service), {}, {
657
+ const hide = this._authDialogService({ ...this._service,
644
658
  loginCaption: translations.login,
645
659
  loginToCaption: translations.loginTo,
646
660
  confirmLabel: translations.login,
647
661
  cancelLabel: cancelable ? translations.cancel : translations.postpone,
648
- errorMessage: error && error.toString ? error.toString() : null,
662
+ errorMessage: this._extractErrorMessage(error, true),
649
663
  onConfirm,
650
664
  onCancel
651
- }));
665
+ });
652
666
 
653
667
  const stopTokenListening = this._storage.onTokenChange(token => {
654
668
  if (token) {
@@ -680,7 +694,7 @@ class Auth {
680
694
  hide();
681
695
  };
682
696
 
683
- const hide = this._authDialogService(_objectSpread2(_objectSpread2({}, this._service), {}, {
697
+ const hide = this._authDialogService({ ...this._service,
684
698
  title: translations.youHaveLoggedInAs.replace('%userName%', newUser.name),
685
699
  loginCaption: translations.login,
686
700
  loginToCaption: translations.loginTo,
@@ -694,7 +708,32 @@ class Auth {
694
708
  done();
695
709
  onPostpone();
696
710
  }
697
- }));
711
+ });
712
+ }
713
+
714
+ _extractErrorMessage(error) {
715
+ let logError = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
716
+
717
+ if (!error) {
718
+ return null;
719
+ }
720
+
721
+ if (logError) {
722
+ // eslint-disable-next-line no-console
723
+ console.error('RingUI Auth error', error);
724
+ }
725
+
726
+ try {
727
+ // We've got some error from this list
728
+ // https://www.jetbrains.com/help/youtrack/devportal/OAuth-2.0-Errors.html
729
+ if (error.code && typeof error.code.code === 'string') {
730
+ const readableCode = error.code.code.split('_').join(' ');
731
+ return `Authorization error: ${readableCode}`;
732
+ }
733
+ } catch {// noop
734
+ }
735
+
736
+ return error.toString ? error.toString() : null;
698
737
  }
699
738
 
700
739
  _showBackendDownDialog(backendError) {
@@ -760,11 +799,11 @@ class Auth {
760
799
 
761
800
 
762
801
  async logout(extraParams) {
763
- const requestParams = _objectSpread2({
802
+ const requestParams = {
764
803
  // eslint-disable-next-line camelcase
765
- request_credentials: 'required'
766
- }, extraParams);
767
-
804
+ request_credentials: 'required',
805
+ ...extraParams
806
+ };
768
807
  await this._checkBackendsStatusesIfEnabled();
769
808
  await this.listeners.trigger(LOGOUT_EVENT);
770
809
 
@@ -818,11 +857,11 @@ class Auth {
818
857
  }
819
858
 
820
859
  async switchUser() {
821
- if (this.config.embeddedLogin) {
822
- await this._runEmbeddedLogin();
860
+ if (!this.config.embeddedLogin) {
861
+ throw new Error('Auth: switchUser only supported for "embeddedLogin" mode');
823
862
  }
824
863
 
825
- throw new Error('Auth: switchUser only supported for "embeddedLogin" mode');
864
+ await this._runEmbeddedLogin();
826
865
  }
827
866
  /**
828
867
  * Check if the hash contains an access token.
@@ -983,5 +1022,4 @@ _defineProperty(Auth, "shouldRefreshToken", TokenValidator.shouldRefreshToken);
983
1022
 
984
1023
  _defineProperty(Auth, "storageIsUnavailable", !navigator.cookieEnabled);
985
1024
 
986
- export default Auth;
987
- export { DEFAULT_BACKGROUND_TIMEOUT, DEFAULT_EXPIRES_TIMEOUT, DOMAIN_USER_CHANGED_EVENT, LOGOUT_EVENT, LOGOUT_POSTPONED_EVENT, USER_CHANGED_EVENT, USER_CHANGE_POSTPONED_EVENT };
1025
+ export { DEFAULT_BACKGROUND_TIMEOUT, DEFAULT_EXPIRES_TIMEOUT, DOMAIN_USER_CHANGED_EVENT, LOGOUT_EVENT, LOGOUT_POSTPONED_EVENT, USER_CHANGED_EVENT, USER_CHANGE_POSTPONED_EVENT, Auth as default };
@@ -119,5 +119,4 @@ class BackgroundFlow {
119
119
 
120
120
  }
121
121
 
122
- export default BackgroundFlow;
123
- export { HUB_AUTH_PAGE_OPENED };
122
+ export { HUB_AUTH_PAGE_OPENED, BackgroundFlow as default };
@@ -16,7 +16,8 @@ import '@jetbrains/icons/close';
16
16
  import '../icon/icon.js';
17
17
  import 'util-deprecate';
18
18
  import '../icon/icon__constants.js';
19
- import '../_helpers/icon__svg.js';
19
+ import '../_helpers/icon.js';
20
+ import '../icon/icon__svg.js';
20
21
  import '../global/memoize.js';
21
22
  import '../loader-inline/loader-inline.js';
22
23
  import '../global/theme.js';
@@ -30,8 +31,10 @@ import '../global/radial-gradient-mask.js';
30
31
  import '../global/dom.js';
31
32
  import 'focus-visible';
32
33
  import '../link/clickableLink.js';
34
+ import '../_helpers/link.js';
35
+ import '../_helpers/group.js';
33
36
 
34
- var modules_c87dd562 = {"unit":"8px","title":"downNotification_title__dc35b944","error":"downNotification_error__dc35b944"};
37
+ var modules_c87dd562 = {"unit":"8px","title":"title_rui_dc35","error":"error_rui_dc35"};
35
38
 
36
39
  let key = null;
37
40
 
@@ -108,4 +111,4 @@ function onBackendDown(_ref2) {
108
111
  return () => alertService.remove(key);
109
112
  }
110
113
 
111
- export default onBackendDown;
114
+ export { onBackendDown as default };
@@ -32,7 +32,8 @@ import '@jetbrains/icons/chevron-10px';
32
32
  import '../icon/icon.js';
33
33
  import 'util-deprecate';
34
34
  import '../icon/icon__constants.js';
35
- import '../_helpers/icon__svg.js';
35
+ import '../_helpers/icon.js';
36
+ import '../icon/icon__svg.js';
36
37
  import '../global/memoize.js';
37
38
  import '../global/theme.js';
38
39
  import '../link/clickableLink.js';
@@ -43,9 +44,11 @@ import 'scrollbar-width';
43
44
  import '../loader-screen/loader-screen.js';
44
45
  import '../loader/loader.js';
45
46
  import '../loader/loader__core.js';
47
+ import '../_helpers/loader-screen.js';
46
48
  import './background-flow.js';
47
49
  import 'es6-error';
48
50
  import '../global/url.js';
51
+ import '../_helpers/link.js';
49
52
 
50
53
  class IFrameFlow {
51
54
  constructor(requestBuilder, storage, translations) {
@@ -144,4 +147,4 @@ class IFrameFlow {
144
147
 
145
148
  }
146
149
 
147
- export default IFrameFlow;
150
+ export { IFrameFlow as default };
@@ -2,4 +2,4 @@ import '!!file-loader?publicPath=../../&name=auth-landing.html!extricate-loader!
2
2
 
3
3
  var landingEntry = 'auth-landing.html';
4
4
 
5
- export default landingEntry;
5
+ export { landingEntry as default };
@@ -23,7 +23,8 @@ import '@jetbrains/icons/close';
23
23
  import '../icon/icon.js';
24
24
  import 'util-deprecate';
25
25
  import '../icon/icon__constants.js';
26
- import '../_helpers/icon__svg.js';
26
+ import '../_helpers/icon.js';
27
+ import '../icon/icon__svg.js';
27
28
  import '../global/memoize.js';
28
29
  import '../loader-inline/loader-inline.js';
29
30
  import '../global/theme.js';
@@ -39,7 +40,9 @@ import '../alert/container.js';
39
40
  import '../link/link.js';
40
41
  import 'focus-visible';
41
42
  import '../link/clickableLink.js';
43
+ import '../_helpers/link.js';
42
44
  import '../group/group.js';
45
+ import '../_helpers/group.js';
43
46
  import '../global/listeners.js';
44
47
  import '../global/promise-with-timeout.js';
45
48
  import '../storage/storage.js';
@@ -81,4 +84,4 @@ async function parseAndStoreResponse(clientId) {
81
84
  });
82
85
  }
83
86
 
84
- export default parseAndStoreResponse;
87
+ export { parseAndStoreResponse as default };
@@ -72,4 +72,4 @@ class AuthRequestBuilder {
72
72
 
73
73
  _defineProperty(AuthRequestBuilder, "_uuid", uuid.generate);
74
74
 
75
- export default AuthRequestBuilder;
75
+ export { AuthRequestBuilder as default };
@@ -114,4 +114,4 @@ _defineProperty(AuthResponseParser, "AuthError", class AuthError extends Extenda
114
114
 
115
115
  });
116
116
 
117
- export default AuthResponseParser;
117
+ export { AuthResponseParser as default };
@@ -15,7 +15,8 @@ import '@jetbrains/icons/close';
15
15
  import '../icon/icon.js';
16
16
  import 'util-deprecate';
17
17
  import '../icon/icon__constants.js';
18
- import '../_helpers/icon__svg.js';
18
+ import '../_helpers/icon.js';
19
+ import '../icon/icon__svg.js';
19
20
  import '../global/memoize.js';
20
21
  import '../loader-inline/loader-inline.js';
21
22
  import '../global/theme.js';
@@ -276,4 +277,4 @@ class AuthStorage {
276
277
 
277
278
  }
278
279
 
279
- export default AuthStorage;
280
+ export { AuthStorage as default };
@@ -173,4 +173,4 @@ _defineProperty(TokenValidator, "TokenValidationError", class TokenValidationErr
173
173
 
174
174
  });
175
175
 
176
- export default TokenValidator;
176
+ export { TokenValidator as default };
@@ -130,4 +130,4 @@ class WindowFlow {
130
130
 
131
131
  }
132
132
 
133
- export default WindowFlow;
133
+ export { WindowFlow as default };
@@ -30,7 +30,8 @@ import '@jetbrains/icons/chevron-10px';
30
30
  import '../icon/icon.js';
31
31
  import 'util-deprecate';
32
32
  import '../icon/icon__constants.js';
33
- import '../_helpers/icon__svg.js';
33
+ import '../_helpers/icon.js';
34
+ import '../icon/icon__svg.js';
34
35
  import '../global/memoize.js';
35
36
  import '../global/theme.js';
36
37
  import '../link/clickableLink.js';
@@ -38,7 +39,7 @@ import '../_helpers/button__classes.js';
38
39
  import 'element-resize-detector';
39
40
  import '../global/schedule-raf.js';
40
41
 
41
- var modules_ae521deb = {"unit":"8px","dialog":"authDialog_dialog__eba2bba5","content":"authDialog_content__eba2bba5 global_font__0f8f4370","button":"authDialog_button__eba2bba5","firstButton":"authDialog_firstButton__eba2bba5 authDialog_button__eba2bba5","title":"authDialog_title__eba2bba5","logo":"authDialog_logo__eba2bba5","error":"authDialog_error__eba2bba5"};
42
+ var modules_ae521deb = {"unit":"8px","dialog":"dialog_rui_eba2","content":"content_rui_eba2 font_rui_750f","button":"button_rui_eba2","firstButton":"firstButton_rui_eba2 button_rui_eba2","title":"title_rui_eba2","logo":"logo_rui_eba2","error":"error_rui_eba2"};
42
43
 
43
44
  /**
44
45
  * @name Auth Dialog
@@ -72,6 +73,7 @@ class AuthDialog extends Component {
72
73
  const defaultTitle = serviceName ? loginToCaption : loginCaption;
73
74
  const title = (this.props.title || defaultTitle).replace('%serviceName%', serviceName);
74
75
  return /*#__PURE__*/React.createElement(Dialog, {
76
+ label: title,
75
77
  "data-test": "ring-auth-dialog",
76
78
  className: className,
77
79
  contentClassName: classNames(className, modules_ae521deb.dialog),
@@ -129,4 +131,4 @@ _defineProperty(AuthDialog, "defaultProps", {
129
131
  onCancel: () => {}
130
132
  });
131
133
 
132
- export default AuthDialog;
134
+ export { AuthDialog as default };
@@ -1,7 +1,7 @@
1
- import { c as _objectSpread2 } from '../_helpers/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
2
  import { render } from 'react-dom';
4
3
  import AuthDialog from '../auth-dialog/auth-dialog.js';
4
+ import '../_helpers/_rollupPluginBabelHelpers.js';
5
5
  import 'prop-types';
6
6
  import 'classnames';
7
7
  import '../island/island.js';
@@ -29,7 +29,8 @@ import '@jetbrains/icons/chevron-10px';
29
29
  import '../icon/icon.js';
30
30
  import 'util-deprecate';
31
31
  import '../icon/icon__constants.js';
32
- import '../_helpers/icon__svg.js';
32
+ import '../_helpers/icon.js';
33
+ import '../icon/icon__svg.js';
33
34
  import '../global/memoize.js';
34
35
  import '../global/theme.js';
35
36
  import '../link/clickableLink.js';
@@ -54,9 +55,9 @@ function renderAuthDialog(props) {
54
55
 
55
56
  function showAuthDialog() {
56
57
  let props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
57
- renderAuthDialog(_objectSpread2(_objectSpread2({}, props), {}, {
58
+ renderAuthDialog({ ...props,
58
59
  show: true
59
- }));
60
+ });
60
61
  return () => {
61
62
  renderAuthDialog({
62
63
  show: false
@@ -64,4 +65,4 @@ function showAuthDialog() {
64
65
  };
65
66
  }
66
67
 
67
- export default showAuthDialog;
68
+ export { showAuthDialog as default };
@@ -0,0 +1,203 @@
1
+ import angular from 'angular';
2
+ import '../auth/auth.js';
3
+ import Auth from '../auth/auth__core.js';
4
+ import '../auth/window-flow.js';
5
+ import '../_helpers/_rollupPluginBabelHelpers.js';
6
+ import '../auth/response-parser.js';
7
+ import 'es6-error';
8
+ import '../global/url.js';
9
+ import '../auth/down-notification.js';
10
+ import 'react';
11
+ import 'prop-types';
12
+ import '../alert-service/alert-service.js';
13
+ import 'react-dom';
14
+ import '../global/get-uid.js';
15
+ import '../alert/alert.js';
16
+ import 'classnames';
17
+ import '@jetbrains/icons/exception';
18
+ import '@jetbrains/icons/checkmark';
19
+ import '@jetbrains/icons/warning';
20
+ import '@jetbrains/icons/close';
21
+ import '../icon/icon.js';
22
+ import 'util-deprecate';
23
+ import '../icon/icon__constants.js';
24
+ import '../_helpers/icon.js';
25
+ import '../icon/icon__svg.js';
26
+ import '../global/memoize.js';
27
+ import '../loader-inline/loader-inline.js';
28
+ import '../global/theme.js';
29
+ import '../global/data-tests.js';
30
+ import '../_helpers/inject-styles.js';
31
+ import '../global/conic-gradient.js';
32
+ import 'conic-gradient';
33
+ import '../global/supports-css.js';
34
+ import '../global/inject-styles.js';
35
+ import '../global/radial-gradient-mask.js';
36
+ import '../global/dom.js';
37
+ import '../alert/container.js';
38
+ import '../link/link.js';
39
+ import 'focus-visible';
40
+ import '../link/clickableLink.js';
41
+ import '../_helpers/link.js';
42
+ import '../group/group.js';
43
+ import '../_helpers/group.js';
44
+ import '../global/listeners.js';
45
+ import '../http/http.js';
46
+ import '../global/promise-with-timeout.js';
47
+ import '../auth/storage.js';
48
+ import '../storage/storage.js';
49
+ import '../storage/storage__local.js';
50
+ import '../storage/storage__fallback.js';
51
+ import 'deep-equal';
52
+ import '../auth/request-builder.js';
53
+ import 'simply-uuid';
54
+ import '../auth/background-flow.js';
55
+ import '../auth/token-validator.js';
56
+
57
+ /**
58
+ * @name Auth Ng
59
+ */
60
+
61
+ const angularModule = angular.module('Ring.auth', []);
62
+ angularModule.provider('auth', ["$httpProvider", function provider($httpProvider) {
63
+ /**
64
+ * @type Auth
65
+ */
66
+ let auth;
67
+ /**
68
+ * @type {{cleanHash: boolean}} config
69
+ */
70
+
71
+ const defaultConfig = {
72
+ cleanHash: false //prevents infinite redirect on angular>1.2.26
73
+
74
+ };
75
+
76
+ this.init = authInstance => {
77
+ auth = authInstance;
78
+ };
79
+ /**
80
+ * @param {{
81
+ * serverUri: string,
82
+ * redirectUri: string?,
83
+ * clientId: string?,
84
+ * scope: string[]?,
85
+ * cleanHash: boolean?
86
+ * }} config
87
+ */
88
+
89
+
90
+ this.config = config => {
91
+ const configCopy = angular.extend({}, defaultConfig, config);
92
+ auth = new Auth(configCopy);
93
+ };
94
+
95
+ $httpProvider.interceptors.push(['$q', '$injector', 'auth', ($q, $injector, authInstance) => {
96
+ function urlEndsWith(config, suffix) {
97
+ return config && config.url && config.url.indexOf(suffix) === config.url.length - suffix.length;
98
+ }
99
+
100
+ return {
101
+ request(config) {
102
+ if (!authInstance || urlEndsWith(config, '.html') || config && config.noAuthorization) {
103
+ // Don't intercept angular template requests
104
+ return config;
105
+ }
106
+
107
+ return authInstance.promise.then(() => authInstance.auth.requestToken()).then(accessToken => {
108
+ if (accessToken) {
109
+ config.headers.Authorization = `Bearer ${accessToken}`;
110
+ }
111
+
112
+ return config;
113
+ });
114
+ },
115
+
116
+ responseError(rejection) {
117
+ if (authInstance && !urlEndsWith(rejection.config, '.html') && rejection.data != null && Auth.shouldRefreshToken(rejection.data.error)) {
118
+ // Use $injector to avoid circular dependency
119
+ const $http = $injector.get('$http');
120
+ const {
121
+ data,
122
+ method,
123
+ params,
124
+ url
125
+ } = rejection.config;
126
+ return authInstance.auth.forceTokenUpdate().then(() => $http({
127
+ data,
128
+ method,
129
+ params,
130
+ url
131
+ }));
132
+ }
133
+
134
+ return $q.reject(rejection);
135
+ }
136
+
137
+ };
138
+ }]);
139
+ this.$get = ["$injector", "$log", "$sniffer", function get($injector, $log, $sniffer) {
140
+ // Do not try to init anything without config
141
+ if (!auth) {
142
+ $log.warn('Auth wasn\'t initialized');
143
+ return null;
144
+ }
145
+
146
+ if (auth.config.reloadOnUserChange === false) {
147
+ auth.addListener('userChange', () => {
148
+ const $route = $injector.get('$route');
149
+ $route.reload();
150
+ });
151
+ }
152
+ /**
153
+ * @type {Promise.<string>}
154
+ */
155
+
156
+
157
+ const authInitPromise = auth.init();
158
+ /**
159
+ * @param {string?} restoreLocationURL
160
+ */
161
+
162
+ function restoreLocation(restoreLocationURL) {
163
+ if (restoreLocationURL) {
164
+ const bases = document.getElementsByTagName('base');
165
+ let baseURI = auth.config.redirectUri;
166
+
167
+ if (bases.length > 0) {
168
+ baseURI = bases[0].href;
169
+ }
170
+
171
+ if (restoreLocationURL.indexOf(baseURI) === 0) {
172
+ const $location = $injector.get('$location');
173
+ let relativeURI = restoreLocationURL.substr(baseURI.length); // We have to turn url with hash to simple relative url in HashbangInHtml5 mode
174
+ // And there is no other and documented way to detect that mode
175
+ // @see http://stackoverflow.com/a/16678065
176
+
177
+ if ($location.$$html5 && !$sniffer.history) {
178
+ // eslint-disable-line angular/no-private-call
179
+ relativeURI = relativeURI.replace(/^#\//, '');
180
+ }
181
+
182
+ $location.url(relativeURI).replace();
183
+ }
184
+ }
185
+ }
186
+
187
+ authInitPromise.then(restoreLocation, e => {
188
+ if (!e.authRedirect) {
189
+ $log.error(e);
190
+ }
191
+ });
192
+ return {
193
+ auth,
194
+ requestUser: auth.requestUser.bind(auth),
195
+ clientId: auth.config.clientId,
196
+ logout: auth.logout.bind(auth),
197
+ promise: authInitPromise
198
+ };
199
+ }];
200
+ }]);
201
+ var authNg = angularModule.name;
202
+
203
+ export { authNg as default };