@jetbrains/ring-ui 4.1.1 → 4.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (314) hide show
  1. package/dist/_helpers/_rollupPluginBabelHelpers.js +34 -0
  2. package/dist/_helpers/anchor.js +32 -0
  3. package/dist/_helpers/badge.js +3 -0
  4. package/dist/_helpers/button-group.js +3 -0
  5. package/dist/_helpers/button-set.js +3 -0
  6. package/dist/_helpers/button-toolbar.js +3 -0
  7. package/dist/_helpers/button__classes.js +39 -0
  8. package/dist/_helpers/card.js +75 -0
  9. package/dist/_helpers/checkbox.js +3 -0
  10. package/dist/_helpers/date-picker.js +3 -0
  11. package/dist/_helpers/dialog__body-scroll-preventer.js +57 -0
  12. package/dist/_helpers/error-message.js +3 -0
  13. package/dist/_helpers/footer.js +121 -0
  14. package/dist/_helpers/grid.js +3 -0
  15. package/dist/_helpers/group.js +3 -0
  16. package/dist/_helpers/header.js +3 -0
  17. package/dist/_helpers/icon.js +3 -0
  18. package/dist/_helpers/inject-styles.js +22 -0
  19. package/dist/_helpers/input.js +3 -0
  20. package/dist/_helpers/island.js +3 -0
  21. package/dist/_helpers/link.js +3 -0
  22. package/dist/_helpers/list.js +3 -0
  23. package/dist/_helpers/loader-screen.js +3 -0
  24. package/dist/_helpers/panel.js +3 -0
  25. package/dist/_helpers/query-assist__suggestions.js +95 -0
  26. package/dist/_helpers/radio.js +3 -0
  27. package/dist/_helpers/select__filter.js +76 -0
  28. package/dist/_helpers/services-link.js +40 -0
  29. package/dist/_helpers/sidebar.js +125 -0
  30. package/dist/_helpers/table.js +3 -0
  31. package/dist/_helpers/tabs.js +3 -0
  32. package/dist/_helpers/title.js +99 -0
  33. package/dist/alert/alert.js +260 -0
  34. package/dist/alert/container.js +48 -0
  35. package/dist/alert-service/alert-service.js +170 -0
  36. package/dist/analytics/analytics.js +116 -0
  37. package/dist/analytics/analytics__custom-plugin.js +127 -0
  38. package/dist/analytics/analytics__fus-plugin.js +101 -0
  39. package/dist/analytics/analytics__ga-plugin.js +66 -0
  40. package/dist/analytics/analytics__plugin-utils.js +79 -0
  41. package/dist/analytics-ng/analytics-ng.js +94 -0
  42. package/dist/auth/auth.js +93 -0
  43. package/dist/auth/auth__core.js +1025 -0
  44. package/dist/auth/background-flow.js +122 -0
  45. package/dist/auth/down-notification.js +114 -0
  46. package/dist/auth/iframe-flow.js +150 -0
  47. package/dist/auth/landing-entry.js +5 -0
  48. package/dist/auth/landing.js +87 -0
  49. package/dist/auth/request-builder.js +75 -0
  50. package/dist/auth/response-parser.js +117 -0
  51. package/dist/auth/storage.js +280 -0
  52. package/dist/auth/token-validator.js +176 -0
  53. package/dist/auth/window-flow.js +133 -0
  54. package/dist/auth-dialog/auth-dialog.js +134 -0
  55. package/dist/auth-dialog-service/auth-dialog-service.js +68 -0
  56. package/dist/auth-ng/auth-ng.js +203 -0
  57. package/dist/auth-ng/auth-ng.mock.js +33 -0
  58. package/dist/autofocus-ng/autofocus-ng.js +50 -0
  59. package/dist/avatar/avatar-example-datauri.js +26 -0
  60. package/dist/avatar/avatar.js +161 -0
  61. package/dist/avatar/fallback-avatar.js +141 -0
  62. package/dist/avatar-editor-ng/avatar-editor-ng.js +164 -0
  63. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +30 -0
  64. package/dist/avatar-ng/avatar-ng.js +18 -0
  65. package/dist/badge/badge.js +50 -0
  66. package/dist/badge-ng/badge-ng.js +16 -0
  67. package/dist/breadcrumb-ng/breadcrumb-ng.js +61 -0
  68. package/dist/button/button.js +123 -0
  69. package/dist/button/button__classes.js +5 -0
  70. package/dist/button-group/button-group.js +30 -0
  71. package/dist/button-group/caption.js +24 -0
  72. package/dist/button-group-ng/button-group-ng.js +38 -0
  73. package/dist/button-ng/button-ng.js +223 -0
  74. package/dist/button-set/button-set.js +26 -0
  75. package/dist/button-set-ng/button-set-ng.js +19 -0
  76. package/dist/button-toolbar/button-toolbar.js +29 -0
  77. package/dist/button-toolbar-ng/button-toolbar-ng.js +23 -0
  78. package/dist/caret/caret.js +264 -0
  79. package/dist/checkbox/checkbox.js +108 -0
  80. package/dist/checkbox-ng/checkbox-ng.js +55 -0
  81. package/dist/code/code.js +136 -0
  82. package/dist/compiler-ng/compiler-ng.js +53 -0
  83. package/dist/confirm/confirm.js +125 -0
  84. package/dist/confirm-ng/confirm-ng.js +66 -0
  85. package/dist/confirm-service/confirm-service.js +114 -0
  86. package/dist/content-layout/content-layout.js +65 -0
  87. package/dist/content-layout/sidebar.js +6 -0
  88. package/dist/contenteditable/contenteditable.js +78 -0
  89. package/dist/data-list/data-list.js +206 -0
  90. package/dist/data-list/data-list.mock.js +190 -0
  91. package/dist/data-list/item.js +227 -0
  92. package/dist/data-list/selection.js +101 -0
  93. package/dist/data-list/title.js +18 -0
  94. package/dist/data-list-ng/data-list-ng.js +59 -0
  95. package/dist/date-picker/consts.js +69 -0
  96. package/dist/date-picker/date-input.js +173 -0
  97. package/dist/date-picker/date-picker.js +365 -0
  98. package/dist/date-picker/date-popup.js +482 -0
  99. package/dist/date-picker/day.js +119 -0
  100. package/dist/date-picker/formats.js +3 -0
  101. package/dist/date-picker/month-names.js +99 -0
  102. package/dist/date-picker/month-slider.js +83 -0
  103. package/dist/date-picker/month.js +54 -0
  104. package/dist/date-picker/months.js +121 -0
  105. package/dist/date-picker/weekdays.js +32 -0
  106. package/dist/date-picker/years.js +109 -0
  107. package/dist/dialog/dialog.js +200 -0
  108. package/dist/dialog/dialog__body-scroll-preventer.js +2 -0
  109. package/dist/dialog-ng/dialog-ng.js +601 -0
  110. package/dist/dialog-ng/dialog-ng__template.js +71 -0
  111. package/dist/docked-panel-ng/docked-panel-ng.js +170 -0
  112. package/dist/dropdown/anchor.js +17 -0
  113. package/dist/dropdown/dropdown.js +234 -0
  114. package/dist/dropdown-menu/dropdown-menu.js +175 -0
  115. package/dist/error-bubble/error-bubble.js +57 -0
  116. package/dist/error-message/error-message.js +55 -0
  117. package/dist/error-message-ng/error-message-ng.js +53 -0
  118. package/dist/footer/footer.js +11 -0
  119. package/dist/footer-ng/footer-ng.js +75 -0
  120. package/dist/form-ng/form-ng.js +169 -0
  121. package/dist/global/angular-component-factory.js +82 -0
  122. package/dist/global/compose.js +9 -0
  123. package/dist/global/composeRefs.js +15 -0
  124. package/dist/global/conic-gradient.js +35 -0
  125. package/dist/global/create-stateful-context.js +54 -0
  126. package/dist/global/data-tests.js +22 -0
  127. package/dist/global/dom.js +124 -0
  128. package/dist/global/focus-sensor-hoc.js +145 -0
  129. package/dist/global/fuzzy-highlight.js +67 -0
  130. package/dist/global/get-event-key.js +111 -0
  131. package/dist/global/get-uid.js +15 -0
  132. package/dist/global/inject-styles.js +17 -0
  133. package/dist/global/linear-function.js +17 -0
  134. package/dist/global/listeners.js +42 -0
  135. package/dist/global/memoize.js +18 -0
  136. package/dist/global/normalize-indent.js +28 -0
  137. package/dist/global/promise-with-timeout.js +13 -0
  138. package/dist/global/radial-gradient-mask.js +49 -0
  139. package/dist/global/react-dom-renderer.js +45 -0
  140. package/dist/global/rerender-hoc.js +51 -0
  141. package/dist/global/ring-angular-component.js +24 -0
  142. package/dist/global/schedule-raf.js +31 -0
  143. package/dist/global/sniffer.js +6 -0
  144. package/dist/global/supports-css.js +20 -0
  145. package/dist/global/theme.js +54 -0
  146. package/dist/global/trivial-template-tag.js +15 -0
  147. package/dist/global/url.js +163 -0
  148. package/dist/global/variables_dark.js +57 -0
  149. package/dist/grid/col.js +60 -0
  150. package/dist/grid/grid.js +33 -0
  151. package/dist/grid/row.js +64 -0
  152. package/dist/group/group.js +31 -0
  153. package/dist/group-ng/group-ng.js +11 -0
  154. package/dist/header/header.js +147 -0
  155. package/dist/header/logo.js +38 -0
  156. package/dist/header/profile.js +217 -0
  157. package/dist/header/services-link.js +11 -0
  158. package/dist/header/services.js +136 -0
  159. package/dist/header/smart-profile.js +230 -0
  160. package/dist/header/smart-services.js +160 -0
  161. package/dist/header/tray-icon.js +45 -0
  162. package/dist/header/tray.js +31 -0
  163. package/dist/heading/heading.js +73 -0
  164. package/dist/http/http.js +216 -0
  165. package/dist/http/http.mock.js +65 -0
  166. package/dist/hub-source/hub-source.js +130 -0
  167. package/dist/hub-source/hub-source__user.js +28 -0
  168. package/dist/hub-source/hub-source__users-groups.js +62 -0
  169. package/dist/icon/icon.js +105 -0
  170. package/dist/icon/icon__constants.js +33 -0
  171. package/dist/icon/icon__svg.js +81 -0
  172. package/dist/icon/index.js +10 -0
  173. package/dist/icon-ng/icon-ng.js +89 -0
  174. package/dist/input/input.js +228 -0
  175. package/dist/input-ng/input-ng.js +166 -0
  176. package/dist/island/adaptive-island-hoc.js +47 -0
  177. package/dist/island/content.js +156 -0
  178. package/dist/island/header.js +83 -0
  179. package/dist/island/island.js +50 -0
  180. package/dist/island-legacy/content-legacy.js +26 -0
  181. package/dist/island-legacy/header-legacy.js +28 -0
  182. package/dist/island-legacy/island-legacy.js +28 -0
  183. package/dist/island-ng/island-content-ng.js +56 -0
  184. package/dist/island-ng/island-header-ng.js +32 -0
  185. package/dist/island-ng/island-ng-class-fixer.js +9 -0
  186. package/dist/island-ng/island-ng.js +31 -0
  187. package/dist/link/clickableLink.js +63 -0
  188. package/dist/link/link.js +114 -0
  189. package/dist/link-ng/link-ng.js +25 -0
  190. package/dist/list/consts.js +26 -0
  191. package/dist/list/list.js +812 -0
  192. package/dist/list/list__custom.js +85 -0
  193. package/dist/list/list__hint.js +26 -0
  194. package/dist/list/list__item.js +204 -0
  195. package/dist/list/list__link.js +64 -0
  196. package/dist/list/list__separator.js +30 -0
  197. package/dist/list/list__title.js +39 -0
  198. package/dist/list/list__users-groups-source.js +128 -0
  199. package/dist/loader/loader.js +70 -0
  200. package/dist/loader/loader__core.js +272 -0
  201. package/dist/loader-inline/inject-styles.js +11 -0
  202. package/dist/loader-inline/loader-inline.js +56 -0
  203. package/dist/loader-inline-ng/loader-inline-ng.js +42 -0
  204. package/dist/loader-ng/loader-ng.js +43 -0
  205. package/dist/loader-screen/loader-screen.js +43 -0
  206. package/dist/loader-screen-ng/loader-screen-ng.js +99 -0
  207. package/dist/login-dialog/login-dialog.js +186 -0
  208. package/dist/login-dialog/service.js +69 -0
  209. package/dist/markdown/code.js +30 -0
  210. package/dist/markdown/heading.js +23 -0
  211. package/dist/markdown/link.js +30 -0
  212. package/dist/markdown/markdown.js +73 -0
  213. package/dist/message/message.js +233 -0
  214. package/dist/message-bundle-ng/message-bundle-ng.js +111 -0
  215. package/dist/old-browsers-message/old-browsers-message.js +100 -0
  216. package/dist/old-browsers-message/old-browsers-message__stop.js +4 -0
  217. package/dist/old-browsers-message/white-list.js +33 -0
  218. package/dist/pager/pager.js +361 -0
  219. package/dist/pager-ng/pager-ng.js +96 -0
  220. package/dist/panel/panel.js +31 -0
  221. package/dist/panel-ng/panel-ng.js +16 -0
  222. package/dist/permissions/permissions.js +200 -0
  223. package/dist/permissions/permissions__cache.js +272 -0
  224. package/dist/permissions-ng/permissions-ng.js +274 -0
  225. package/dist/place-under-ng/place-under-ng.js +157 -0
  226. package/dist/popup/popup.consts.js +41 -0
  227. package/dist/popup/popup.js +389 -0
  228. package/dist/popup/popup.target.js +26 -0
  229. package/dist/popup/position.js +279 -0
  230. package/dist/popup-menu/popup-menu.js +115 -0
  231. package/dist/progress-bar/progress-bar.js +113 -0
  232. package/dist/progress-bar-ng/progress-bar-ng.js +15 -0
  233. package/dist/promised-click-ng/promised-click-ng.js +126 -0
  234. package/dist/proxy-attrs/proxy-attrs.js +19 -0
  235. package/dist/query-assist/query-assist.js +1092 -0
  236. package/dist/query-assist/query-assist__suggestions.js +47 -0
  237. package/dist/query-assist-ng/query-assist-ng.js +82 -0
  238. package/dist/radio/radio.js +41 -0
  239. package/dist/radio/radio__item.js +77 -0
  240. package/dist/radio-ng/radio-ng.js +63 -0
  241. package/dist/save-field-ng/save-field-ng.js +335 -0
  242. package/dist/save-field-ng/save-field-ng__template.js +34 -0
  243. package/dist/select/select.js +1336 -0
  244. package/dist/select/select__filter.js +54 -0
  245. package/dist/select/select__popup.js +546 -0
  246. package/dist/select-ng/select-ng.js +621 -0
  247. package/dist/select-ng/select-ng__lazy.js +150 -0
  248. package/dist/select-ng/select-ng__options.js +145 -0
  249. package/dist/shortcuts/core.js +245 -0
  250. package/dist/shortcuts/shortcut-title.js +51 -0
  251. package/dist/shortcuts/shortcuts-hoc.js +41 -0
  252. package/dist/shortcuts/shortcuts.js +72 -0
  253. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +120 -0
  254. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +50 -0
  255. package/dist/shortcuts-ng/shortcuts-ng.js +261 -0
  256. package/dist/sidebar-ng/sidebar-ng.js +111 -0
  257. package/dist/sidebar-ng/sidebar-ng__button-template.js +20 -0
  258. package/dist/sidebar-ng/sidebar-ng__template.js +12 -0
  259. package/dist/storage/storage.js +56 -0
  260. package/dist/storage/storage__fallback.js +214 -0
  261. package/dist/storage/storage__local.js +151 -0
  262. package/dist/style.css +1 -0
  263. package/dist/tab-trap/tab-trap.js +176 -0
  264. package/dist/table/cell.js +25 -0
  265. package/dist/table/disable-hover-hoc.js +53 -0
  266. package/dist/table/header-cell.js +90 -0
  267. package/dist/table/header.js +191 -0
  268. package/dist/table/multitable.js +140 -0
  269. package/dist/table/row-with-focus-sensor.js +81 -0
  270. package/dist/table/row.js +271 -0
  271. package/dist/table/selection-adapter.js +14 -0
  272. package/dist/table/selection-shortcuts-hoc.js +214 -0
  273. package/dist/table/selection.js +221 -0
  274. package/dist/table/smart-table.js +119 -0
  275. package/dist/table/table.js +404 -0
  276. package/dist/table-legacy-ng/table-legacy-ng.js +501 -0
  277. package/dist/table-legacy-ng/table-legacy-ng__pager.js +122 -0
  278. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +123 -0
  279. package/dist/table-legacy-ng/table-legacy-ng__selection.js +179 -0
  280. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +56 -0
  281. package/dist/table-ng/smart-table-ng.js +65 -0
  282. package/dist/table-ng/table-ng.js +64 -0
  283. package/dist/tabs/collapsible-more.js +196 -0
  284. package/dist/tabs/collapsible-tab.js +90 -0
  285. package/dist/tabs/collapsible-tabs.js +360 -0
  286. package/dist/tabs/custom-item.js +13 -0
  287. package/dist/tabs/dumb-tabs.js +161 -0
  288. package/dist/tabs/smart-tabs.js +104 -0
  289. package/dist/tabs/tab-link.js +41 -0
  290. package/dist/tabs/tab.js +32 -0
  291. package/dist/tabs/tabs.js +69 -0
  292. package/dist/tabs-ng/tabs-ng.js +193 -0
  293. package/dist/tabs-ng/tabs-ng__template.js +40 -0
  294. package/dist/tag/tag.js +196 -0
  295. package/dist/tags-input/tags-input.js +478 -0
  296. package/dist/tags-input-ng/tags-input-ng.js +89 -0
  297. package/dist/tags-list/tags-list.js +93 -0
  298. package/dist/template-ng/template-ng.js +70 -0
  299. package/dist/text/text.js +36 -0
  300. package/dist/theme-ng/theme-ng.js +44 -0
  301. package/dist/title-ng/title-ng.js +114 -0
  302. package/dist/toggle/toggle.js +77 -0
  303. package/dist/toggle-ng/toggle-ng.js +16 -0
  304. package/dist/tooltip/tooltip.js +207 -0
  305. package/dist/tooltip-ng/tooltip-ng.js +98 -0
  306. package/dist/user-agreement/service.js +409 -0
  307. package/dist/user-agreement/toolbox.eula.js +162 -0
  308. package/dist/user-agreement/user-agreement.js +167 -0
  309. package/dist/user-card/card.js +17 -0
  310. package/dist/user-card/smart-user-card-tooltip.js +112 -0
  311. package/dist/user-card/tooltip.js +93 -0
  312. package/dist/user-card/user-card.js +49 -0
  313. package/dist/user-card-ng/user-card-ng.js +59 -0
  314. package/package.json +2 -2
