@jetbrains/ring-ui 4.2.4 → 4.2.7
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/components/dialog/dialog.js +4 -2
- package/components/list/list.js +20 -11
- package/components/table/row.js +12 -7
- package/components/table/table.examples.js +1 -0
- package/components/table/table.js +3 -1
- package/package.json +2 -2
- package/dist/_helpers/_rollupPluginBabelHelpers.js +0 -34
- package/dist/_helpers/anchor.js +0 -33
- package/dist/_helpers/badge.js +0 -3
- package/dist/_helpers/button-group.js +0 -3
- package/dist/_helpers/button-set.js +0 -3
- package/dist/_helpers/button-toolbar.js +0 -3
- package/dist/_helpers/button__classes.js +0 -39
- package/dist/_helpers/card.js +0 -75
- package/dist/_helpers/checkbox.js +0 -3
- package/dist/_helpers/date-picker.js +0 -3
- package/dist/_helpers/dialog__body-scroll-preventer.js +0 -58
- package/dist/_helpers/error-message.js +0 -3
- package/dist/_helpers/footer.js +0 -121
- package/dist/_helpers/grid.js +0 -3
- package/dist/_helpers/group.js +0 -3
- package/dist/_helpers/header.js +0 -3
- package/dist/_helpers/icon.js +0 -3
- package/dist/_helpers/inject-styles.js +0 -22
- package/dist/_helpers/input.js +0 -3
- package/dist/_helpers/island.js +0 -3
- package/dist/_helpers/link.js +0 -3
- package/dist/_helpers/list.js +0 -3
- package/dist/_helpers/loader-screen.js +0 -3
- package/dist/_helpers/panel.js +0 -3
- package/dist/_helpers/query-assist__suggestions.js +0 -95
- package/dist/_helpers/radio.js +0 -3
- package/dist/_helpers/select__filter.js +0 -77
- package/dist/_helpers/services-link.js +0 -40
- package/dist/_helpers/sidebar.js +0 -126
- package/dist/_helpers/table.js +0 -3
- package/dist/_helpers/tabs.js +0 -3
- package/dist/_helpers/title.js +0 -100
- package/dist/alert/alert.js +0 -262
- package/dist/alert/container.js +0 -48
- package/dist/alert-service/alert-service.js +0 -173
- package/dist/analytics/analytics.js +0 -118
- package/dist/analytics/analytics__custom-plugin.js +0 -128
- package/dist/analytics/analytics__fus-plugin.js +0 -102
- package/dist/analytics/analytics__ga-plugin.js +0 -75
- package/dist/analytics/analytics__plugin-utils.js +0 -80
- package/dist/analytics-ng/analytics-ng.js +0 -95
- package/dist/auth/auth.js +0 -96
- package/dist/auth/auth__core.js +0 -1059
- package/dist/auth/background-flow.js +0 -123
- package/dist/auth/down-notification.js +0 -117
- package/dist/auth/iframe-flow.js +0 -153
- package/dist/auth/landing-entry.js +0 -5
- package/dist/auth/landing.js +0 -90
- package/dist/auth/request-builder.js +0 -76
- package/dist/auth/response-parser.js +0 -118
- package/dist/auth/storage.js +0 -283
- package/dist/auth/token-validator.js +0 -178
- package/dist/auth/window-flow.js +0 -134
- package/dist/auth-dialog/auth-dialog.js +0 -180
- package/dist/auth-dialog-service/auth-dialog-service.js +0 -71
- package/dist/auth-ng/auth-ng.js +0 -206
- package/dist/auth-ng/auth-ng.mock.js +0 -33
- package/dist/autofocus-ng/autofocus-ng.js +0 -51
- package/dist/avatar/avatar-example-datauri.js +0 -4
- package/dist/avatar/avatar.js +0 -163
- package/dist/avatar/fallback-avatar.js +0 -142
- package/dist/avatar-editor-ng/avatar-editor-ng.js +0 -167
- package/dist/avatar-editor-ng/avatar-editor-ng__template.js +0 -3
- package/dist/avatar-ng/avatar-ng.js +0 -21
- package/dist/badge/badge.js +0 -51
- package/dist/badge-ng/badge-ng.js +0 -18
- package/dist/breadcrumb-ng/breadcrumb-ng.js +0 -37
- package/dist/button/button.js +0 -125
- package/dist/button/button__classes.js +0 -5
- package/dist/button-group/button-group.js +0 -30
- package/dist/button-group/caption.js +0 -24
- package/dist/button-group-ng/button-group-ng.js +0 -39
- package/dist/button-ng/button-ng.js +0 -217
- package/dist/button-set/button-set.js +0 -26
- package/dist/button-set-ng/button-set-ng.js +0 -19
- package/dist/button-toolbar/button-toolbar.js +0 -29
- package/dist/button-toolbar-ng/button-toolbar-ng.js +0 -24
- package/dist/caret/caret.js +0 -266
- package/dist/checkbox/checkbox.js +0 -110
- package/dist/checkbox-ng/checkbox-ng.js +0 -38
- package/dist/code/code.js +0 -137
- package/dist/compiler-ng/compiler-ng.js +0 -53
- package/dist/confirm/confirm.js +0 -127
- package/dist/confirm-ng/confirm-ng.js +0 -69
- package/dist/confirm-service/confirm-service.js +0 -117
- package/dist/content-layout/content-layout.js +0 -66
- package/dist/content-layout/sidebar.js +0 -7
- package/dist/contenteditable/contenteditable.js +0 -78
- package/dist/data-list/data-list.js +0 -208
- package/dist/data-list/data-list.mock.js +0 -191
- package/dist/data-list/item.js +0 -229
- package/dist/data-list/selection.js +0 -102
- package/dist/data-list/title.js +0 -20
- package/dist/data-list-ng/data-list-ng.js +0 -62
- package/dist/date-picker/consts.js +0 -69
- package/dist/date-picker/date-input.js +0 -175
- package/dist/date-picker/date-picker.js +0 -367
- package/dist/date-picker/date-popup.js +0 -483
- package/dist/date-picker/day.js +0 -120
- package/dist/date-picker/formats.js +0 -3
- package/dist/date-picker/month-names.js +0 -100
- package/dist/date-picker/month-slider.js +0 -84
- package/dist/date-picker/month.js +0 -55
- package/dist/date-picker/months.js +0 -122
- package/dist/date-picker/weekdays.js +0 -32
- package/dist/date-picker/years.js +0 -110
- package/dist/dialog/dialog.js +0 -202
- package/dist/dialog/dialog__body-scroll-preventer.js +0 -3
- package/dist/dialog-ng/dialog-ng.js +0 -604
- package/dist/dialog-ng/dialog-ng__template.js +0 -3
- package/dist/docked-panel-ng/docked-panel-ng.js +0 -171
- package/dist/dropdown/anchor.js +0 -19
- package/dist/dropdown/dropdown.js +0 -236
- package/dist/dropdown-menu/dropdown-menu.js +0 -177
- package/dist/error-bubble/error-bubble.js +0 -59
- package/dist/error-message/error-message.js +0 -57
- package/dist/error-message-ng/error-message-ng.js +0 -35
- package/dist/footer/footer.js +0 -12
- package/dist/footer-ng/footer-ng.js +0 -64
- package/dist/form-ng/form-ng.js +0 -167
- package/dist/global/angular-component-factory.js +0 -84
- package/dist/global/compose.js +0 -9
- package/dist/global/composeRefs.js +0 -15
- package/dist/global/conic-gradient.js +0 -35
- package/dist/global/create-stateful-context.js +0 -55
- package/dist/global/data-tests.js +0 -24
- package/dist/global/dom.js +0 -125
- package/dist/global/focus-sensor-hoc.js +0 -146
- package/dist/global/fuzzy-highlight.js +0 -67
- package/dist/global/get-event-key.js +0 -111
- package/dist/global/get-uid.js +0 -15
- package/dist/global/inject-styles.js +0 -15
- package/dist/global/linear-function.js +0 -17
- package/dist/global/listeners.js +0 -44
- package/dist/global/memoize.js +0 -20
- package/dist/global/normalize-indent.js +0 -30
- package/dist/global/promise-with-timeout.js +0 -17
- package/dist/global/radial-gradient-mask.js +0 -38
- package/dist/global/react-dom-renderer.js +0 -46
- package/dist/global/react-render-adapter.js +0 -41
- package/dist/global/rerender-hoc.js +0 -55
- package/dist/global/ring-angular-component.js +0 -24
- package/dist/global/schedule-raf.js +0 -31
- package/dist/global/sniffer.js +0 -6
- package/dist/global/supports-css.js +0 -22
- package/dist/global/theme.js +0 -54
- package/dist/global/trivial-template-tag.js +0 -17
- package/dist/global/url.js +0 -165
- package/dist/global/variables_dark.js +0 -57
- package/dist/grid/col.js +0 -60
- package/dist/grid/grid.js +0 -33
- package/dist/grid/row.js +0 -64
- package/dist/group/group.js +0 -31
- package/dist/group-ng/group-ng.js +0 -11
- package/dist/header/header.js +0 -150
- package/dist/header/logo.js +0 -40
- package/dist/header/profile.js +0 -219
- package/dist/header/services-link.js +0 -12
- package/dist/header/services.js +0 -138
- package/dist/header/smart-profile.js +0 -233
- package/dist/header/smart-services.js +0 -163
- package/dist/header/tray-icon.js +0 -47
- package/dist/header/tray.js +0 -31
- package/dist/heading/heading.js +0 -73
- package/dist/http/http.js +0 -218
- package/dist/http/http.mock.js +0 -67
- package/dist/hub-source/hub-source.js +0 -130
- package/dist/hub-source/hub-source__user.js +0 -30
- package/dist/hub-source/hub-source__users-groups.js +0 -63
- package/dist/icon/icon.js +0 -105
- package/dist/icon/icon__constants.js +0 -33
- package/dist/icon/icon__svg.js +0 -83
- package/dist/icon/index.js +0 -12
- package/dist/icon-ng/icon-ng.js +0 -91
- package/dist/input/input.js +0 -230
- package/dist/input-ng/input-ng.js +0 -111
- package/dist/island/adaptive-island-hoc.js +0 -48
- package/dist/island/content.js +0 -160
- package/dist/island/header.js +0 -84
- package/dist/island/island.js +0 -51
- package/dist/island-legacy/content-legacy.js +0 -26
- package/dist/island-legacy/header-legacy.js +0 -28
- package/dist/island-legacy/island-legacy.js +0 -28
- package/dist/island-ng/island-content-ng.js +0 -42
- package/dist/island-ng/island-header-ng.js +0 -26
- package/dist/island-ng/island-ng-class-fixer.js +0 -11
- package/dist/island-ng/island-ng.js +0 -25
- package/dist/link/clickableLink.js +0 -64
- package/dist/link/link.js +0 -115
- package/dist/link-ng/link-ng.js +0 -22
- package/dist/list/consts.js +0 -26
- package/dist/list/list.js +0 -818
- package/dist/list/list__custom.js +0 -86
- package/dist/list/list__hint.js +0 -26
- package/dist/list/list__item.js +0 -206
- package/dist/list/list__link.js +0 -65
- package/dist/list/list__separator.js +0 -30
- package/dist/list/list__title.js +0 -39
- package/dist/list/list__users-groups-source.js +0 -130
- package/dist/loader/loader.js +0 -71
- package/dist/loader/loader__core.js +0 -273
- package/dist/loader-inline/inject-styles.js +0 -13
- package/dist/loader-inline/loader-inline.js +0 -58
- package/dist/loader-inline-ng/loader-inline-ng.js +0 -44
- package/dist/loader-ng/loader-ng.js +0 -44
- package/dist/loader-screen/loader-screen.js +0 -44
- package/dist/loader-screen-ng/loader-screen-ng.js +0 -95
- package/dist/login-dialog/login-dialog.js +0 -188
- package/dist/login-dialog/service.js +0 -72
- package/dist/markdown/code.js +0 -31
- package/dist/markdown/heading.js +0 -23
- package/dist/markdown/link.js +0 -31
- package/dist/markdown/markdown.js +0 -74
- package/dist/message/message.js +0 -235
- package/dist/message-bundle-ng/message-bundle-ng.js +0 -111
- package/dist/old-browsers-message/old-browsers-message.js +0 -101
- package/dist/old-browsers-message/old-browsers-message__stop.js +0 -5
- package/dist/old-browsers-message/white-list.js +0 -34
- package/dist/pager/pager.js +0 -365
- package/dist/pager-ng/pager-ng.js +0 -100
- package/dist/panel/panel.js +0 -31
- package/dist/panel-ng/panel-ng.js +0 -17
- package/dist/permissions/permissions.js +0 -200
- package/dist/permissions/permissions__cache.js +0 -272
- package/dist/permissions-ng/permissions-ng.js +0 -277
- package/dist/place-under-ng/place-under-ng.js +0 -158
- package/dist/popup/popup.consts.js +0 -41
- package/dist/popup/popup.js +0 -396
- package/dist/popup/popup.target.js +0 -26
- package/dist/popup/position.js +0 -280
- package/dist/popup-menu/popup-menu.js +0 -117
- package/dist/progress-bar/progress-bar.js +0 -114
- package/dist/progress-bar-ng/progress-bar-ng.js +0 -17
- package/dist/promised-click-ng/promised-click-ng.js +0 -128
- package/dist/proxy-attrs/proxy-attrs.js +0 -21
- package/dist/query-assist/query-assist.js +0 -1096
- package/dist/query-assist/query-assist__suggestions.js +0 -49
- package/dist/query-assist-ng/query-assist-ng.js +0 -86
- package/dist/radio/radio.js +0 -42
- package/dist/radio/radio__item.js +0 -78
- package/dist/radio-ng/radio-ng.js +0 -47
- package/dist/save-field-ng/save-field-ng.js +0 -337
- package/dist/save-field-ng/save-field-ng__template.js +0 -3
- package/dist/select/select.js +0 -1357
- package/dist/select/select__filter.js +0 -56
- package/dist/select/select__popup.js +0 -553
- package/dist/select-ng/select-ng.js +0 -637
- package/dist/select-ng/select-ng__lazy.js +0 -169
- package/dist/select-ng/select-ng__options.js +0 -145
- package/dist/shortcuts/core.js +0 -245
- package/dist/shortcuts/shortcut-title.js +0 -51
- package/dist/shortcuts/shortcuts-hoc.js +0 -42
- package/dist/shortcuts/shortcuts.js +0 -72
- package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +0 -123
- package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +0 -3
- package/dist/shortcuts-ng/shortcuts-ng.js +0 -262
- package/dist/sidebar-ng/sidebar-ng.js +0 -113
- package/dist/sidebar-ng/sidebar-ng__button-template.js +0 -3
- package/dist/sidebar-ng/sidebar-ng__template.js +0 -3
- package/dist/storage/storage.js +0 -59
- package/dist/storage/storage__fallback.js +0 -215
- package/dist/storage/storage__local.js +0 -154
- package/dist/style.css +0 -1
- package/dist/tab-trap/tab-trap.js +0 -177
- package/dist/table/cell.js +0 -26
- package/dist/table/disable-hover-hoc.js +0 -54
- package/dist/table/header-cell.js +0 -92
- package/dist/table/header.js +0 -193
- package/dist/table/multitable.js +0 -141
- package/dist/table/row-with-focus-sensor.js +0 -83
- package/dist/table/row.js +0 -273
- package/dist/table/selection-adapter.js +0 -16
- package/dist/table/selection-shortcuts-hoc.js +0 -215
- package/dist/table/selection.js +0 -223
- package/dist/table/smart-table.js +0 -125
- package/dist/table/table.js +0 -406
- package/dist/table-legacy-ng/table-legacy-ng.js +0 -468
- package/dist/table-legacy-ng/table-legacy-ng__pager.js +0 -120
- package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +0 -123
- package/dist/table-legacy-ng/table-legacy-ng__selection.js +0 -179
- package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +0 -57
- package/dist/table-ng/smart-table-ng.js +0 -68
- package/dist/table-ng/table-ng.js +0 -67
- package/dist/tabs/collapsible-more.js +0 -198
- package/dist/tabs/collapsible-tab.js +0 -91
- package/dist/tabs/collapsible-tabs.js +0 -362
- package/dist/tabs/custom-item.js +0 -13
- package/dist/tabs/dumb-tabs.js +0 -164
- package/dist/tabs/smart-tabs.js +0 -106
- package/dist/tabs/tab-link.js +0 -42
- package/dist/tabs/tab.js +0 -33
- package/dist/tabs/tabs.js +0 -71
- package/dist/tabs-ng/tabs-ng.js +0 -194
- package/dist/tabs-ng/tabs-ng__template.js +0 -3
- package/dist/tag/tag.js +0 -197
- package/dist/tags-input/tags-input.js +0 -482
- package/dist/tags-input-ng/tags-input-ng.js +0 -93
- package/dist/tags-list/tags-list.js +0 -95
- package/dist/template-ng/template-ng.js +0 -71
- package/dist/text/text.js +0 -36
- package/dist/theme-ng/theme-ng.js +0 -45
- package/dist/title-ng/title-ng.js +0 -114
- package/dist/toggle/toggle.js +0 -78
- package/dist/toggle-ng/toggle-ng.js +0 -18
- package/dist/tooltip/tooltip.js +0 -209
- package/dist/tooltip-ng/tooltip-ng.js +0 -104
- package/dist/user-agreement/service.js +0 -412
- package/dist/user-agreement/toolbox.eula.js +0 -3
- package/dist/user-agreement/user-agreement.js +0 -169
- package/dist/user-card/card.js +0 -19
- package/dist/user-card/smart-user-card-tooltip.js +0 -114
- package/dist/user-card/tooltip.js +0 -95
- package/dist/user-card/user-card.js +0 -51
- package/dist/user-card-ng/user-card-ng.js +0 -62
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
import angular from 'angular';
|
|
2
|
-
import '../auth-ng/auth-ng.js';
|
|
3
|
-
import Permissions from '../permissions/permissions.js';
|
|
4
|
-
import PermissionCache from '../permissions/permissions__cache.js';
|
|
5
|
-
import 'core-js/modules/es.string.replace.js';
|
|
6
|
-
import '../auth/auth.js';
|
|
7
|
-
import '../auth/window-flow.js';
|
|
8
|
-
import '../_helpers/_rollupPluginBabelHelpers.js';
|
|
9
|
-
import '../auth/response-parser.js';
|
|
10
|
-
import 'es6-error';
|
|
11
|
-
import '../global/url.js';
|
|
12
|
-
import '../auth/down-notification.js';
|
|
13
|
-
import 'react';
|
|
14
|
-
import 'prop-types';
|
|
15
|
-
import '../alert-service/alert-service.js';
|
|
16
|
-
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
17
|
-
import '../global/react-render-adapter.js';
|
|
18
|
-
import 'react-dom';
|
|
19
|
-
import '../global/get-uid.js';
|
|
20
|
-
import '../alert/alert.js';
|
|
21
|
-
import 'classnames';
|
|
22
|
-
import '@jetbrains/icons/exception';
|
|
23
|
-
import '@jetbrains/icons/checkmark';
|
|
24
|
-
import '@jetbrains/icons/warning';
|
|
25
|
-
import '@jetbrains/icons/close';
|
|
26
|
-
import '../icon/icon.js';
|
|
27
|
-
import 'util-deprecate';
|
|
28
|
-
import '../icon/icon__constants.js';
|
|
29
|
-
import '../_helpers/icon.js';
|
|
30
|
-
import '../icon/icon__svg.js';
|
|
31
|
-
import '../global/memoize.js';
|
|
32
|
-
import '../loader-inline/loader-inline.js';
|
|
33
|
-
import '../global/theme.js';
|
|
34
|
-
import '../global/data-tests.js';
|
|
35
|
-
import '../_helpers/inject-styles.js';
|
|
36
|
-
import '../global/conic-gradient.js';
|
|
37
|
-
import 'conic-gradient';
|
|
38
|
-
import '../global/supports-css.js';
|
|
39
|
-
import '../global/inject-styles.js';
|
|
40
|
-
import '../global/radial-gradient-mask.js';
|
|
41
|
-
import '../global/dom.js';
|
|
42
|
-
import '../alert/container.js';
|
|
43
|
-
import '../link/link.js';
|
|
44
|
-
import 'focus-visible';
|
|
45
|
-
import '../link/clickableLink.js';
|
|
46
|
-
import '../_helpers/link.js';
|
|
47
|
-
import '../group/group.js';
|
|
48
|
-
import '../_helpers/group.js';
|
|
49
|
-
import '../auth/auth__core.js';
|
|
50
|
-
import '../global/listeners.js';
|
|
51
|
-
import '../http/http.js';
|
|
52
|
-
import '../global/promise-with-timeout.js';
|
|
53
|
-
import '../auth/storage.js';
|
|
54
|
-
import '../storage/storage.js';
|
|
55
|
-
import '../storage/storage__local.js';
|
|
56
|
-
import '../storage/storage__fallback.js';
|
|
57
|
-
import 'deep-equal';
|
|
58
|
-
import '../auth/request-builder.js';
|
|
59
|
-
import 'simply-uuid';
|
|
60
|
-
import '../auth/background-flow.js';
|
|
61
|
-
import '../auth/token-validator.js';
|
|
62
|
-
|
|
63
|
-
function registerPermission(element) {
|
|
64
|
-
const somePermissionsCtrl = element.controller('rgSomePermissions');
|
|
65
|
-
return somePermissionsCtrl && somePermissionsCtrl.registerPermission() || angular.noop;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const angularModule = angular.module('Ring.permissions', ['Ring.auth']);
|
|
69
|
-
/**
|
|
70
|
-
* @ngdoc object
|
|
71
|
-
* @name userPermissions
|
|
72
|
-
*
|
|
73
|
-
* @description
|
|
74
|
-
* Configured instance of Permissions object.
|
|
75
|
-
*/
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* @typedef {Object} permissionsNgConfig
|
|
79
|
-
* @property {?string} serviceId
|
|
80
|
-
* @property {?string} prefix
|
|
81
|
-
*/
|
|
82
|
-
|
|
83
|
-
angularModule.provider('userPermissions', function provider() {
|
|
84
|
-
/**
|
|
85
|
-
* @type {permissionsNgConfig}
|
|
86
|
-
*/
|
|
87
|
-
let _config = {};
|
|
88
|
-
/**
|
|
89
|
-
* @param {permissionsNgConfig} config
|
|
90
|
-
*/
|
|
91
|
-
|
|
92
|
-
this.config = config => {
|
|
93
|
-
_config = config;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
this.$get = ["auth", "$q", "$http", (auth, $q, $http) => {
|
|
97
|
-
const apiUri = auth.auth.getAPIPath() + Permissions.API_PERMISSION_CACHE_PATH;
|
|
98
|
-
|
|
99
|
-
async function datasource(query) {
|
|
100
|
-
const {
|
|
101
|
-
data
|
|
102
|
-
} = await $http.get(apiUri, {
|
|
103
|
-
params: {
|
|
104
|
-
fields: 'permission/key,global,projects(id)',
|
|
105
|
-
query
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
return data;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
_config.datasource = _config.datasource || datasource;
|
|
112
|
-
const permissions = new Permissions(auth.auth, _config); // Override load to execute in $digest
|
|
113
|
-
|
|
114
|
-
permissions.load = function load() {
|
|
115
|
-
return $q.when(Permissions.prototype.load.call(this));
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
return permissions;
|
|
119
|
-
}];
|
|
120
|
-
});
|
|
121
|
-
/**
|
|
122
|
-
* @ngdoc directive
|
|
123
|
-
* @name permission
|
|
124
|
-
*
|
|
125
|
-
* @description
|
|
126
|
-
* The `permission` directive show or hide a portion of the DOM tree (HTML) depending
|
|
127
|
-
* on the logged in user permissions. If the user has listed permissions then the DOM tree
|
|
128
|
-
* is shown, otherwise it is hidden.
|
|
129
|
-
*
|
|
130
|
-
* @restrict A
|
|
131
|
-
* @element ANY
|
|
132
|
-
* @requires userPermissions
|
|
133
|
-
*/
|
|
134
|
-
|
|
135
|
-
angularModule.directive('rgPermission', ["userPermissions", "$interpolate", function rgPermissionDirective(userPermissions, $interpolate) {
|
|
136
|
-
return {
|
|
137
|
-
controller: ["$scope", "$element", "$attrs", function controller($scope, $element, $attrs) {
|
|
138
|
-
const element = $element[0]; //noinspection JSPotentiallyInvalidUsageOfThis
|
|
139
|
-
|
|
140
|
-
this.permitted = false;
|
|
141
|
-
element.classList.add('ring-permission-hide');
|
|
142
|
-
const permission = $interpolate($attrs.rgPermission)($scope);
|
|
143
|
-
const projectId = $attrs.hasOwnProperty('inGlobal') ? PermissionCache.GLOBAL_PROJECT_ID : $scope.$eval($attrs.inProject);
|
|
144
|
-
userPermissions.check(permission, projectId).then(permitted => {
|
|
145
|
-
this.permitted = permitted;
|
|
146
|
-
|
|
147
|
-
if (permitted) {
|
|
148
|
-
element.classList.remove('ring-permission-hide');
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
return permitted;
|
|
152
|
-
}).then(registerPermission($element));
|
|
153
|
-
}]
|
|
154
|
-
};
|
|
155
|
-
}]);
|
|
156
|
-
/**
|
|
157
|
-
* @ngdoc directive
|
|
158
|
-
* @name permissionIf
|
|
159
|
-
*
|
|
160
|
-
* @description
|
|
161
|
-
* The `permission` directive transcludes or not a portion of the DOM tree (HTML) depending
|
|
162
|
-
* on the logged in user permissions. If the user has listed permissions then the DOM tree
|
|
163
|
-
* is transcluded, otherwise it is not.
|
|
164
|
-
* @example
|
|
165
|
-
<example name="rgPermissionIf directive">
|
|
166
|
-
<file name="index.html">
|
|
167
|
-
<div rg-permission-if="project-read" in-project="0-0-0-0-0">
|
|
168
|
-
Is transcluded if user has permission 'read-project' in project 0-0-0-0-0.
|
|
169
|
-
</div>
|
|
170
|
-
<div rg-permission-if="project-read">
|
|
171
|
-
Is transcluded if user has permission 'read-project' at least in one project.
|
|
172
|
-
</div>
|
|
173
|
-
<div rg-permission-if="project-read" in-global>
|
|
174
|
-
Is transcluded if user has permission 'read-project' at project "global".
|
|
175
|
-
</div>
|
|
176
|
-
</file>
|
|
177
|
-
</example>
|
|
178
|
-
*
|
|
179
|
-
* @restrict A
|
|
180
|
-
* @element ANY
|
|
181
|
-
* @requires $animate
|
|
182
|
-
* @requires userPermissions
|
|
183
|
-
*/
|
|
184
|
-
|
|
185
|
-
angularModule.directive('rgPermissionIf', ["$animate", "userPermissions", "$interpolate", function rgPermissionIfDirective($animate, userPermissions, $interpolate) {
|
|
186
|
-
return {
|
|
187
|
-
transclude: 'element',
|
|
188
|
-
priority: 600,
|
|
189
|
-
terminal: true,
|
|
190
|
-
restrict: 'A',
|
|
191
|
-
// disable error about multiple transclude like in ngIf
|
|
192
|
-
$$tlb: true,
|
|
193
|
-
// eslint-disable-line angular/no-private-call
|
|
194
|
-
require: '^?rgSomePermissions',
|
|
195
|
-
link: function link(scope, iElement, iAttrs, somePermittedCtrl, $transclude) {
|
|
196
|
-
let block;
|
|
197
|
-
let childScope;
|
|
198
|
-
const projectId = iAttrs.hasOwnProperty('inGlobal') ? PermissionCache.GLOBAL_PROJECT_ID : scope.$eval(iAttrs.inProject);
|
|
199
|
-
const permission = $interpolate(iAttrs.rgPermissionIf)(scope);
|
|
200
|
-
userPermissions.check(permission, projectId).then(permitted => {
|
|
201
|
-
if (permitted) {
|
|
202
|
-
if (!childScope) {
|
|
203
|
-
childScope = scope.$new();
|
|
204
|
-
$transclude(childScope, clone => {
|
|
205
|
-
block = {
|
|
206
|
-
startNode: clone[0],
|
|
207
|
-
endNode: clone[clone.length++] = document.createComment(" end rgPermissionIf: ".concat(iAttrs.rgPermissionIf, " "))
|
|
208
|
-
};
|
|
209
|
-
$animate.enter(clone, iElement.parent(), iElement);
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
} else {
|
|
213
|
-
if (childScope) {
|
|
214
|
-
childScope.$destroy();
|
|
215
|
-
childScope = null;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
if (block) {
|
|
219
|
-
/* global getBlockElements: false */
|
|
220
|
-
$animate.leave(getBlockElements(block));
|
|
221
|
-
block = null;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}).then(registerPermission(iElement));
|
|
225
|
-
}
|
|
226
|
-
};
|
|
227
|
-
}]);
|
|
228
|
-
/**
|
|
229
|
-
* @ngdoc directive
|
|
230
|
-
* @name rgSomePermissions
|
|
231
|
-
*
|
|
232
|
-
* @description
|
|
233
|
-
* Binds left-value expression with a boolean value that is true when at least one permission of
|
|
234
|
-
* nested {@link permission} or {@link rgPermissionIf} directive is obtained by the logged in user.
|
|
235
|
-
*
|
|
236
|
-
* @scope
|
|
237
|
-
* @restrict A
|
|
238
|
-
* @element ANY
|
|
239
|
-
*/
|
|
240
|
-
|
|
241
|
-
angularModule.directive('rgSomePermissions', function rgSomePermissionsDirective() {
|
|
242
|
-
return {
|
|
243
|
-
scope: {
|
|
244
|
-
rgSomePermissions: '='
|
|
245
|
-
},
|
|
246
|
-
controller: ["$scope", function controller($scope) {
|
|
247
|
-
const permissions = [];
|
|
248
|
-
$scope.rgSomePermissions = false;
|
|
249
|
-
|
|
250
|
-
function checkPermissions() {
|
|
251
|
-
for (let i = permissions.length - 1; i >= 0; i--) {
|
|
252
|
-
if (permissions[i].permitted) {
|
|
253
|
-
$scope.rgSomePermissions = true;
|
|
254
|
-
return;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
$scope.rgSomePermissions = false;
|
|
259
|
-
} //noinspection JSPotentiallyInvalidUsageOfThis
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
this.registerPermission = () => {
|
|
263
|
-
const permission = {
|
|
264
|
-
permitted: false
|
|
265
|
-
};
|
|
266
|
-
permissions.push(permission);
|
|
267
|
-
return permitted => {
|
|
268
|
-
permission.permitted = permitted;
|
|
269
|
-
checkPermissions();
|
|
270
|
-
};
|
|
271
|
-
};
|
|
272
|
-
}]
|
|
273
|
-
};
|
|
274
|
-
});
|
|
275
|
-
var permissionsNg = angularModule.name;
|
|
276
|
-
|
|
277
|
-
export { permissionsNg as default };
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import angular from 'angular';
|
|
2
|
-
import debounce from 'just-debounce-it';
|
|
3
|
-
import createResizeDetector from 'element-resize-detector';
|
|
4
|
-
import { getDocumentScrollTop } from '../global/dom.js';
|
|
5
|
-
import '../_helpers/_rollupPluginBabelHelpers.js';
|
|
6
|
-
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
7
|
-
|
|
8
|
-
const resizeDetector = createResizeDetector();
|
|
9
|
-
const angularModule = angular.module('Ring.place-under', []);
|
|
10
|
-
angularModule.directive('rgPlaceUnder', // eslint-disable-next-line angular/di-unused
|
|
11
|
-
["$window", "getClosestElementWithCommonParent", "rgPlaceUnderHelper", function rgPlaceUnderDirective($window, getClosestElementWithCommonParent, rgPlaceUnderHelper) {
|
|
12
|
-
return {
|
|
13
|
-
restrict: 'A',
|
|
14
|
-
link: function link(scope, iElement, iAttrs) {
|
|
15
|
-
const element = iElement[0];
|
|
16
|
-
const synchronizer = rgPlaceUnderHelper.createPositionSynchronizer(element, iAttrs, scope);
|
|
17
|
-
|
|
18
|
-
function startSyncing(placeUnderSelector) {
|
|
19
|
-
if (placeUnderSelector) {
|
|
20
|
-
scope.$evalAsync(() => {
|
|
21
|
-
const syncWith = getClosestElementWithCommonParent(element, placeUnderSelector);
|
|
22
|
-
|
|
23
|
-
if (syncWith) {
|
|
24
|
-
synchronizer.syncPositionWith(syncWith);
|
|
25
|
-
} else {
|
|
26
|
-
throw new Error('rgPlaceUnder cannot find element to sync with.');
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
iAttrs.$observe('rgPlaceUnder', startSyncing);
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
}]);
|
|
36
|
-
angularModule.factory('getClosestElementWithCommonParent', function getClosestElementWithCommonParentFactory() {
|
|
37
|
-
return function getClosestElementWithCommonParent(currentElement, selector) {
|
|
38
|
-
const parent = currentElement.parentNode;
|
|
39
|
-
|
|
40
|
-
if (parent) {
|
|
41
|
-
return parent.querySelector(selector) || getClosestElementWithCommonParent(parent, selector);
|
|
42
|
-
} else {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
});
|
|
47
|
-
angularModule.factory('rgPlaceUnderHelper', ["$window", $window => {
|
|
48
|
-
const DEBOUNCE_INTERVAL = 10;
|
|
49
|
-
const AFTER_SCROLL_RECHECK_INTERVAL = 50;
|
|
50
|
-
const HEIGHT_CHECK_INTERVAL = 50;
|
|
51
|
-
return {
|
|
52
|
-
DEBOUNCE_INTERVAL,
|
|
53
|
-
AFTER_SCROLL_RECHECK_INTERVAL,
|
|
54
|
-
HEIGHT_CHECK_INTERVAL,
|
|
55
|
-
createPositionSynchronizer: (element, iAttrs, scope) => {
|
|
56
|
-
const topOffset = parseInt(iAttrs.placeTopOffset, 10) || 0;
|
|
57
|
-
const syncHeight = iAttrs.syncHeight;
|
|
58
|
-
let syncBottom = [];
|
|
59
|
-
let removeScrollListener = [];
|
|
60
|
-
|
|
61
|
-
if (iAttrs.syncBottom) {
|
|
62
|
-
syncBottom = iAttrs.syncBottom.split(',');
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
function waitForNonZeroHeight(elementToCheck) {
|
|
66
|
-
return new Promise(resolve => {
|
|
67
|
-
function checkElementHeight() {
|
|
68
|
-
if (elementToCheck.offsetHeight === 0) {
|
|
69
|
-
$window.setTimeout(checkElementHeight, HEIGHT_CHECK_INTERVAL);
|
|
70
|
-
} else {
|
|
71
|
-
resolve();
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
checkElementHeight();
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
function onScroll(syncElement) {
|
|
80
|
-
const documentScrollTop = getDocumentScrollTop();
|
|
81
|
-
const documentOffsetHeight = $window.document.documentElement && $window.document.documentElement.offsetHeight || $window.document.body.offsetHeight;
|
|
82
|
-
const syncedElementHeight = syncElement.offsetHeight;
|
|
83
|
-
const syncedElementOffsetTop = syncElement.getBoundingClientRect().top + documentScrollTop;
|
|
84
|
-
const bottom = syncedElementOffsetTop + syncedElementHeight;
|
|
85
|
-
const margin = Math.max(bottom - documentScrollTop, syncedElementHeight);
|
|
86
|
-
element.style.marginTop = "".concat(margin + topOffset, "px");
|
|
87
|
-
|
|
88
|
-
if (syncHeight) {
|
|
89
|
-
/**
|
|
90
|
-
* Decrease height by margin value to make scroll work properly
|
|
91
|
-
*/
|
|
92
|
-
let bottomOffset = 0;
|
|
93
|
-
|
|
94
|
-
if (syncBottom.length) {
|
|
95
|
-
for (let i = 0; i < syncBottom.length; i++) {
|
|
96
|
-
const syncBottomParams = syncBottom[i].split(';');
|
|
97
|
-
const elem = $window.document.querySelector(syncBottomParams[0]);
|
|
98
|
-
const extraMargin = syncBottomParams[1] ? parseInt(syncBottomParams[1], 10) : 0;
|
|
99
|
-
|
|
100
|
-
if (elem) {
|
|
101
|
-
const boundingRect = elem.getBoundingClientRect();
|
|
102
|
-
|
|
103
|
-
if (boundingRect.top === 0) {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
const marginTop = parseInt($window.getComputedStyle(elem).getPropertyValue('margin-top'), 10);
|
|
108
|
-
bottomOffset = documentOffsetHeight - boundingRect.top + marginTop + extraMargin;
|
|
109
|
-
|
|
110
|
-
if (bottomOffset < 0) {
|
|
111
|
-
bottomOffset = 0;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
element.style.height = "calc(100% - ".concat(parseInt(element.style.marginTop, 10) + bottomOffset, "px)");
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function removeScrollListeners() {
|
|
124
|
-
removeScrollListener.map(cb => cb());
|
|
125
|
-
removeScrollListener = [];
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
function syncPositionWith(syncElement) {
|
|
129
|
-
removeScrollListeners();
|
|
130
|
-
const afterScrollFinishRecheck = debounce(() => this.onScroll(syncElement), AFTER_SCROLL_RECHECK_INTERVAL);
|
|
131
|
-
const sidebarScrollListener = debounce(() => {
|
|
132
|
-
this.onScroll(syncElement);
|
|
133
|
-
afterScrollFinishRecheck();
|
|
134
|
-
}, DEBOUNCE_INTERVAL);
|
|
135
|
-
this.waitForNonZeroHeight(syncElement).then(sidebarScrollListener);
|
|
136
|
-
$window.addEventListener('scroll', sidebarScrollListener);
|
|
137
|
-
removeScrollListener.push(() => {
|
|
138
|
-
$window.removeEventListener('scroll', sidebarScrollListener);
|
|
139
|
-
});
|
|
140
|
-
removeScrollListener.push(scope.$watch('show', sidebarScrollListener));
|
|
141
|
-
removeScrollListener.push(scope.$on('rgPlaceUnder:sync', sidebarScrollListener));
|
|
142
|
-
const elementToHeightListening = iAttrs.listenToHeightChange ? $window.document.querySelector(iAttrs.listenToHeightChange) : $window.document.body;
|
|
143
|
-
resizeDetector.listenTo(elementToHeightListening, sidebarScrollListener);
|
|
144
|
-
removeScrollListener.push(() => resizeDetector.removeAllListeners(elementToHeightListening));
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
scope.$on('$destroy', removeScrollListeners);
|
|
148
|
-
return {
|
|
149
|
-
waitForNonZeroHeight,
|
|
150
|
-
onScroll,
|
|
151
|
-
syncPositionWith
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
}]);
|
|
156
|
-
var PlaceUnder = angularModule.name;
|
|
157
|
-
|
|
158
|
-
export { PlaceUnder as default };
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
const Directions = {
|
|
2
|
-
BOTTOM_RIGHT: 'BOTTOM_RIGHT',
|
|
3
|
-
BOTTOM_LEFT: 'BOTTOM_LEFT',
|
|
4
|
-
BOTTOM_CENTER: 'BOTTOM_CENTER',
|
|
5
|
-
TOP_LEFT: 'TOP_LEFT',
|
|
6
|
-
TOP_RIGHT: 'TOP_RIGHT',
|
|
7
|
-
TOP_CENTER: 'TOP_CENTER',
|
|
8
|
-
RIGHT_TOP: 'RIGHT_TOP',
|
|
9
|
-
RIGHT_BOTTOM: 'RIGHT_BOTTOM',
|
|
10
|
-
RIGHT_CENTER: 'RIGHT_CENTER',
|
|
11
|
-
LEFT_TOP: 'LEFT_TOP',
|
|
12
|
-
LEFT_BOTTOM: 'LEFT_BOTTOM',
|
|
13
|
-
LEFT_CENTER: 'LEFT_CENTER'
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* When positioning a popup, directions will be tried in the listed order.
|
|
17
|
-
* @type {Array.<string>}
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
const DEFAULT_DIRECTIONS = [Directions.BOTTOM_RIGHT, Directions.BOTTOM_LEFT, Directions.TOP_LEFT, Directions.TOP_RIGHT, Directions.RIGHT_TOP, Directions.RIGHT_BOTTOM, Directions.LEFT_TOP, Directions.LEFT_BOTTOM];
|
|
21
|
-
/**
|
|
22
|
-
* @enum {number}
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
const Dimension = {
|
|
26
|
-
MARGIN: 16,
|
|
27
|
-
BORDER_WIDTH: 1
|
|
28
|
-
};
|
|
29
|
-
const MinWidth = {
|
|
30
|
-
TARGET: -1
|
|
31
|
-
};
|
|
32
|
-
const MaxHeight = {
|
|
33
|
-
SCREEN: -1
|
|
34
|
-
};
|
|
35
|
-
const Display = {
|
|
36
|
-
HIDDEN: 0,
|
|
37
|
-
SHOWING: 1,
|
|
38
|
-
SHOWN: 2
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export { DEFAULT_DIRECTIONS, Dimension, Directions, Display, MaxHeight, MinWidth };
|