@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.
- package/CHANGELOG.md +13 -0
- package/README.md +17 -15
- package/babel.config.js +3 -2
- package/components/alert/alert.js +9 -3
- package/components/alert/alert.test.js +21 -48
- package/components/alert/container.css +1 -1
- package/components/alert/container.test.js +3 -13
- package/components/alert-service/alert-service.examples.css +18 -0
- package/components/alert-service/alert-service.examples.js +21 -0
- package/components/alert-service/alert-service.js +10 -3
- package/components/analytics/analytics__fus-plugin.js +3 -3
- package/components/analytics/analytics__ga-plugin.js +2 -2
- package/components/auth/auth.test.js +14 -7
- package/components/auth/auth__core.js +64 -33
- package/components/auth-dialog/auth-dialog.css +2 -3
- package/components/auth-dialog/auth-dialog.js +4 -1
- package/components/auth-dialog/auth-dialog.test.js +3 -19
- package/components/avatar/avatar.css +4 -1
- package/components/avatar/avatar.examples.js +3 -2
- package/components/avatar/avatar.js +34 -6
- package/components/avatar/avatar.test.js +20 -17
- package/components/avatar/fallback-avatar.js +136 -0
- package/components/avatar-editor-ng/avatar-editor-ng.css +2 -2
- package/components/avatar-editor-ng/avatar-editor-ng.js +2 -1
- package/components/avatar-editor-ng/{avatar-editor-ng.html → avatar-editor-ng__template.js} +2 -2
- package/components/badge/badge.test.js +13 -20
- package/components/button/button.css +2 -2
- package/components/button/button.js +4 -1
- package/components/button/button.test.js +32 -33
- package/components/button-group/button-group.js +1 -1
- package/components/button-group/caption.js +1 -1
- package/components/button-ng/button-ng.js +1 -1
- package/components/button-set-ng/button-set-ng.js +3 -1
- package/components/checkbox/checkbox.css +1 -1
- package/components/code/code.js +2 -5
- package/components/confirm/confirm.js +1 -0
- package/components/confirm-service/confirm-service.js +5 -5
- package/components/content-layout/content-layout.css +1 -1
- package/components/data-list/data-list.css +1 -1
- package/components/date-picker/date-input.js +5 -4
- package/components/date-picker/date-picker.css +34 -22
- package/components/date-picker/date-picker.js +16 -14
- package/components/date-picker/date-popup.js +22 -7
- package/components/date-picker/month-names.js +8 -5
- package/components/date-picker/month.js +6 -2
- package/components/date-picker/weekdays.js +10 -2
- package/components/dialog/dialog.examples.js +3 -1
- package/components/dialog/dialog.js +10 -5
- package/components/dialog/dialog.test.js +1 -1
- package/components/dialog/dialog__body-scroll-preventer.js +51 -31
- package/components/dialog-ng/dialog-ng.js +10 -10
- package/components/dialog-ng/{dialog-ng.html → dialog-ng__template.js} +2 -2
- package/components/dropdown/dropdown.examples.js +36 -1
- package/components/dropdown/dropdown.test.js +2 -2
- package/components/dropdown-menu/dropdown-menu.examples.js +47 -0
- package/components/dropdown-menu/dropdown-menu.js +117 -0
- package/components/dropdown-menu/dropdown-menu.test.js +76 -0
- package/components/error-bubble/error-bubble-legacy.css +1 -1
- package/components/error-bubble/error-bubble.css +1 -1
- package/components/error-bubble/error-bubble.examples.js +1 -1
- package/components/error-page/error-page.css +2 -2
- package/components/footer-ng/footer-ng.js +13 -3
- package/components/form/form.css +2 -2
- package/components/form-ng/form-ng.js +3 -1
- package/components/global/global.css +1 -1
- package/components/global/theme.js +1 -1
- package/components/global/variables.css +8 -1
- package/components/grid/grid.css +10 -9
- package/components/header/header.css +1 -1
- package/components/header/header.examples.js +7 -8
- package/components/header/profile.js +10 -11
- package/components/http/http.js +1 -1
- package/components/icon/icon.css +5 -4
- package/components/input/input-legacy.css +7 -7
- package/components/island/header.js +2 -2
- package/components/island/island.css +8 -3
- package/components/island-legacy/island-legacy.css +3 -1
- package/components/list/list.js +6 -1
- package/components/list/list__custom.js +9 -3
- package/components/list/list__item.js +8 -2
- package/components/list/list__link.js +2 -1
- package/components/loader-inline/loader-inline.css +1 -1
- package/components/loader-screen/loader-screen.css +1 -1
- package/components/message/message.css +1 -1
- package/components/message/message.examples.js +8 -7
- package/components/pager/pager.js +5 -3
- package/components/permissions/permissions.js +1 -1
- package/components/popup/popup.js +1 -1
- package/components/popup/popup.test.js +15 -13
- package/components/progress-bar/progress-bar.css +1 -1
- package/components/progress-bar/progress-bar.examples.js +3 -3
- package/components/progress-bar/progress-bar.js +5 -2
- package/components/progress-bar/progress-bar.test.js +12 -13
- package/components/progress-bar-ng/progress-bar-ng.examples.js +3 -3
- package/components/query-assist/query-assist.css +13 -3
- package/components/query-assist/query-assist.examples.js +3 -4
- package/components/query-assist/query-assist.js +56 -12
- package/components/query-assist/query-assist.test.js +37 -5
- package/components/save-field-ng/save-field-ng.css +0 -3
- package/components/save-field-ng/save-field-ng.js +3 -1
- package/components/save-field-ng/{save-field-ng.html → save-field-ng__template.js} +2 -2
- package/components/select/select.css +12 -7
- package/components/select/select.examples.js +13 -0
- package/components/select/select.js +30 -43
- package/components/select/select.test.js +4 -5
- package/components/select/select__popup.js +1 -0
- package/components/shortcuts-hint-ng/shortcuts-hint-ng.css +1 -1
- package/components/shortcuts-hint-ng/shortcuts-hint-ng.js +1 -1
- package/components/shortcuts-hint-ng/{shortcuts-hint-ng.html → shortcuts-hint-ng__template.js} +2 -2
- package/components/sidebar/sidebar.css +1 -0
- package/components/sidebar-ng/sidebar-ng.js +6 -2
- package/components/sidebar-ng/{sidebar-ng__button.html → sidebar-ng__button-template.js} +2 -2
- package/components/sidebar-ng/{sidebar-ng.html → sidebar-ng__template.js} +2 -2
- package/components/table/header.js +9 -1
- package/components/table/row.js +2 -1
- package/components/table/table.css +2 -1
- package/components/table-legacy/table-legacy.css +2 -2
- package/components/table-legacy/table-legacy__toolbar.css +2 -2
- package/components/table-legacy-ng/table-legacy-ng.js +38 -5
- package/components/table-legacy-ng/table-legacy-ng__pager.js +7 -1
- package/components/tabs/collapsible-tab.js +2 -2
- package/components/tabs/collapsible-tabs.js +5 -9
- package/components/tabs/tab-link.js +4 -2
- package/components/tabs/tabs.css +32 -5
- package/components/tabs-ng/tabs-ng.js +4 -2
- package/components/tabs-ng/{tabs-ng.html → tabs-ng__template.js} +6 -2
- package/components/tag/tag.css +5 -2
- package/components/tag/tag.examples.js +3 -0
- package/components/tag/tag.js +19 -16
- package/components/tags-input/tag-input.examples.js +1 -1
- package/components/tags-input/tags-input.js +5 -2
- package/components/template-ng/template-ng.js +1 -1
- package/components/tooltip/tooltip.js +7 -2
- package/components/user-agreement/user-agreement.css +1 -5
- package/components/user-agreement/user-agreement.examples.js +7 -6
- package/components/user-agreement/user-agreement.js +11 -3
- package/dist/_helpers/_rollupPluginBabelHelpers.js +1 -90
- package/dist/_helpers/anchor.js +6 -7
- package/dist/_helpers/badge.js +1 -1
- package/dist/_helpers/button-group.js +3 -0
- package/dist/_helpers/button-set.js +3 -0
- package/dist/_helpers/button-toolbar.js +3 -0
- package/dist/_helpers/button__classes.js +16 -15
- package/dist/_helpers/card.js +6 -8
- package/dist/_helpers/checkbox.js +3 -0
- package/dist/_helpers/date-picker.js +1 -1
- package/dist/_helpers/dialog__body-scroll-preventer.js +49 -32
- package/dist/_helpers/error-message.js +3 -0
- package/dist/_helpers/footer.js +121 -0
- package/dist/_helpers/grid.js +1 -1
- package/dist/_helpers/group.js +3 -0
- package/dist/_helpers/header.js +1 -1
- package/dist/_helpers/icon.js +3 -0
- package/dist/_helpers/inject-styles.js +1 -1
- package/dist/_helpers/input.js +3 -0
- package/dist/_helpers/island.js +1 -1
- package/dist/_helpers/link.js +3 -0
- package/dist/_helpers/list.js +1 -1
- package/dist/_helpers/loader-screen.js +3 -0
- package/dist/_helpers/panel.js +3 -0
- package/dist/_helpers/query-assist__suggestions.js +1 -1
- package/dist/_helpers/radio.js +3 -0
- package/dist/_helpers/select__filter.js +8 -10
- package/dist/_helpers/services-link.js +6 -8
- package/dist/_helpers/sidebar.js +17 -17
- package/dist/_helpers/table.js +1 -1
- package/dist/_helpers/tabs.js +1 -1
- package/dist/_helpers/title.js +3 -3
- package/dist/alert/alert.js +20 -9
- package/dist/alert/container.js +7 -9
- package/dist/alert-service/alert-service.js +26 -13
- package/dist/analytics/analytics.js +2 -2
- package/dist/analytics/analytics__custom-plugin.js +1 -1
- package/dist/analytics/analytics__fus-plugin.js +13 -11
- package/dist/analytics/analytics__ga-plugin.js +3 -3
- package/dist/analytics/analytics__plugin-utils.js +1 -1
- package/dist/analytics-ng/analytics-ng.js +94 -0
- package/dist/auth/auth.js +7 -4
- package/dist/auth/auth__core.js +106 -63
- package/dist/auth/background-flow.js +1 -2
- package/dist/auth/down-notification.js +19 -12
- package/dist/auth/iframe-flow.js +5 -2
- package/dist/auth/landing-entry.js +1 -1
- package/dist/auth/landing.js +5 -2
- package/dist/auth/request-builder.js +1 -1
- package/dist/auth/response-parser.js +3 -2
- package/dist/auth/storage.js +5 -3
- package/dist/auth/token-validator.js +6 -5
- package/dist/auth/window-flow.js +1 -1
- package/dist/auth-dialog/auth-dialog.js +9 -6
- package/dist/auth-dialog-service/auth-dialog-service.js +9 -6
- package/dist/auth-ng/auth-ng.js +203 -0
- package/dist/auth-ng/auth-ng.mock.js +33 -0
- package/dist/autofocus-ng/autofocus-ng.js +50 -0
- package/dist/avatar/avatar.js +41 -32
- package/dist/avatar/fallback-avatar.js +141 -0
- package/dist/avatar-editor-ng/avatar-editor-ng.js +164 -0
- package/dist/avatar-editor-ng/avatar-editor-ng__template.js +30 -0
- package/dist/avatar-ng/avatar-ng.js +18 -0
- package/dist/badge/badge.js +6 -8
- package/dist/badge-ng/badge-ng.js +16 -0
- package/dist/breadcrumb-ng/breadcrumb-ng.js +61 -0
- package/dist/button/button.js +16 -10
- package/dist/button-group/button-group.js +4 -4
- package/dist/button-group/caption.js +24 -5
- package/dist/button-group-ng/button-group-ng.js +38 -0
- package/dist/button-ng/button-ng.js +223 -0
- package/dist/button-set/button-set.js +3 -4
- package/dist/button-set-ng/button-set-ng.js +19 -0
- package/dist/button-toolbar/button-toolbar.js +3 -4
- package/dist/button-toolbar-ng/button-toolbar-ng.js +23 -0
- package/dist/caret/caret.js +4 -2
- package/dist/checkbox/checkbox.js +11 -13
- package/dist/checkbox-ng/checkbox-ng.js +55 -0
- package/dist/code/code.js +136 -0
- package/dist/compiler-ng/compiler-ng.js +53 -0
- package/dist/confirm/confirm.js +8 -5
- package/dist/confirm-ng/confirm-ng.js +66 -0
- package/dist/confirm-service/confirm-service.js +21 -18
- package/dist/content-layout/content-layout.js +8 -10
- package/dist/contenteditable/contenteditable.js +14 -17
- package/dist/data-list/data-list.js +12 -9
- package/dist/data-list/data-list.mock.js +2 -2
- package/dist/data-list/item.js +7 -5
- package/dist/data-list/selection.js +7 -3
- package/dist/data-list/title.js +3 -1
- package/dist/data-list-ng/data-list-ng.js +59 -0
- package/dist/date-picker/consts.js +1 -2
- package/dist/date-picker/date-input.js +17 -12
- package/dist/date-picker/date-picker.js +41 -32
- package/dist/date-picker/date-popup.js +51 -28
- package/dist/date-picker/day.js +4 -4
- package/dist/date-picker/formats.js +1 -1
- package/dist/date-picker/month-names.js +18 -11
- package/dist/date-picker/month-slider.js +4 -4
- package/dist/date-picker/month.js +13 -7
- package/dist/date-picker/months.js +3 -3
- package/dist/date-picker/weekdays.js +12 -4
- package/dist/date-picker/years.js +4 -4
- package/dist/dialog/dialog.js +21 -16
- package/dist/dialog/dialog__body-scroll-preventer.js +1 -1
- package/dist/dialog-ng/dialog-ng.js +601 -0
- package/dist/dialog-ng/dialog-ng__template.js +71 -0
- package/dist/docked-panel-ng/docked-panel-ng.js +170 -0
- package/dist/dropdown/anchor.js +2 -1
- package/dist/dropdown/dropdown.js +22 -18
- package/dist/dropdown-menu/dropdown-menu.js +175 -0
- package/dist/error-bubble/error-bubble.js +7 -9
- package/dist/error-message/error-message.js +4 -4
- package/dist/error-message-ng/error-message-ng.js +53 -0
- package/dist/footer/footer.js +6 -119
- package/dist/footer-ng/footer-ng.js +75 -0
- package/dist/form-ng/form-ng.js +169 -0
- package/dist/global/angular-component-factory.js +6 -4
- package/dist/global/compose.js +8 -2
- package/dist/global/composeRefs.js +13 -7
- package/dist/global/conic-gradient.js +13 -12
- package/dist/global/create-stateful-context.js +12 -9
- package/dist/global/data-tests.js +10 -3
- package/dist/global/dom.js +12 -5
- package/dist/global/focus-sensor-hoc.js +20 -19
- package/dist/global/fuzzy-highlight.js +10 -6
- package/dist/global/get-event-key.js +1 -1
- package/dist/global/get-uid.js +1 -1
- package/dist/global/inject-styles.js +4 -1
- package/dist/global/linear-function.js +1 -2
- package/dist/global/listeners.js +1 -1
- package/dist/global/memoize.js +3 -2
- package/dist/global/normalize-indent.js +1 -1
- package/dist/global/promise-with-timeout.js +5 -4
- package/dist/global/radial-gradient-mask.js +6 -3
- package/dist/global/react-dom-renderer.js +3 -3
- package/dist/global/rerender-hoc.js +14 -12
- package/dist/global/ring-angular-component.js +6 -2
- package/dist/global/schedule-raf.js +1 -1
- package/dist/global/sniffer.js +1 -1
- package/dist/global/supports-css.js +1 -1
- package/dist/global/theme.js +27 -26
- package/dist/global/trivial-template-tag.js +6 -2
- package/dist/global/url.js +3 -1
- package/dist/global/variables_dark.js +1 -1
- package/dist/grid/col.js +6 -8
- package/dist/grid/grid.js +5 -7
- package/dist/grid/row.js +6 -8
- package/dist/group/group.js +7 -10
- package/dist/group-ng/group-ng.js +11 -0
- package/dist/header/header.js +29 -26
- package/dist/header/logo.js +8 -9
- package/dist/header/profile.js +54 -46
- package/dist/header/services-link.js +1 -0
- package/dist/header/services.js +23 -19
- package/dist/header/smart-profile.js +29 -26
- package/dist/header/smart-services.js +12 -11
- package/dist/header/tray-icon.js +12 -12
- package/dist/header/tray.js +6 -8
- package/dist/heading/heading.js +10 -13
- package/dist/http/http.js +53 -44
- package/dist/http/http.mock.js +4 -4
- package/dist/hub-source/hub-source.js +1 -1
- package/dist/hub-source/hub-source__user.js +4 -2
- package/dist/hub-source/hub-source__users-groups.js +5 -3
- package/dist/icon/icon.js +8 -8
- package/dist/icon/icon__svg.js +81 -6
- package/dist/icon/index.js +2 -1
- package/dist/icon-ng/icon-ng.js +89 -0
- package/dist/input/input.js +11 -14
- package/dist/input-ng/input-ng.js +166 -0
- package/dist/island/adaptive-island-hoc.js +10 -9
- package/dist/island/content.js +8 -10
- package/dist/island/header.js +7 -9
- package/dist/island/island.js +6 -9
- package/dist/island-legacy/content-legacy.js +6 -8
- package/dist/island-legacy/header-legacy.js +6 -8
- package/dist/island-legacy/island-legacy.js +6 -8
- package/dist/island-ng/island-content-ng.js +56 -0
- package/dist/island-ng/island-header-ng.js +32 -0
- package/dist/island-ng/island-ng-class-fixer.js +9 -0
- package/dist/island-ng/island-ng.js +31 -0
- package/dist/link/clickableLink.js +8 -10
- package/dist/link/link.js +12 -15
- package/dist/link-ng/link-ng.js +25 -0
- package/dist/list/list.js +100 -76
- package/dist/list/list__custom.js +15 -12
- package/dist/list/list__hint.js +1 -1
- package/dist/list/list__item.js +22 -15
- package/dist/list/list__link.js +11 -12
- package/dist/list/list__separator.js +1 -1
- package/dist/list/list__title.js +1 -1
- package/dist/list/list__users-groups-source.js +13 -8
- package/dist/loader/loader.js +8 -10
- package/dist/loader/loader__core.js +9 -8
- package/dist/loader-inline/inject-styles.js +1 -1
- package/dist/loader-inline/loader-inline.js +6 -8
- package/dist/loader-inline-ng/loader-inline-ng.js +42 -0
- package/dist/loader-ng/loader-ng.js +43 -0
- package/dist/loader-screen/loader-screen.js +7 -10
- package/dist/loader-screen-ng/loader-screen-ng.js +99 -0
- package/dist/login-dialog/login-dialog.js +7 -5
- package/dist/login-dialog/service.js +9 -6
- package/dist/markdown/code.js +30 -0
- package/dist/markdown/heading.js +23 -0
- package/dist/markdown/link.js +30 -0
- package/dist/markdown/markdown.js +73 -0
- package/dist/message/message.js +7 -6
- package/dist/message-bundle-ng/message-bundle-ng.js +111 -0
- package/dist/old-browsers-message/old-browsers-message.js +0 -1
- package/dist/old-browsers-message/old-browsers-message__stop.js +0 -1
- package/dist/old-browsers-message/white-list.js +4 -5
- package/dist/pager/pager.js +20 -11
- package/dist/pager-ng/pager-ng.js +96 -0
- package/dist/panel/panel.js +7 -10
- package/dist/panel-ng/panel-ng.js +16 -0
- package/dist/permissions/permissions.js +4 -2
- package/dist/permissions/permissions__cache.js +1 -1
- package/dist/permissions-ng/permissions-ng.js +274 -0
- package/dist/place-under-ng/place-under-ng.js +157 -0
- package/dist/popup/popup.js +11 -11
- package/dist/popup/popup.target.js +4 -5
- package/dist/popup/position.js +18 -16
- package/dist/popup-menu/popup-menu.js +23 -16
- package/dist/progress-bar/progress-bar.js +14 -12
- package/dist/progress-bar-ng/progress-bar-ng.js +15 -0
- package/dist/promised-click-ng/promised-click-ng.js +126 -0
- package/dist/proxy-attrs/proxy-attrs.js +1 -1
- package/dist/query-assist/query-assist.js +156 -76
- package/dist/query-assist/query-assist__suggestions.js +5 -1
- package/dist/query-assist-ng/query-assist-ng.js +82 -0
- package/dist/radio/radio.js +9 -7
- package/dist/radio/radio__item.js +13 -18
- package/dist/radio-ng/radio-ng.js +63 -0
- package/dist/save-field-ng/save-field-ng.js +335 -0
- package/dist/save-field-ng/save-field-ng__template.js +34 -0
- package/dist/select/select.js +118 -95
- package/dist/select/select__filter.js +6 -1
- package/dist/select/select__popup.js +12 -6
- package/dist/select-ng/select-ng.js +621 -0
- package/dist/select-ng/select-ng__lazy.js +150 -0
- package/dist/select-ng/select-ng__options.js +145 -0
- package/dist/shortcuts/core.js +7 -4
- package/dist/shortcuts/shortcuts-hoc.js +8 -10
- package/dist/shortcuts/shortcuts.js +6 -6
- package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +120 -0
- package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +50 -0
- package/dist/shortcuts-ng/shortcuts-ng.js +261 -0
- package/dist/sidebar-ng/sidebar-ng.js +111 -0
- package/dist/sidebar-ng/sidebar-ng__button-template.js +20 -0
- package/dist/sidebar-ng/sidebar-ng__template.js +12 -0
- package/dist/storage/storage.js +3 -2
- package/dist/storage/storage__fallback.js +3 -2
- package/dist/storage/storage__local.js +5 -3
- package/dist/style.css +1 -1
- package/dist/tab-trap/tab-trap.js +15 -13
- package/dist/table/cell.js +2 -2
- package/dist/table/disable-hover-hoc.js +4 -4
- package/dist/table/header-cell.js +10 -11
- package/dist/table/header.js +19 -12
- package/dist/table/multitable.js +33 -25
- package/dist/table/row-with-focus-sensor.js +7 -5
- package/dist/table/row.js +17 -15
- package/dist/table/selection-adapter.js +1 -1
- package/dist/table/selection-shortcuts-hoc.js +10 -8
- package/dist/table/selection.js +25 -17
- package/dist/table/smart-table.js +16 -10
- package/dist/table/table.js +38 -33
- package/dist/table-legacy-ng/table-legacy-ng.js +501 -0
- package/dist/table-legacy-ng/table-legacy-ng__pager.js +122 -0
- package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +123 -0
- package/dist/table-legacy-ng/table-legacy-ng__selection.js +179 -0
- package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +56 -0
- package/dist/table-ng/smart-table-ng.js +65 -0
- package/dist/table-ng/table-ng.js +64 -0
- package/dist/tabs/collapsible-more.js +37 -30
- package/dist/tabs/collapsible-tab.js +16 -14
- package/dist/tabs/collapsible-tabs.js +83 -80
- package/dist/tabs/custom-item.js +6 -3
- package/dist/tabs/dumb-tabs.js +19 -14
- package/dist/tabs/smart-tabs.js +13 -11
- package/dist/tabs/tab-link.js +13 -7
- package/dist/tabs/tab.js +1 -1
- package/dist/tabs/tabs.js +5 -1
- package/dist/tabs-ng/tabs-ng.js +193 -0
- package/dist/tabs-ng/tabs-ng__template.js +40 -0
- package/dist/tag/tag.js +22 -16
- package/dist/tags-input/tags-input.js +48 -36
- package/dist/tags-input-ng/tags-input-ng.js +89 -0
- package/dist/tags-list/tags-list.js +8 -9
- package/dist/template-ng/template-ng.js +70 -0
- package/dist/text/text.js +7 -9
- package/dist/theme-ng/theme-ng.js +44 -0
- package/dist/title-ng/title-ng.js +114 -0
- package/dist/toggle/toggle.js +8 -11
- package/dist/toggle-ng/toggle-ng.js +16 -0
- package/dist/tooltip/tooltip.js +16 -14
- package/dist/tooltip-ng/tooltip-ng.js +98 -0
- package/dist/user-agreement/service.js +409 -0
- package/dist/user-agreement/toolbox.eula.js +162 -0
- package/dist/user-agreement/user-agreement.js +167 -0
- package/dist/user-card/card.js +3 -0
- package/dist/user-card/smart-user-card-tooltip.js +16 -16
- package/dist/user-card/tooltip.js +9 -7
- package/dist/user-card/user-card.js +5 -2
- package/dist/user-card-ng/user-card-ng.js +59 -0
- package/package.json +83 -81
- package/webpack.config.js +14 -10
- package/components/button-set-ng/button-set-ng.html +0 -1
- package/components/footer-ng/footer-ng.html +0 -13
- package/components/form-ng/form-ng__error-bubble.html +0 -3
- package/components/table-legacy-ng/table-legacy-ng.html +0 -4
- package/components/table-legacy-ng/table-legacy-ng__column.html +0 -12
- package/components/table-legacy-ng/table-legacy-ng__header.html +0 -4
- package/components/table-legacy-ng/table-legacy-ng__pager.html +0 -7
- package/components/table-legacy-ng/table-legacy-ng__row.html +0 -12
- package/components/table-legacy-ng/table-legacy-ng__title.html +0 -9
- package/dist/_helpers/caption.js +0 -25
- package/dist/_helpers/icon__svg.js +0 -83
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as _defineProperty, a as
|
|
1
|
+
import { _ as _defineProperty, a as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { render } from 'react-dom';
|
|
4
4
|
import getUID from '../global/get-uid.js';
|
|
@@ -13,7 +13,8 @@ import '@jetbrains/icons/close';
|
|
|
13
13
|
import '../icon/icon.js';
|
|
14
14
|
import 'util-deprecate';
|
|
15
15
|
import '../icon/icon__constants.js';
|
|
16
|
-
import '../_helpers/
|
|
16
|
+
import '../_helpers/icon.js';
|
|
17
|
+
import '../icon/icon__svg.js';
|
|
17
18
|
import '../global/memoize.js';
|
|
18
19
|
import '../loader-inline/loader-inline.js';
|
|
19
20
|
import '../global/theme.js';
|
|
@@ -51,10 +52,9 @@ class AlertService {
|
|
|
51
52
|
return /*#__PURE__*/React.createElement(Alerts, null, alerts.map(alert => {
|
|
52
53
|
const {
|
|
53
54
|
message,
|
|
54
|
-
key
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
key,
|
|
56
|
+
...rest
|
|
57
|
+
} = alert;
|
|
58
58
|
return /*#__PURE__*/React.createElement(Alert, _extends({
|
|
59
59
|
key: key
|
|
60
60
|
}, rest), message);
|
|
@@ -101,7 +101,14 @@ class AlertService {
|
|
|
101
101
|
}, ANIMATION_TIME);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
addAlert(message, type
|
|
104
|
+
addAlert(message, type) {
|
|
105
|
+
let timeout = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.defaultTimeout;
|
|
106
|
+
let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
107
|
+
const {
|
|
108
|
+
onCloseRequest,
|
|
109
|
+
onClose,
|
|
110
|
+
...restOptions
|
|
111
|
+
} = options;
|
|
105
112
|
const sameAlert = this.findSameAlert(message, type);
|
|
106
113
|
|
|
107
114
|
if (sameAlert) {
|
|
@@ -111,16 +118,22 @@ class AlertService {
|
|
|
111
118
|
return sameAlert.key;
|
|
112
119
|
}
|
|
113
120
|
|
|
114
|
-
const alert =
|
|
121
|
+
const alert = {
|
|
115
122
|
key: getUID('alert-service-'),
|
|
116
123
|
message,
|
|
117
124
|
type,
|
|
118
125
|
timeout,
|
|
119
126
|
isClosing: false,
|
|
120
|
-
onCloseRequest: () =>
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
127
|
+
onCloseRequest: () => {
|
|
128
|
+
onCloseRequest && onCloseRequest();
|
|
129
|
+
this.startAlertClosing(alert);
|
|
130
|
+
},
|
|
131
|
+
onClose: () => {
|
|
132
|
+
onClose && onClose();
|
|
133
|
+
this.removeWithoutAnimation(alert.key);
|
|
134
|
+
},
|
|
135
|
+
...restOptions
|
|
136
|
+
};
|
|
124
137
|
this.showingAlerts = [alert, ...this.showingAlerts];
|
|
125
138
|
this.renderAlerts();
|
|
126
139
|
return alert.key;
|
|
@@ -154,4 +167,4 @@ class AlertService {
|
|
|
154
167
|
|
|
155
168
|
const alertService = new AlertService();
|
|
156
169
|
|
|
157
|
-
export default
|
|
170
|
+
export { alertService as default };
|
|
@@ -16,21 +16,23 @@ import 'sniffr';
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
class AnalyticsFUSPlugin {
|
|
19
|
-
constructor({
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
constructor(_ref) {
|
|
20
|
+
let {
|
|
21
|
+
productId,
|
|
22
|
+
productBuild,
|
|
23
|
+
recorderVersion = '1',
|
|
24
|
+
isDevelopment = false,
|
|
25
|
+
groups = []
|
|
26
|
+
} = _ref;
|
|
27
|
+
|
|
26
28
|
if (!productId && !isDevelopment) {
|
|
27
29
|
return;
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
((i, s, o, g, r) => {
|
|
31
|
-
i[r] = i[r] || (
|
|
33
|
+
i[r] = i[r] || function addArgumentsToQueueForWaitingTheScriptLoading() {
|
|
32
34
|
(i[r].query = i[r].query || []).push(arguments);
|
|
33
|
-
}
|
|
35
|
+
};
|
|
34
36
|
|
|
35
37
|
const script = document.createElement(o);
|
|
36
38
|
script.async = true;
|
|
@@ -46,7 +48,7 @@ class AnalyticsFUSPlugin {
|
|
|
46
48
|
recorderVersion,
|
|
47
49
|
productCode: productId,
|
|
48
50
|
productBuild,
|
|
49
|
-
internal:
|
|
51
|
+
internal: isDevelopment,
|
|
50
52
|
groups,
|
|
51
53
|
useForSubdomains: true
|
|
52
54
|
});
|
|
@@ -96,4 +98,4 @@ class AnalyticsFUSPlugin {
|
|
|
96
98
|
|
|
97
99
|
}
|
|
98
100
|
|
|
99
|
-
export default
|
|
101
|
+
export { AnalyticsFUSPlugin as default };
|
|
@@ -12,9 +12,9 @@ class AnalyticsGAPlugin {
|
|
|
12
12
|
((i, s, o, g, r) => {
|
|
13
13
|
i.GoogleAnalyticsObject = r;
|
|
14
14
|
|
|
15
|
-
i[r] = i[r] || (
|
|
15
|
+
i[r] = i[r] || function addArgumentsToQueueForWaitingTheScriptLoading() {
|
|
16
16
|
(i[r].q = i[r].q || []).push(arguments);
|
|
17
|
-
}
|
|
17
|
+
};
|
|
18
18
|
|
|
19
19
|
i[r].l = 1 * new Date();
|
|
20
20
|
const a = s.createElement(o);
|
|
@@ -63,4 +63,4 @@ class AnalyticsGAPlugin {
|
|
|
63
63
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
export default
|
|
66
|
+
export { AnalyticsGAPlugin as default };
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import angular from 'angular';
|
|
2
|
+
import analyticsInstance from '../analytics/analytics.js';
|
|
3
|
+
import AnalyticsGAPlugin from '../analytics/analytics__ga-plugin.js';
|
|
4
|
+
import AnalyticsFUSPlugin from '../analytics/analytics__fus-plugin.js';
|
|
5
|
+
import AnalyticsCustomPlugin from '../analytics/analytics__custom-plugin.js';
|
|
6
|
+
import '../analytics/analytics__plugin-utils.js';
|
|
7
|
+
import '../global/sniffer.js';
|
|
8
|
+
import 'sniffr';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @name Analytics Ng
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const angularModule = angular.module('Ring.analytics', []);
|
|
15
|
+
/**
|
|
16
|
+
* @name analyticsProvider
|
|
17
|
+
* @description Configures analytics with plugins.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
angularModule.provider('analytics', function provider() {
|
|
21
|
+
let configPlugins = [];
|
|
22
|
+
/**
|
|
23
|
+
* @param plugins
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
this.plugins = plugins => {
|
|
27
|
+
configPlugins = plugins;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
this.$get = ["$log", "$injector", function get($log, $injector) {
|
|
31
|
+
const loadedPlugins = [];
|
|
32
|
+
|
|
33
|
+
for (let i = 0; i < configPlugins.length; ++i) {
|
|
34
|
+
if (typeof configPlugins[i] === 'string') {
|
|
35
|
+
try {
|
|
36
|
+
const plugin = $injector.get(configPlugins[i]);
|
|
37
|
+
loadedPlugins.push(plugin);
|
|
38
|
+
$log.debug(`analytics: loaded plugin ${configPlugins[i]}`);
|
|
39
|
+
} catch (err) {
|
|
40
|
+
$log.debug(`analytics: unable to load factory ${configPlugins[i]}`);
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
loadedPlugins.push(configPlugins[i]);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
analyticsInstance.config(loadedPlugins);
|
|
48
|
+
return analyticsInstance;
|
|
49
|
+
}];
|
|
50
|
+
});
|
|
51
|
+
angularModule.constant('AnalyticsGAPlugin', AnalyticsGAPlugin);
|
|
52
|
+
angularModule.constant('AnalyticsCustomPlugin', AnalyticsCustomPlugin);
|
|
53
|
+
angularModule.constant('AnalyticsFUSPlugin', AnalyticsFUSPlugin);
|
|
54
|
+
/**
|
|
55
|
+
* Enable page tracking
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
angularModule.run(["$rootScope", "analytics", function analyticsRun($rootScope, analytics) {
|
|
59
|
+
$rootScope.$on('$routeChangeSuccess', (evt, current) => {
|
|
60
|
+
// eslint-disable-line angular/on-watch
|
|
61
|
+
|
|
62
|
+
/* eslint-disable angular/no-private-call */
|
|
63
|
+
if (current && current.$$route && current.$$route.originalPath) {
|
|
64
|
+
analytics.trackPageView(current.$$route.originalPath);
|
|
65
|
+
}
|
|
66
|
+
/* eslint-enable angular/no-private-call */
|
|
67
|
+
|
|
68
|
+
});
|
|
69
|
+
}]);
|
|
70
|
+
/**
|
|
71
|
+
* @ngdoc directive
|
|
72
|
+
* @name rg-analytics
|
|
73
|
+
*
|
|
74
|
+
* @description
|
|
75
|
+
* The `rg-analytics="<categoryName>:<eventName>"` sends categoryName and eventName to analytics server on
|
|
76
|
+
* user action, specified via attribute `rg-analytics-on` (e.g. rg-analytics-on='mouseover' means that analytics will be sent on mouseover,
|
|
77
|
+
* rg-analytics-on='click' - on click). If there is no attribute rg-analytics-on, the default value 'click' is used.
|
|
78
|
+
*/
|
|
79
|
+
|
|
80
|
+
angularModule.directive('rgAnalytics', ["analytics", function rgAnalyticsDirective(analytics) {
|
|
81
|
+
return {
|
|
82
|
+
restrict: 'A',
|
|
83
|
+
replace: false,
|
|
84
|
+
link: function link($scope, elem) {
|
|
85
|
+
const eventType = elem.attr('rg-analytics-on') || 'click';
|
|
86
|
+
angular.element(elem).bind(eventType, () => {
|
|
87
|
+
analytics.track(elem.attr('rg-analytics'));
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}]);
|
|
92
|
+
var analyticsNg = angularModule.name;
|
|
93
|
+
|
|
94
|
+
export { analyticsNg as default };
|
package/dist/auth/auth.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { c as _objectSpread2 } from '../_helpers/_rollupPluginBabelHelpers.js';
|
|
2
1
|
import WindowFlow from './window-flow.js';
|
|
3
2
|
import onBackendDown from './down-notification.js';
|
|
4
3
|
import Auth from './auth__core.js';
|
|
5
4
|
export { DEFAULT_BACKGROUND_TIMEOUT, DEFAULT_EXPIRES_TIMEOUT, DOMAIN_USER_CHANGED_EVENT, LOGOUT_EVENT, LOGOUT_POSTPONED_EVENT, USER_CHANGED_EVENT, USER_CHANGE_POSTPONED_EVENT, default } from './auth__core.js';
|
|
5
|
+
import '../_helpers/_rollupPluginBabelHelpers.js';
|
|
6
6
|
import './response-parser.js';
|
|
7
7
|
import 'es6-error';
|
|
8
8
|
import '../global/url.js';
|
|
@@ -20,7 +20,8 @@ import '@jetbrains/icons/close';
|
|
|
20
20
|
import '../icon/icon.js';
|
|
21
21
|
import 'util-deprecate';
|
|
22
22
|
import '../icon/icon__constants.js';
|
|
23
|
-
import '../_helpers/
|
|
23
|
+
import '../_helpers/icon.js';
|
|
24
|
+
import '../icon/icon__svg.js';
|
|
24
25
|
import '../global/memoize.js';
|
|
25
26
|
import '../loader-inline/loader-inline.js';
|
|
26
27
|
import '../global/theme.js';
|
|
@@ -36,7 +37,9 @@ import '../alert/container.js';
|
|
|
36
37
|
import '../link/link.js';
|
|
37
38
|
import 'focus-visible';
|
|
38
39
|
import '../link/clickableLink.js';
|
|
40
|
+
import '../_helpers/link.js';
|
|
39
41
|
import '../group/group.js';
|
|
42
|
+
import '../_helpers/group.js';
|
|
40
43
|
import '../global/listeners.js';
|
|
41
44
|
import '../http/http.js';
|
|
42
45
|
import '../global/promise-with-timeout.js';
|
|
@@ -84,7 +87,7 @@ import './token-validator.js';
|
|
|
84
87
|
* Extend Auth config with non-required and not pure-JS stuff
|
|
85
88
|
*/
|
|
86
89
|
|
|
87
|
-
Auth.DEFAULT_CONFIG =
|
|
90
|
+
Auth.DEFAULT_CONFIG = { ...Auth.DEFAULT_CONFIG,
|
|
88
91
|
EmbeddedLoginFlow: WindowFlow,
|
|
89
92
|
onBackendDown: onBackendDown
|
|
90
|
-
}
|
|
93
|
+
};
|
package/dist/auth/auth__core.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { _ as _defineProperty
|
|
2
|
-
import {
|
|
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/
|
|
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 =
|
|
141
|
+
this.config = { ...Auth.DEFAULT_CONFIG,
|
|
142
|
+
...config
|
|
143
|
+
};
|
|
139
144
|
const {
|
|
140
145
|
clientId,
|
|
141
146
|
redirect,
|
|
@@ -227,7 +232,8 @@ class Auth {
|
|
|
227
232
|
this.setUpPreconnect(config.serverUri);
|
|
228
233
|
}
|
|
229
234
|
|
|
230
|
-
_setPostponed(
|
|
235
|
+
_setPostponed() {
|
|
236
|
+
let postponed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
231
237
|
this._postponed = postponed;
|
|
232
238
|
}
|
|
233
239
|
|
|
@@ -268,7 +274,7 @@ class Auth {
|
|
|
268
274
|
|
|
269
275
|
|
|
270
276
|
async init() {
|
|
271
|
-
this._storage.onTokenChange(token => {
|
|
277
|
+
this._storage.onTokenChange(async token => {
|
|
272
278
|
const isGuest = this.user ? this.user.guest : false;
|
|
273
279
|
|
|
274
280
|
if (isGuest && !token) {
|
|
@@ -278,14 +284,25 @@ class Auth {
|
|
|
278
284
|
if (!token) {
|
|
279
285
|
this.logout();
|
|
280
286
|
} else {
|
|
281
|
-
|
|
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
|
+
}
|
|
282
297
|
}
|
|
283
298
|
});
|
|
284
299
|
|
|
285
|
-
this._domainStorage.onMessage(DOMAIN_USER_CHANGED_EVENT,
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
300
|
+
this._domainStorage.onMessage(DOMAIN_USER_CHANGED_EVENT, _ref => {
|
|
301
|
+
let {
|
|
302
|
+
userID,
|
|
303
|
+
serviceID
|
|
304
|
+
} = _ref;
|
|
305
|
+
|
|
289
306
|
if (serviceID === this.config.clientId) {
|
|
290
307
|
return;
|
|
291
308
|
}
|
|
@@ -357,8 +374,12 @@ class Auth {
|
|
|
357
374
|
async sendRedirect(error) {
|
|
358
375
|
const authRequest = await this._requestBuilder.prepareAuthRequest();
|
|
359
376
|
|
|
360
|
-
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
|
|
361
380
|
|
|
381
|
+
|
|
382
|
+
await new Promise(resolve => setTimeout(resolve, this.config.waitForRedirectTimeout));
|
|
362
383
|
throw error;
|
|
363
384
|
}
|
|
364
385
|
|
|
@@ -536,39 +557,35 @@ class Auth {
|
|
|
536
557
|
|
|
537
558
|
async _detectUserChange(accessToken) {
|
|
538
559
|
const windowWasOpen = this._isLoginWindowOpen;
|
|
560
|
+
const user = await this.getUser(accessToken);
|
|
539
561
|
|
|
540
|
-
|
|
541
|
-
|
|
562
|
+
const onApply = () => {
|
|
563
|
+
this.user = user;
|
|
564
|
+
this.listeners.trigger(USER_CHANGED_EVENT, user);
|
|
565
|
+
};
|
|
542
566
|
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
567
|
+
if (user && this.user && this.user.id !== user.id) {
|
|
568
|
+
if (!this._canShowDialogs() || this.user.guest || windowWasOpen) {
|
|
569
|
+
onApply();
|
|
570
|
+
return;
|
|
571
|
+
}
|
|
547
572
|
|
|
548
|
-
if (user
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
}
|
|
573
|
+
if (user.guest) {
|
|
574
|
+
this._showAuthDialog({
|
|
575
|
+
nonInteractive: true
|
|
576
|
+
});
|
|
553
577
|
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
nonInteractive: true
|
|
557
|
-
});
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
558
580
|
|
|
559
|
-
|
|
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);
|
|
560
587
|
}
|
|
561
|
-
|
|
562
|
-
await this._showUserChangedDialog({
|
|
563
|
-
newUser: user,
|
|
564
|
-
onApply,
|
|
565
|
-
onPostpone: () => {
|
|
566
|
-
this.listeners.trigger(USER_CHANGE_POSTPONED_EVENT);
|
|
567
|
-
this.config.onPostponeChangedUser(this.user, user);
|
|
568
|
-
}
|
|
569
|
-
});
|
|
570
|
-
}
|
|
571
|
-
} catch (e) {// noop
|
|
588
|
+
});
|
|
572
589
|
}
|
|
573
590
|
}
|
|
574
591
|
|
|
@@ -582,11 +599,12 @@ class Auth {
|
|
|
582
599
|
this.logout();
|
|
583
600
|
}
|
|
584
601
|
|
|
585
|
-
_showAuthDialog({
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
602
|
+
_showAuthDialog() {
|
|
603
|
+
let {
|
|
604
|
+
nonInteractive,
|
|
605
|
+
error,
|
|
606
|
+
canCancel
|
|
607
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
590
608
|
const {
|
|
591
609
|
embeddedLogin,
|
|
592
610
|
onPostponeLogout,
|
|
@@ -636,15 +654,15 @@ class Auth {
|
|
|
636
654
|
}
|
|
637
655
|
};
|
|
638
656
|
|
|
639
|
-
const hide = this._authDialogService(
|
|
657
|
+
const hide = this._authDialogService({ ...this._service,
|
|
640
658
|
loginCaption: translations.login,
|
|
641
659
|
loginToCaption: translations.loginTo,
|
|
642
660
|
confirmLabel: translations.login,
|
|
643
661
|
cancelLabel: cancelable ? translations.cancel : translations.postpone,
|
|
644
|
-
errorMessage: error
|
|
662
|
+
errorMessage: this._extractErrorMessage(error, true),
|
|
645
663
|
onConfirm,
|
|
646
664
|
onCancel
|
|
647
|
-
})
|
|
665
|
+
});
|
|
648
666
|
|
|
649
667
|
const stopTokenListening = this._storage.onTokenChange(token => {
|
|
650
668
|
if (token) {
|
|
@@ -657,11 +675,12 @@ class Auth {
|
|
|
657
675
|
const stopMessageListening = this._storage.onMessage(Auth.CLOSE_WINDOW_MESSAGE, () => this._embeddedFlow.stop());
|
|
658
676
|
}
|
|
659
677
|
|
|
660
|
-
_showUserChangedDialog({
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
678
|
+
_showUserChangedDialog() {
|
|
679
|
+
let {
|
|
680
|
+
newUser,
|
|
681
|
+
onApply,
|
|
682
|
+
onPostpone
|
|
683
|
+
} = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
665
684
|
const {
|
|
666
685
|
translations
|
|
667
686
|
} = this.config;
|
|
@@ -675,7 +694,7 @@ class Auth {
|
|
|
675
694
|
hide();
|
|
676
695
|
};
|
|
677
696
|
|
|
678
|
-
const hide = this._authDialogService(
|
|
697
|
+
const hide = this._authDialogService({ ...this._service,
|
|
679
698
|
title: translations.youHaveLoggedInAs.replace('%userName%', newUser.name),
|
|
680
699
|
loginCaption: translations.login,
|
|
681
700
|
loginToCaption: translations.loginTo,
|
|
@@ -689,7 +708,32 @@ class Auth {
|
|
|
689
708
|
done();
|
|
690
709
|
onPostpone();
|
|
691
710
|
}
|
|
692
|
-
})
|
|
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;
|
|
693
737
|
}
|
|
694
738
|
|
|
695
739
|
_showBackendDownDialog(backendError) {
|
|
@@ -755,11 +799,11 @@ class Auth {
|
|
|
755
799
|
|
|
756
800
|
|
|
757
801
|
async logout(extraParams) {
|
|
758
|
-
const requestParams =
|
|
802
|
+
const requestParams = {
|
|
759
803
|
// eslint-disable-next-line camelcase
|
|
760
|
-
request_credentials: 'required'
|
|
761
|
-
|
|
762
|
-
|
|
804
|
+
request_credentials: 'required',
|
|
805
|
+
...extraParams
|
|
806
|
+
};
|
|
763
807
|
await this._checkBackendsStatusesIfEnabled();
|
|
764
808
|
await this.listeners.trigger(LOGOUT_EVENT);
|
|
765
809
|
|
|
@@ -813,11 +857,11 @@ class Auth {
|
|
|
813
857
|
}
|
|
814
858
|
|
|
815
859
|
async switchUser() {
|
|
816
|
-
if (this.config.embeddedLogin) {
|
|
817
|
-
|
|
860
|
+
if (!this.config.embeddedLogin) {
|
|
861
|
+
throw new Error('Auth: switchUser only supported for "embeddedLogin" mode');
|
|
818
862
|
}
|
|
819
863
|
|
|
820
|
-
|
|
864
|
+
await this._runEmbeddedLogin();
|
|
821
865
|
}
|
|
822
866
|
/**
|
|
823
867
|
* Check if the hash contains an access token.
|
|
@@ -978,5 +1022,4 @@ _defineProperty(Auth, "shouldRefreshToken", TokenValidator.shouldRefreshToken);
|
|
|
978
1022
|
|
|
979
1023
|
_defineProperty(Auth, "storageIsUnavailable", !navigator.cookieEnabled);
|
|
980
1024
|
|
|
981
|
-
export default
|
|
982
|
-
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 };
|
|
@@ -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/
|
|
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,12 +31,15 @@ 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":"
|
|
37
|
+
var modules_c87dd562 = {"unit":"8px","title":"title_rui_dc35","error":"error_rui_dc35"};
|
|
35
38
|
|
|
36
39
|
let key = null;
|
|
37
40
|
|
|
38
|
-
function renderAlert(message
|
|
41
|
+
function renderAlert(message) {
|
|
42
|
+
let type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Alert.Type.WARNING;
|
|
39
43
|
const existingAlert = alertService.showingAlerts.filter(alert => alert.key === key)[0];
|
|
40
44
|
|
|
41
45
|
if (!existingAlert) {
|
|
@@ -49,10 +53,11 @@ function renderAlert(message, type = Alert.Type.WARNING) {
|
|
|
49
53
|
}
|
|
50
54
|
}
|
|
51
55
|
|
|
52
|
-
function Message({
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
function Message(_ref) {
|
|
57
|
+
let {
|
|
58
|
+
translations,
|
|
59
|
+
onCheckAgain
|
|
60
|
+
} = _ref;
|
|
56
61
|
const {
|
|
57
62
|
backendIsNotAvailable,
|
|
58
63
|
checkAgain,
|
|
@@ -78,10 +83,12 @@ Message.propTypes = {
|
|
|
78
83
|
}),
|
|
79
84
|
onCheckAgain: PropTypes.func
|
|
80
85
|
};
|
|
81
|
-
function onBackendDown({
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
86
|
+
function onBackendDown(_ref2) {
|
|
87
|
+
let {
|
|
88
|
+
onCheckAgain,
|
|
89
|
+
translations
|
|
90
|
+
} = _ref2;
|
|
91
|
+
|
|
85
92
|
async function checkAgainWithoutClosing(e) {
|
|
86
93
|
// Alert has weird behaviour of handling clicks by "a" tags
|
|
87
94
|
e.stopPropagation();
|
|
@@ -104,4 +111,4 @@ function onBackendDown({
|
|
|
104
111
|
return () => alertService.remove(key);
|
|
105
112
|
}
|
|
106
113
|
|
|
107
|
-
export default
|
|
114
|
+
export { onBackendDown as default };
|