@@ -0,0 +1,130 @@
1
+ import { _ as _defineProperty } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+
3
+ const defaultOptions = {
4
+ searchMax: 20,
5
+ searchSideThreshold: 100,
6
+ queryFormatter: query => `${query} or ${query}*`
7
+ };
8
+ /**
9
+ * HubSource is designed to speed up search requests for small installations.
10
+ * If there are less than "searchSideThreshold" items, it uses client-side filtering
11
+ * of cached results to greatly increase search speed. Useful for completion and
12
+ * select data source.
13
+ */
14
+
15
+ class HubSource {
16
+ constructor(auth, relativeUrl, options) {
17
+ this.http = auth.http;
18
+ this.relativeUrl = relativeUrl;
19
+ this.options = Object.assign({}, defaultOptions, options);
20
+ this.storedData = null;
21
+ this.isClientSideSearch = null;
22
+ this.filterFn = null;
23
+ }
24
+
25
+ makeRequest(queryParams) {
26
+ return this.http.get(this.relativeUrl, {
27
+ query: queryParams
28
+ });
29
+ }
30
+
31
+ async makeCachedRequest(params) {
32
+ if (this.storedData) {
33
+ return this.storedData;
34
+ }
35
+
36
+ const res = await this.makeRequest(params);
37
+ this.storedData = res;
38
+ return res;
39
+ }
40
+
41
+ static mergeParams(params, toMerge) {
42
+ return Object.assign({}, params, toMerge);
43
+ }
44
+
45
+ checkIsClientSideSearch(res) {
46
+ return res.total <= this.options.searchSideThreshold;
47
+ }
48
+
49
+ getDefaultFilterFn(query) {
50
+ if (!query) {
51
+ return () => true;
52
+ }
53
+
54
+ return it => it.name.toLowerCase().indexOf(query.toLowerCase()) !== -1;
55
+ }
56
+
57
+ formatQuery(query) {
58
+ return query ? this.options.queryFormatter(query) : '';
59
+ }
60
+
61
+ static validateInputParams(params) {
62
+ if (params.top) {
63
+ throw new Error('HubSource: params.top should not be filled, configure "options.searchMax" instead');
64
+ }
65
+
66
+ if (params.query) {
67
+ throw new Error('HubSource: params.query should not be filled, configure "options.queryFormatter" instead');
68
+ }
69
+ }
70
+
71
+ processResults(res) {
72
+ const items = res[this.relativeUrl] || [];
73
+
74
+ if (this.isClientSideSearch) {
75
+ return items.filter(it => this.filterFn(it)).slice(0, this.options.searchMax);
76
+ }
77
+
78
+ return items;
79
+ }
80
+
81
+ async sideDetectionRequest(params, query) {
82
+ const res = await this.makeCachedRequest(HubSource.mergeParams(params, {
83
+ $top: this.options.searchSideThreshold
84
+ }));
85
+ this.isClientSideSearch = this.checkIsClientSideSearch(res);
86
+
87
+ if (!this.isClientSideSearch) {
88
+ return this.doServerSideSearch(params, query);
89
+ }
90
+
91
+ return res;
92
+ }
93
+
94
+ doClientSideSearch(params) {
95
+ return this.makeCachedRequest(HubSource.mergeParams(params, {
96
+ $top: this.constructor.TOP_ALL
97
+ }));
98
+ }
99
+
100
+ doServerSideSearch(params, query) {
101
+ return this.makeRequest(HubSource.mergeParams(params, {
102
+ query: this.formatQuery(query),
103
+ $top: this.options.searchMax
104
+ }));
105
+ }
106
+
107
+ getValueFromSuitableSource(query, params) {
108
+ if (this.isClientSideSearch === null) {
109
+ return this.sideDetectionRequest(params, query);
110
+ }
111
+
112
+ if (this.isClientSideSearch) {
113
+ return this.doClientSideSearch(params);
114
+ }
115
+
116
+ return this.doServerSideSearch(params, query);
117
+ }
118
+
119
+ async get(query, params, filterFn) {
120
+ HubSource.validateInputParams(params);
121
+ this.filterFn = filterFn || this.getDefaultFilterFn(query);
122
+ const res = await this.getValueFromSuitableSource(query, params);
123
+ return this.processResults(res);
124
+ }
125
+
126
+ }
127
+
128
+ _defineProperty(HubSource, "TOP_ALL", -1);
129
+
130
+ export { HubSource as default };
@@ -0,0 +1,28 @@
1
+ import HTTP from '../http/http.js';
2
+ import '../_helpers/_rollupPluginBabelHelpers.js';
3
+ import 'es6-error';
4
+ import '../global/url.js';
5
+
6
+ const DEFAULT_FIELDS = 'id,name,login,banned,banReason,profile(email/email,avatar/url)';
7
+ function convertUserForCard(hubUser) {
8
+ let serverUri = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
9
+ return {
10
+ name: hubUser.name,
11
+ login: hubUser.login,
12
+ banned: hubUser.banned,
13
+ banReason: hubUser.banReason,
14
+ email: hubUser.profile.email && hubUser.profile.email.email,
15
+ avatarUrl: hubUser.profile.avatar.url,
16
+ href: `${serverUri}users/${hubUser.id}`
17
+ };
18
+ }
19
+ function createHubUserCardSource(auth, userId) {
20
+ let fields = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : DEFAULT_FIELDS;
21
+ const http = new HTTP(auth);
22
+ return async function getHubUser() {
23
+ const hubUser = await http.get(`${auth.config.serverUri}api/rest/users/${userId}?fields=${fields}`);
24
+ return convertUserForCard(hubUser, auth.config.serverUri);
25
+ };
26
+ }
27
+
28
+ export { convertUserForCard, createHubUserCardSource };
@@ -0,0 +1,62 @@
1
+ import HubSource from './hub-source.js';
2
+ import '../_helpers/_rollupPluginBabelHelpers.js';
3
+
4
+ const defaultOptions = {
5
+ searchMax: 20,
6
+ searchSideThreshold: 200
7
+ };
8
+ class HubSourceUsersGroups {
9
+ constructor(auth, options) {
10
+ this.auth = auth;
11
+ this.options = Object.assign({}, defaultOptions, options);
12
+ this.usersSource = new HubSource(auth, 'users', {
13
+ searchMax: this.options.searchMax,
14
+ searchSideThreshold: this.options.searchSideThreshold,
15
+ queryFormatter: query => `nameStartsWith: ${HubSourceUsersGroups.wrapMultiwordQuery(query)} or loginStartsWith: ${HubSourceUsersGroups.wrapMultiwordQuery(query)}`
16
+ });
17
+ this.groupsSource = new HubSource(auth, 'usergroups', {
18
+ searchMax: this.options.searchMax,
19
+ searchSideThreshold: this.options.searchSideThreshold
20
+ });
21
+ }
22
+
23
+ static wrapMultiwordQuery(query) {
24
+ if (query && query.indexOf(' ') !== -1) {
25
+ return `{${query}}`;
26
+ }
27
+
28
+ return query;
29
+ }
30
+
31
+ createUsersFilterFn(query) {
32
+ if (!query) {
33
+ return () => true;
34
+ }
35
+
36
+ const normalizedQuery = query.toLowerCase();
37
+ return it => it.name.toLowerCase().indexOf(normalizedQuery) !== -1 || it.login.toLowerCase().indexOf(normalizedQuery) !== -1;
38
+ }
39
+
40
+ getUsers() {
41
+ let query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
42
+ return this.usersSource.get(query, {
43
+ fields: 'id,name,login,total,profile/avatar/url',
44
+ orderBy: 'name'
45
+ }, this.createUsersFilterFn(query));
46
+ }
47
+
48
+ getGroups() {
49
+ let query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
50
+ return this.groupsSource.get(query, {
51
+ fields: 'id,name,total,userCount,iconUrl',
52
+ orderBy: 'name'
53
+ });
54
+ }
55
+
56
+ getUserAndGroups(query) {
57
+ return Promise.all([this.getUsers(query), this.getGroups(query)]);
58
+ }
59
+
60
+ }
61
+
62
+ export { HubSourceUsersGroups as default };
@@ -0,0 +1,105 @@
1
+ import { _ as _defineProperty, a as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import React, { PureComponent } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import classNames from 'classnames';
5
+ import deprecate from 'util-deprecate';
6
+ import { Color, Size } from './icon__constants.js';
7
+ export { Size } from './icon__constants.js';
8
+ import { m as modules_29747b80 } from '../_helpers/icon.js';
9
+ import IconSVG from './icon__svg.js';
10
+ import '../global/memoize.js';
11
+
12
+ const warnSize = deprecate(() => {}, `\`size\`, \`width\` and \`height\` props are not recommended to use in Ring UI \`Icon\` component. The intrinsic sizes of SVG icon (\`width\` and \`height\` SVG attributes) are used instead.
13
+
14
+ We strongly recommend to use icons handcrafted for particular sizes. If your icon doesn't exist in the desired size, please ask your designer to draw one. "Responsive" checkmark should be unchecked when exporting icon.'`);
15
+ class Icon extends PureComponent {
16
+ warnSize() {
17
+ if (this.props.suppressSizeWarning) {
18
+ return;
19
+ }
20
+
21
+ warnSize();
22
+ }
23
+
24
+ getStyle() {
25
+ const {
26
+ size,
27
+ width,
28
+ height
29
+ } = this.props;
30
+
31
+ if (width || height) {
32
+ this.warnSize();
33
+ return {
34
+ width,
35
+ height
36
+ };
37
+ }
38
+
39
+ if (size) {
40
+ this.warnSize();
41
+ return {
42
+ width: size,
43
+ height: size
44
+ };
45
+ }
46
+
47
+ return null;
48
+ }
49
+
50
+ render() {
51
+ const {
52
+ className,
53
+ size,
54
+ color,
55
+ loading,
56
+ glyph: Glyph,
57
+ width,
58
+ height,
59
+ suppressSizeWarning,
60
+ ...restProps
61
+ } = this.props;
62
+
63
+ if (!Glyph) {
64
+ return null;
65
+ }
66
+
67
+ const classes = classNames(modules_29747b80.icon, {
68
+ [modules_29747b80[color]]: !!color,
69
+ [modules_29747b80.loading]: loading
70
+ }, className);
71
+ return /*#__PURE__*/React.createElement("span", _extends({}, restProps, {
72
+ className: classes
73
+ }), typeof Glyph === 'string' ? /*#__PURE__*/React.createElement(IconSVG, {
74
+ src: Glyph,
75
+ style: this.getStyle()
76
+ }) : /*#__PURE__*/React.createElement(Glyph, {
77
+ className: modules_29747b80.glyph,
78
+ style: this.getStyle()
79
+ }));
80
+ }
81
+
82
+ }
83
+
84
+ _defineProperty(Icon, "propTypes", {
85
+ className: PropTypes.string,
86
+ color: PropTypes.string,
87
+ glyph: PropTypes.oneOfType([PropTypes.string, PropTypes.elementType]).isRequired,
88
+ height: PropTypes.number,
89
+ size: PropTypes.number,
90
+ width: PropTypes.number,
91
+ loading: PropTypes.bool,
92
+ suppressSizeWarning: PropTypes.bool
93
+ });
94
+
95
+ _defineProperty(Icon, "defaultProps", {
96
+ className: '',
97
+ color: Color.DEFAULT,
98
+ glyph: ''
99
+ });
100
+
101
+ _defineProperty(Icon, "Color", Color);
102
+
103
+ _defineProperty(Icon, "Size", Size);
104
+
105
+ export { Icon as default };
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Commonly used icon colors.
3
+ * @enum {string}
4
+ */
5
+ const Color = {
6
+ BLUE: 'blue',
7
+ DEFAULT: '',
8
+ GRAY: 'gray',
9
+ GREEN: 'green',
10
+ MAGENTA: 'magenta',
11
+ RED: 'red',
12
+ WHITE: 'white'
13
+ };
14
+ /**
15
+ * @enum {number}
16
+ */
17
+
18
+ const Size = {
19
+ Size12: 12,
20
+ Size14: 14,
21
+ Size16: 16,
22
+ Size18: 18,
23
+ Size20: 20,
24
+ Size24: 24,
25
+ Size32: 32,
26
+ Size40: 40,
27
+ Size48: 48,
28
+ Size64: 64,
29
+ Size96: 96,
30
+ Size128: 128
31
+ };
32
+
33
+ export { Color, Size };
@@ -0,0 +1,81 @@
1
+ import { a as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import React, { memo } from 'react';
3
+ import classNames from 'classnames';
4
+ import PropTypes from 'prop-types';
5
+ import memoize from '../global/memoize.js';
6
+ import { m as modules_29747b80 } from '../_helpers/icon.js';
7
+
8
+ function convertReactSVGDOMProperty(str) {
9
+ return str.replace(/[-|:]([a-z])/g, g => g[1].toUpperCase());
10
+ }
11
+
12
+ function serializeAttrs(map) {
13
+ const res = {};
14
+
15
+ for (let i = 0; i < map.length; i++) {
16
+ const key = map[i].name;
17
+ let prop = key;
18
+
19
+ if (key === 'class') {
20
+ prop = 'className';
21
+ } else if (!key.startsWith('data-')) {
22
+ prop = convertReactSVGDOMProperty(key);
23
+ }
24
+
25
+ res[prop] = map[i].value;
26
+ }
27
+
28
+ return res;
29
+ }
30
+
31
+ function extractSVGProps(svgNode) {
32
+ const map = svgNode.attributes;
33
+ return map.length > 0 ? serializeAttrs(map) : null;
34
+ }
35
+
36
+ const getSVGFromSource = memoize(src => {
37
+ const svgContainer = document.createElement('div');
38
+ svgContainer.innerHTML = src;
39
+ const svg = svgContainer.firstElementChild;
40
+ svg.remove ? svg.remove() : svgContainer.removeChild(svg);
41
+ return {
42
+ props: extractSVGProps(svg),
43
+ html: svg.innerHTML
44
+ };
45
+ });
46
+
47
+ function isCompatibilityMode(iconSrc) {
48
+ const hasWidth = /width="[\d\.]+"/ig.test(iconSrc);
49
+ const hasHeight = /height="[\d\.]+"/ig.test(iconSrc);
50
+ return !hasWidth || !hasHeight;
51
+ }
52
+
53
+ function IconSVG(_ref) {
54
+ let {
55
+ src,
56
+ className,
57
+ ...rest
58
+ } = _ref;
59
+ const glyphClasses = classNames(modules_29747b80.glyph, {
60
+ [modules_29747b80.compatibilityMode]: isCompatibilityMode(src)
61
+ }, className);
62
+ const {
63
+ props,
64
+ html
65
+ } = getSVGFromSource(src);
66
+ return /*#__PURE__*/React.createElement("svg", _extends({}, props, rest, {
67
+ className: glyphClasses,
68
+ dangerouslySetInnerHTML: {
69
+ __html: html
70
+ }
71
+ }));
72
+ }
73
+
74
+ IconSVG.propTypes = {
75
+ className: PropTypes.string,
76
+ src: PropTypes.string.isRequired,
77
+ style: PropTypes.object
78
+ };
79
+ var IconSVG$1 = /*#__PURE__*/memo(IconSVG);
80
+
81
+ export { IconSVG$1 as default };
@@ -0,0 +1,10 @@
1
+ export { default } from './icon.js';
2
+ export { Size } from './icon__constants.js';
3
+ import '../_helpers/_rollupPluginBabelHelpers.js';
4
+ import 'react';
5
+ import 'prop-types';
6
+ import 'classnames';
7
+ import 'util-deprecate';
8
+ import '../_helpers/icon.js';
9
+ import './icon__svg.js';
10
+ import '../global/memoize.js';
@@ -0,0 +1,89 @@
1
+ import angular from 'angular';
2
+ import { Color } from '../icon/icon__constants.js';
3
+ import RingTemplateNg from '../template-ng/template-ng.js';
4
+ import { m as modules_29747b80 } from '../_helpers/icon.js';
5
+ import '../_helpers/_rollupPluginBabelHelpers.js';
6
+ import '../global/ring-angular-component.js';
7
+
8
+ /**
9
+ * @name Icon Ng
10
+ */
11
+
12
+ const angularModule = angular.module('Ring.icon', [RingTemplateNg]);
13
+ const BASE64_PREFIX = 'data:image/svg+xml;base64,';
14
+ angularModule.directive('rgIcon', function rgIconDirective() {
15
+ return {
16
+ restrict: 'E',
17
+ scope: {
18
+ glyph: '@',
19
+ loading: '=?',
20
+ color: '@?',
21
+ size: '@?',
22
+ height: '@?',
23
+ width: '@?'
24
+ },
25
+ template: `<span class="${modules_29747b80.icon}" rg-template="normalizedGlyph" rg-template-class="${modules_29747b80.glyph}"></span>`,
26
+ controller: ["$scope", $scope => {
27
+ function decodeBase64IfNeeded(glyph) {
28
+ // This hack allows passing SVG content as string from angular templates like
29
+ // <rg-icon glyph="data:image/svg+xml;base64,PHN2ZyB4bWx...></rg-icon>
30
+ const isEncoded = glyph.indexOf(BASE64_PREFIX) === 0;
31
+ return isEncoded ? window.atob(glyph.replace(BASE64_PREFIX, '')) : glyph;
32
+ }
33
+
34
+ $scope.$watch('glyph', value => {
35
+ if (!value) {
36
+ return;
37
+ }
38
+
39
+ $scope.normalizedGlyph = decodeBase64IfNeeded(value);
40
+ });
41
+ }],
42
+ link: function link(scope, iElement, iAttrs) {
43
+ iAttrs.$addClass('ring-icon'); // TODO: We keep this class for now for compatibility reasons (styles overrides)
44
+
45
+ scope.$watch('loading', value => {
46
+ if (value) {
47
+ iAttrs.$addClass(modules_29747b80.loading);
48
+ } else {
49
+ iAttrs.$removeClass(modules_29747b80.loading);
50
+ }
51
+ });
52
+ scope.$watch(() => scope.color && Color[scope.color] && modules_29747b80[Color[scope.color]], (colorClass, prevColorClass) => {
53
+ if (colorClass) {
54
+ iAttrs.$addClass(colorClass); // Remove previous class, but don't remove initial one
55
+
56
+ if (prevColorClass && prevColorClass !== colorClass) {
57
+ iAttrs.$removeClass(prevColorClass);
58
+ }
59
+ }
60
+ });
61
+ scope.$watchGroup(['size', 'width', 'height'], _ref => {
62
+ let [size, width, height] = _ref;
63
+ const svgNode = iElement[0].querySelector('svg');
64
+
65
+ if (!svgNode) {
66
+ return;
67
+ }
68
+
69
+ if (size && !width && !height) {
70
+ const sizeString = `${size}px`;
71
+ const style = `width: ${sizeString}; height: ${sizeString};`;
72
+ svgNode.setAttribute('style', style);
73
+ return;
74
+ }
75
+
76
+ if (width) {
77
+ svgNode.setAttribute('style', `width: ${width}px;`);
78
+ }
79
+
80
+ if (height) {
81
+ svgNode.setAttribute('style', `height: ${height}px;`);
82
+ }
83
+ });
84
+ }
85
+ };
86
+ });
87
+ var IconNG = angularModule.name;
88
+
89
+ export { IconNG as default };