@atlaskit/smart-user-picker 8.0.1 → 8.2.0

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 (51) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/CONTRIBUTING.md +1 -0
  3. package/afm-cc/tsconfig.json +36 -27
  4. package/afm-dev-agents/tsconfig.json +35 -0
  5. package/afm-jira/tsconfig.json +7 -1
  6. package/afm-passionfruit/tsconfig.json +35 -0
  7. package/afm-post-office/tsconfig.json +7 -1
  8. package/afm-rovo-extension/tsconfig.json +35 -0
  9. package/afm-townsquare/tsconfig.json +35 -0
  10. package/afm-volt/tsconfig.json +35 -0
  11. package/build/tsconfig.json +8 -2
  12. package/dist/cjs/analytics.js +6 -2
  13. package/dist/cjs/components/MessagesIntlProvider.js +1 -2
  14. package/dist/cjs/components/SmartUserPicker.js +110 -62
  15. package/dist/cjs/i18n/hr.js +25 -0
  16. package/dist/cjs/i18n/sl.js +25 -0
  17. package/dist/cjs/i18n/sr_RS.js +25 -0
  18. package/dist/cjs/i18n/sr_YR.js +25 -0
  19. package/dist/cjs/service/default-value-hydration-client.js +1 -1
  20. package/dist/cjs/ufoExperiences.js +1 -2
  21. package/dist/cjs/util/i18n-util.js +1 -2
  22. package/dist/es2019/analytics.js +5 -1
  23. package/dist/es2019/components/SmartUserPicker.js +31 -6
  24. package/dist/es2019/i18n/hr.js +19 -0
  25. package/dist/es2019/i18n/sl.js +19 -0
  26. package/dist/es2019/i18n/sr_RS.js +19 -0
  27. package/dist/es2019/i18n/sr_YR.js +19 -0
  28. package/dist/esm/analytics.js +5 -1
  29. package/dist/esm/components/SmartUserPicker.js +111 -62
  30. package/dist/esm/i18n/hr.js +19 -0
  31. package/dist/esm/i18n/sl.js +19 -0
  32. package/dist/esm/i18n/sr_RS.js +19 -0
  33. package/dist/esm/i18n/sr_YR.js +19 -0
  34. package/dist/esm/service/default-value-hydration-client.js +1 -1
  35. package/dist/types/analytics.d.ts +1 -0
  36. package/dist/types/components/SmartUserPicker.d.ts +1 -0
  37. package/dist/types/i18n/hr.d.ts +18 -0
  38. package/dist/types/i18n/sl.d.ts +18 -0
  39. package/dist/types/i18n/sr_RS.d.ts +18 -0
  40. package/dist/types/i18n/sr_YR.d.ts +18 -0
  41. package/dist/types/types.d.ts +10 -0
  42. package/dist/types-ts4.5/analytics.d.ts +1 -0
  43. package/dist/types-ts4.5/components/SmartUserPicker.d.ts +1 -0
  44. package/dist/types-ts4.5/i18n/hr.d.ts +18 -0
  45. package/dist/types-ts4.5/i18n/sl.d.ts +18 -0
  46. package/dist/types-ts4.5/i18n/sr_RS.d.ts +18 -0
  47. package/dist/types-ts4.5/i18n/sr_YR.d.ts +18 -0
  48. package/dist/types-ts4.5/types.d.ts +10 -0
  49. package/option/package.json +1 -1
  50. package/package.json +12 -8
  51. package/tsconfig.json +8 -3
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /* prettier-ignore */
8
+ /**
9
+ * NOTE:
10
+ *
11
+ * This file is automatically generated by Traduki 2.0.
12
+ * DO NOT CHANGE IT BY HAND or your changes will be lost.
13
+ */
14
+ //Croatian (Croatia) [hr-HR]
15
+ var _default = exports.default = {
16
+ 'fabric.elements.user-picker.external.sourced.from': 'Pronađen u:',
17
+ 'fabric.elements.user-picker.github.provider': 'GitHub',
18
+ 'fabric.elements.user-picker.google.provider': 'Google',
19
+ 'fabric.elements.user-picker.guest.lozenge.text': 'GOST',
20
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.group': 'Grupe gostiju mogu pristupiti samo određenim prostorima i imaju ograničen pristup korisničkim podacima.',
21
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.user': 'Gosti mogu pristupiti samo određenim prostorima i imaju ograničen pristup korisničkim podacima.',
22
+ 'fabric.elements.user-picker.member.lozenge.text': 'ČLAN',
23
+ 'fabric.elements.user-picker.microsoft.provider': 'Microsoft',
24
+ 'fabric.elements.user-picker.slack.provider': 'Slack'
25
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /* prettier-ignore */
8
+ /**
9
+ * NOTE:
10
+ *
11
+ * This file is automatically generated by Traduki 2.0.
12
+ * DO NOT CHANGE IT BY HAND or your changes will be lost.
13
+ */
14
+ //Slovenian (Slovenia) [sl-SI]
15
+ var _default = exports.default = {
16
+ 'fabric.elements.user-picker.external.sourced.from': 'Najdeno v:',
17
+ 'fabric.elements.user-picker.github.provider': 'GitHub',
18
+ 'fabric.elements.user-picker.google.provider': 'Google',
19
+ 'fabric.elements.user-picker.guest.lozenge.text': 'GOST',
20
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.group': 'Skupine gostov lahko dostopajo samo do določenih prostorov in imajo omejen dostop do uporabniških podatkov.',
21
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.user': 'Gostje lahko dostopajo samo do določenih prostorov in imajo omejen dostop do uporabniških podatkov.',
22
+ 'fabric.elements.user-picker.member.lozenge.text': 'ČLAN',
23
+ 'fabric.elements.user-picker.microsoft.provider': 'Microsoft',
24
+ 'fabric.elements.user-picker.slack.provider': 'Slack'
25
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /* prettier-ignore */
8
+ /**
9
+ * NOTE:
10
+ *
11
+ * This file is automatically generated by Traduki 2.0.
12
+ * DO NOT CHANGE IT BY HAND or your changes will be lost.
13
+ */
14
+ //Serbian (Serbia) [sr-RS]
15
+ var _default = exports.default = {
16
+ 'fabric.elements.user-picker.external.sourced.from': 'Pronađeno u:',
17
+ 'fabric.elements.user-picker.github.provider': 'GitHub',
18
+ 'fabric.elements.user-picker.google.provider': 'Google',
19
+ 'fabric.elements.user-picker.guest.lozenge.text': 'GOST',
20
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.group': 'Grupe za goste mogu da pristupe određenim prostorima i imaju ograničen pristup podacima korisnika.',
21
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.user': 'Gosti mogu da pristupe samo određenim prostorima i imaju ograničen pristup podacima korisnika.',
22
+ 'fabric.elements.user-picker.member.lozenge.text': 'ČLAN',
23
+ 'fabric.elements.user-picker.microsoft.provider': 'Microsoft',
24
+ 'fabric.elements.user-picker.slack.provider': 'Slack'
25
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /* prettier-ignore */
8
+ /**
9
+ * NOTE:
10
+ *
11
+ * This file is automatically generated by Traduki 2.0.
12
+ * DO NOT CHANGE IT BY HAND or your changes will be lost.
13
+ */
14
+ //Serbian (Cyrillic) [sr-YR]
15
+ var _default = exports.default = {
16
+ 'fabric.elements.user-picker.external.sourced.from': 'Пронађено у:',
17
+ 'fabric.elements.user-picker.github.provider': 'GitHub',
18
+ 'fabric.elements.user-picker.google.provider': 'Google',
19
+ 'fabric.elements.user-picker.guest.lozenge.text': 'ГОСТ',
20
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.group': 'Групе за госте могу да приступе одређеним просторима и имају ограничен приступ подацима корисника.',
21
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.user': 'Гости могу да приступе само одређеним просторима и имају ограничен приступ подацима корисника.',
22
+ 'fabric.elements.user-picker.member.lozenge.text': 'ЧЛАН',
23
+ 'fabric.elements.user-picker.microsoft.provider': 'Microsoft',
24
+ 'fabric.elements.user-picker.slack.provider': 'Slack'
25
+ };
@@ -171,7 +171,7 @@ var hydrateAccountIds = /*#__PURE__*/function () {
171
171
  return _ref2.apply(this, arguments);
172
172
  };
173
173
  }();
174
- function hydrateDefaultValues(_x7, _x8, _x9, _x10) {
174
+ function hydrateDefaultValues(_x7, _x8, _x9, _x0) {
175
175
  return _hydrateDefaultValues.apply(this, arguments);
176
176
  }
177
177
  function _hydrateDefaultValues() {
@@ -13,8 +13,7 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
13
13
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
14
  var _react = _interopRequireWildcard(require("react"));
15
15
  var _ufo = require("@atlaskit/ufo");
16
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
18
17
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
19
18
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
20
19
  var COMPONENT_NAME = 'smart-user-picker';
@@ -8,8 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.getMessagesForLocale = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
13
12
  /**
14
13
  * Tries to get the most specific messages bundle for a given locale.
15
14
  *
@@ -1,7 +1,7 @@
1
1
  import { createAndFireEvent } from '@atlaskit/analytics-next';
2
2
  import { v4 as uuid } from 'uuid';
3
3
  const packageName = "@atlaskit/smart-user-picker";
4
- const packageVersion = "8.0.1";
4
+ const packageVersion = "8.1.0";
5
5
  export const startSession = () => ({
6
6
  id: uuid(),
7
7
  start: Date.now(),
@@ -85,4 +85,8 @@ export const successfulRequestUsersEvent = (props, state, attributes = {}) => cr
85
85
  export const failedRequestUsersEvent = (props, state, attributes = {}) => createSmartUserPickerEvent('failed', 'usersRequest', {
86
86
  ...createDefaultSmartPickerAttributes(props, state),
87
87
  ...attributes
88
+ });
89
+ export const failedUserResolversEvent = (props, state, attributes = {}) => createSmartUserPickerEvent('failed', 'userResolversRequest', {
90
+ ...createDefaultSmartPickerAttributes(props, state),
91
+ ...attributes
88
92
  });
@@ -8,7 +8,8 @@ import memoizeOne from 'memoize-one';
8
8
  import { injectIntl } from 'react-intl-next';
9
9
  import { UFOExperienceState } from '@atlaskit/ufo';
10
10
  import UserPicker, { isExternalUser, isTeam, isUser } from '@atlaskit/user-picker';
11
- import { requestUsersEvent, filterUsersEvent, preparedUsersLoadedEvent, successfulRequestUsersEvent, failedRequestUsersEvent, mountedWithPrefetchEvent, createAndFireEventInElementsChannel } from '../analytics';
11
+ import { fg } from '@atlaskit/platform-feature-flags';
12
+ import { requestUsersEvent, filterUsersEvent, preparedUsersLoadedEvent, successfulRequestUsersEvent, failedRequestUsersEvent, mountedWithPrefetchEvent, createAndFireEventInElementsChannel, failedUserResolversEvent } from '../analytics';
12
13
  import MessagesIntlProvider from './MessagesIntlProvider';
13
14
  import { getUserRecommendations, hydrateDefaultValues } from '../service';
14
15
  import { smartUserPickerOptionsShownUfoExperience } from '../ufoExperiences';
@@ -97,7 +98,9 @@ export class SmartUserPickerWithoutAnalytics extends React.Component {
97
98
  productAttributes,
98
99
  productKey,
99
100
  searchQueryFilter,
100
- siteId
101
+ siteId,
102
+ transformOptions,
103
+ userResolvers
101
104
  } = this.props;
102
105
  const maxNumberOfResults = maxOptions || 100;
103
106
  const startTime = window.performance.now();
@@ -125,8 +128,25 @@ export class SmartUserPickerWithoutAnalytics extends React.Component {
125
128
  };
126
129
  try {
127
130
  var _await$onEmpty;
131
+ const {
132
+ query
133
+ } = this.state;
128
134
  this.fireEvent(requestUsersEvent);
129
- const recommendedUsers = await getUserRecommendations(recommendationsRequest, intl);
135
+ let recommendedUsers;
136
+ if (fg('twcg-444-invite-usd-improvements-m2-gate')) {
137
+ const userRecommendationsPromise = getUserRecommendations(recommendationsRequest, intl);
138
+ const userResolversPromises = (userResolvers !== null && userResolvers !== void 0 ? userResolvers : []).map(resolver => resolver(query).catch(error => {
139
+ this.fireEvent(failedUserResolversEvent, {
140
+ resolverName: resolver.name,
141
+ error
142
+ });
143
+ return [];
144
+ }));
145
+ const [mainRecommendations, ...userResolverResults] = await Promise.all([userRecommendationsPromise, ...userResolversPromises]);
146
+ recommendedUsers = [mainRecommendations, ...userResolverResults].flat();
147
+ } else {
148
+ recommendedUsers = await getUserRecommendations(recommendationsRequest, intl);
149
+ }
130
150
  if (overrideByline) {
131
151
  for (let option of recommendedUsers) {
132
152
  if (isUser(option) || isExternalUser(option) || isTeam(option)) {
@@ -135,7 +155,8 @@ export class SmartUserPickerWithoutAnalytics extends React.Component {
135
155
  }
136
156
  }
137
157
  const elapsedTimeMilli = window.performance.now() - startTime;
138
- const displayedUsers = recommendedUsers.length === 0 && onEmpty ? (_await$onEmpty = await onEmpty(query)) !== null && _await$onEmpty !== void 0 ? _await$onEmpty : [] : recommendedUsers;
158
+ const transformedOptions = transformOptions ? await transformOptions(recommendedUsers, query) : recommendedUsers;
159
+ const displayedUsers = transformedOptions.length === 0 && onEmpty ? (_await$onEmpty = await onEmpty(query)) !== null && _await$onEmpty !== void 0 ? _await$onEmpty : [] : transformedOptions;
139
160
  this.setState(state => {
140
161
  const applicable = state.query === query;
141
162
  const users = applicable ? displayedUsers : state.users;
@@ -145,7 +166,10 @@ export class SmartUserPickerWithoutAnalytics extends React.Component {
145
166
  elapsedTimeMilli,
146
167
  displayedUsers: getUsersForAnalytics(displayedUsers),
147
168
  productAttributes,
148
- applicable
169
+ applicable,
170
+ ...(fg('twcg-444-invite-usd-improvements-m2-gate') && {
171
+ userResolvers: Array.isArray(userResolvers) ? userResolvers.map(resolver => resolver.name) : []
172
+ })
149
173
  });
150
174
  return {
151
175
  users,
@@ -344,6 +368,7 @@ _defineProperty(SmartUserPickerWithoutAnalytics, "defaultProps", {
344
368
  includeNonLicensedUsers: false,
345
369
  prefetch: false,
346
370
  principalId: 'Context',
347
- debounceTime: DEFAULT_DEBOUNCE_TIME_MS
371
+ debounceTime: DEFAULT_DEBOUNCE_TIME_MS,
372
+ userResolvers: []
348
373
  });
349
374
  export const SmartUserPicker = withAnalyticsEvents()(injectIntl(SmartUserPickerWithoutAnalytics));
@@ -0,0 +1,19 @@
1
+ /* prettier-ignore */
2
+ /**
3
+ * NOTE:
4
+ *
5
+ * This file is automatically generated by Traduki 2.0.
6
+ * DO NOT CHANGE IT BY HAND or your changes will be lost.
7
+ */
8
+ //Croatian (Croatia) [hr-HR]
9
+ export default {
10
+ 'fabric.elements.user-picker.external.sourced.from': 'Pronađen u:',
11
+ 'fabric.elements.user-picker.github.provider': 'GitHub',
12
+ 'fabric.elements.user-picker.google.provider': 'Google',
13
+ 'fabric.elements.user-picker.guest.lozenge.text': 'GOST',
14
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.group': 'Grupe gostiju mogu pristupiti samo određenim prostorima i imaju ograničen pristup korisničkim podacima.',
15
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.user': 'Gosti mogu pristupiti samo određenim prostorima i imaju ograničen pristup korisničkim podacima.',
16
+ 'fabric.elements.user-picker.member.lozenge.text': 'ČLAN',
17
+ 'fabric.elements.user-picker.microsoft.provider': 'Microsoft',
18
+ 'fabric.elements.user-picker.slack.provider': 'Slack'
19
+ };
@@ -0,0 +1,19 @@
1
+ /* prettier-ignore */
2
+ /**
3
+ * NOTE:
4
+ *
5
+ * This file is automatically generated by Traduki 2.0.
6
+ * DO NOT CHANGE IT BY HAND or your changes will be lost.
7
+ */
8
+ //Slovenian (Slovenia) [sl-SI]
9
+ export default {
10
+ 'fabric.elements.user-picker.external.sourced.from': 'Najdeno v:',
11
+ 'fabric.elements.user-picker.github.provider': 'GitHub',
12
+ 'fabric.elements.user-picker.google.provider': 'Google',
13
+ 'fabric.elements.user-picker.guest.lozenge.text': 'GOST',
14
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.group': 'Skupine gostov lahko dostopajo samo do določenih prostorov in imajo omejen dostop do uporabniških podatkov.',
15
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.user': 'Gostje lahko dostopajo samo do določenih prostorov in imajo omejen dostop do uporabniških podatkov.',
16
+ 'fabric.elements.user-picker.member.lozenge.text': 'ČLAN',
17
+ 'fabric.elements.user-picker.microsoft.provider': 'Microsoft',
18
+ 'fabric.elements.user-picker.slack.provider': 'Slack'
19
+ };
@@ -0,0 +1,19 @@
1
+ /* prettier-ignore */
2
+ /**
3
+ * NOTE:
4
+ *
5
+ * This file is automatically generated by Traduki 2.0.
6
+ * DO NOT CHANGE IT BY HAND or your changes will be lost.
7
+ */
8
+ //Serbian (Serbia) [sr-RS]
9
+ export default {
10
+ 'fabric.elements.user-picker.external.sourced.from': 'Pronađeno u:',
11
+ 'fabric.elements.user-picker.github.provider': 'GitHub',
12
+ 'fabric.elements.user-picker.google.provider': 'Google',
13
+ 'fabric.elements.user-picker.guest.lozenge.text': 'GOST',
14
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.group': 'Grupe za goste mogu da pristupe određenim prostorima i imaju ograničen pristup podacima korisnika.',
15
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.user': 'Gosti mogu da pristupe samo određenim prostorima i imaju ograničen pristup podacima korisnika.',
16
+ 'fabric.elements.user-picker.member.lozenge.text': 'ČLAN',
17
+ 'fabric.elements.user-picker.microsoft.provider': 'Microsoft',
18
+ 'fabric.elements.user-picker.slack.provider': 'Slack'
19
+ };
@@ -0,0 +1,19 @@
1
+ /* prettier-ignore */
2
+ /**
3
+ * NOTE:
4
+ *
5
+ * This file is automatically generated by Traduki 2.0.
6
+ * DO NOT CHANGE IT BY HAND or your changes will be lost.
7
+ */
8
+ //Serbian (Cyrillic) [sr-YR]
9
+ export default {
10
+ 'fabric.elements.user-picker.external.sourced.from': 'Пронађено у:',
11
+ 'fabric.elements.user-picker.github.provider': 'GitHub',
12
+ 'fabric.elements.user-picker.google.provider': 'Google',
13
+ 'fabric.elements.user-picker.guest.lozenge.text': 'ГОСТ',
14
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.group': 'Групе за госте могу да приступе одређеним просторима и имају ограничен приступ подацима корисника.',
15
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.user': 'Гости могу да приступе само одређеним просторима и имају ограничен приступ подацима корисника.',
16
+ 'fabric.elements.user-picker.member.lozenge.text': 'ЧЛАН',
17
+ 'fabric.elements.user-picker.microsoft.provider': 'Microsoft',
18
+ 'fabric.elements.user-picker.slack.provider': 'Slack'
19
+ };
@@ -4,7 +4,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
4
4
  import { createAndFireEvent } from '@atlaskit/analytics-next';
5
5
  import { v4 as uuid } from 'uuid';
6
6
  var packageName = "@atlaskit/smart-user-picker";
7
- var packageVersion = "8.0.1";
7
+ var packageVersion = "8.1.0";
8
8
  export var startSession = function startSession() {
9
9
  return {
10
10
  id: uuid(),
@@ -90,4 +90,8 @@ export var successfulRequestUsersEvent = function successfulRequestUsersEvent(pr
90
90
  export var failedRequestUsersEvent = function failedRequestUsersEvent(props, state) {
91
91
  var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
92
92
  return createSmartUserPickerEvent('failed', 'usersRequest', _objectSpread(_objectSpread({}, createDefaultSmartPickerAttributes(props, state)), attributes));
93
+ };
94
+ export var failedUserResolversEvent = function failedUserResolversEvent(props, state) {
95
+ var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
96
+ return createSmartUserPickerEvent('failed', 'userResolversRequest', _objectSpread(_objectSpread({}, createDefaultSmartPickerAttributes(props, state)), attributes));
93
97
  };
@@ -1,4 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ import _toArray from "@babel/runtime/helpers/toArray";
2
4
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
3
5
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
4
6
  import _createClass from "@babel/runtime/helpers/createClass";
@@ -6,9 +8,9 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstruct
6
8
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
9
  import _inherits from "@babel/runtime/helpers/inherits";
8
10
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
11
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
9
12
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
13
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
- import _regeneratorRuntime from "@babel/runtime/regenerator";
12
14
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
13
15
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
14
16
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -22,7 +24,8 @@ import memoizeOne from 'memoize-one';
22
24
  import { injectIntl } from 'react-intl-next';
23
25
  import { UFOExperienceState } from '@atlaskit/ufo';
24
26
  import UserPicker, { isExternalUser, isTeam, isUser } from '@atlaskit/user-picker';
25
- import { requestUsersEvent, filterUsersEvent, preparedUsersLoadedEvent, successfulRequestUsersEvent, failedRequestUsersEvent, mountedWithPrefetchEvent, createAndFireEventInElementsChannel } from '../analytics';
27
+ import { fg } from '@atlaskit/platform-feature-flags';
28
+ import { requestUsersEvent, filterUsersEvent, preparedUsersLoadedEvent, successfulRequestUsersEvent, failedRequestUsersEvent, mountedWithPrefetchEvent, createAndFireEventInElementsChannel, failedUserResolversEvent } from '../analytics';
26
29
  import MessagesIntlProvider from './MessagesIntlProvider';
27
30
  import { getUserRecommendations, hydrateDefaultValues } from '../service';
28
31
  import { smartUserPickerOptionsShownUfoExperience } from '../ufoExperiences';
@@ -98,12 +101,12 @@ export var SmartUserPickerWithoutAnalytics = /*#__PURE__*/function (_React$Compo
98
101
  });
99
102
  _defineProperty(_this, "memoizedFilterOptions", memoizeOne(_this.filterOptions));
100
103
  _defineProperty(_this, "getUsers", debounce( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
101
- var _this$state, query, sessionId, closed, _this$props, baseUrl, childObjectId, containerId, fieldId, includeGroups, includeTeams, includeUsers, includeNonLicensedUsers, intl, maxOptions, objectId, onEmpty, onError, overrideByline, orgId, principalId, productAttributes, productKey, searchQueryFilter, siteId, maxNumberOfResults, startTime, recommendationsRequest, _yield$onEmpty, recommendedUsers, _iterator, _step, option, elapsedTimeMilli, displayedUsers, is5xxEvent, onErrorProducedError, defaultUsers, _elapsedTimeMilli;
104
+ var _this$state, query, sessionId, closed, _this$props, baseUrl, childObjectId, containerId, fieldId, includeGroups, includeTeams, includeUsers, includeNonLicensedUsers, intl, maxOptions, objectId, onEmpty, onError, overrideByline, orgId, principalId, productAttributes, productKey, searchQueryFilter, siteId, transformOptions, userResolvers, maxNumberOfResults, startTime, recommendationsRequest, _yield$onEmpty, _query, recommendedUsers, userRecommendationsPromise, userResolversPromises, _yield$Promise$all, _yield$Promise$all2, mainRecommendations, userResolverResults, _iterator, _step, option, elapsedTimeMilli, transformedOptions, displayedUsers, is5xxEvent, onErrorProducedError, defaultUsers, _elapsedTimeMilli;
102
105
  return _regeneratorRuntime.wrap(function _callee$(_context) {
103
106
  while (1) switch (_context.prev = _context.next) {
104
107
  case 0:
105
108
  _this$state = _this.state, query = _this$state.query, sessionId = _this$state.sessionId, closed = _this$state.closed;
106
- _this$props = _this.props, baseUrl = _this$props.baseUrl, childObjectId = _this$props.childObjectId, containerId = _this$props.containerId, fieldId = _this$props.fieldId, includeGroups = _this$props.includeGroups, includeTeams = _this$props.includeTeams, includeUsers = _this$props.includeUsers, includeNonLicensedUsers = _this$props.includeNonLicensedUsers, intl = _this$props.intl, maxOptions = _this$props.maxOptions, objectId = _this$props.objectId, onEmpty = _this$props.onEmpty, onError = _this$props.onError, overrideByline = _this$props.overrideByline, orgId = _this$props.orgId, principalId = _this$props.principalId, productAttributes = _this$props.productAttributes, productKey = _this$props.productKey, searchQueryFilter = _this$props.searchQueryFilter, siteId = _this$props.siteId;
109
+ _this$props = _this.props, baseUrl = _this$props.baseUrl, childObjectId = _this$props.childObjectId, containerId = _this$props.containerId, fieldId = _this$props.fieldId, includeGroups = _this$props.includeGroups, includeTeams = _this$props.includeTeams, includeUsers = _this$props.includeUsers, includeNonLicensedUsers = _this$props.includeNonLicensedUsers, intl = _this$props.intl, maxOptions = _this$props.maxOptions, objectId = _this$props.objectId, onEmpty = _this$props.onEmpty, onError = _this$props.onError, overrideByline = _this$props.overrideByline, orgId = _this$props.orgId, principalId = _this$props.principalId, productAttributes = _this$props.productAttributes, productKey = _this$props.productKey, searchQueryFilter = _this$props.searchQueryFilter, siteId = _this$props.siteId, transformOptions = _this$props.transformOptions, userResolvers = _this$props.userResolvers;
107
110
  maxNumberOfResults = maxOptions || 100;
108
111
  startTime = window.performance.now();
109
112
  recommendationsRequest = {
@@ -129,11 +132,38 @@ export var SmartUserPickerWithoutAnalytics = /*#__PURE__*/function (_React$Compo
129
132
  searchQueryFilter: searchQueryFilter
130
133
  };
131
134
  _context.prev = 5;
135
+ _query = _this.state.query;
132
136
  _this.fireEvent(requestUsersEvent);
133
- _context.next = 9;
137
+ if (!fg('twcg-444-invite-usd-improvements-m2-gate')) {
138
+ _context.next = 20;
139
+ break;
140
+ }
141
+ userRecommendationsPromise = getUserRecommendations(recommendationsRequest, intl);
142
+ userResolversPromises = (userResolvers !== null && userResolvers !== void 0 ? userResolvers : []).map(function (resolver) {
143
+ return resolver(_query).catch(function (error) {
144
+ _this.fireEvent(failedUserResolversEvent, {
145
+ resolverName: resolver.name,
146
+ error: error
147
+ });
148
+ return [];
149
+ });
150
+ });
151
+ _context.next = 13;
152
+ return Promise.all([userRecommendationsPromise].concat(_toConsumableArray(userResolversPromises)));
153
+ case 13:
154
+ _yield$Promise$all = _context.sent;
155
+ _yield$Promise$all2 = _toArray(_yield$Promise$all);
156
+ mainRecommendations = _yield$Promise$all2[0];
157
+ userResolverResults = _yield$Promise$all2.slice(1);
158
+ recommendedUsers = [mainRecommendations].concat(_toConsumableArray(userResolverResults)).flat();
159
+ _context.next = 23;
160
+ break;
161
+ case 20:
162
+ _context.next = 22;
134
163
  return getUserRecommendations(recommendationsRequest, intl);
135
- case 9:
164
+ case 22:
136
165
  recommendedUsers = _context.sent;
166
+ case 23:
137
167
  if (overrideByline) {
138
168
  _iterator = _createForOfIteratorHelper(recommendedUsers);
139
169
  try {
@@ -150,60 +180,78 @@ export var SmartUserPickerWithoutAnalytics = /*#__PURE__*/function (_React$Compo
150
180
  }
151
181
  }
152
182
  elapsedTimeMilli = window.performance.now() - startTime;
153
- if (!(recommendedUsers.length === 0 && onEmpty)) {
154
- _context.next = 27;
183
+ if (!transformOptions) {
184
+ _context.next = 31;
185
+ break;
186
+ }
187
+ _context.next = 28;
188
+ return transformOptions(recommendedUsers, _query);
189
+ case 28:
190
+ _context.t0 = _context.sent;
191
+ _context.next = 32;
192
+ break;
193
+ case 31:
194
+ _context.t0 = recommendedUsers;
195
+ case 32:
196
+ transformedOptions = _context.t0;
197
+ if (!(transformedOptions.length === 0 && onEmpty)) {
198
+ _context.next = 48;
155
199
  break;
156
200
  }
157
- _context.next = 15;
158
- return onEmpty(query);
159
- case 15:
160
- _context.t2 = _yield$onEmpty = _context.sent;
161
- _context.t1 = _context.t2 !== null;
162
- if (!_context.t1) {
163
- _context.next = 19;
201
+ _context.next = 36;
202
+ return onEmpty(_query);
203
+ case 36:
204
+ _context.t3 = _yield$onEmpty = _context.sent;
205
+ _context.t2 = _context.t3 !== null;
206
+ if (!_context.t2) {
207
+ _context.next = 40;
164
208
  break;
165
209
  }
166
- _context.t1 = _yield$onEmpty !== void 0;
167
- case 19:
168
- if (!_context.t1) {
169
- _context.next = 23;
210
+ _context.t2 = _yield$onEmpty !== void 0;
211
+ case 40:
212
+ if (!_context.t2) {
213
+ _context.next = 44;
170
214
  break;
171
215
  }
172
- _context.t3 = _yield$onEmpty;
173
- _context.next = 24;
216
+ _context.t4 = _yield$onEmpty;
217
+ _context.next = 45;
174
218
  break;
175
- case 23:
176
- _context.t3 = [];
177
- case 24:
178
- _context.t0 = _context.t3;
179
- _context.next = 28;
219
+ case 44:
220
+ _context.t4 = [];
221
+ case 45:
222
+ _context.t1 = _context.t4;
223
+ _context.next = 49;
180
224
  break;
181
- case 27:
182
- _context.t0 = recommendedUsers;
183
- case 28:
184
- displayedUsers = _context.t0;
225
+ case 48:
226
+ _context.t1 = transformedOptions;
227
+ case 49:
228
+ displayedUsers = _context.t1;
185
229
  _this.setState(function (state) {
186
- var applicable = state.query === query;
230
+ var applicable = state.query === _query;
187
231
  var users = applicable ? displayedUsers : state.users;
188
232
  var loading = !applicable;
189
- _this.fireEvent(successfulRequestUsersEvent, {
233
+ _this.fireEvent(successfulRequestUsersEvent, _objectSpread({
190
234
  users: getUsersForAnalytics(recommendedUsers),
191
235
  elapsedTimeMilli: elapsedTimeMilli,
192
236
  displayedUsers: getUsersForAnalytics(displayedUsers),
193
237
  productAttributes: productAttributes,
194
238
  applicable: applicable
195
- });
239
+ }, fg('twcg-444-invite-usd-improvements-m2-gate') && {
240
+ userResolvers: Array.isArray(userResolvers) ? userResolvers.map(function (resolver) {
241
+ return resolver.name;
242
+ }) : []
243
+ }));
196
244
  return {
197
245
  users: users,
198
246
  loading: loading
199
247
  };
200
248
  });
201
- _context.next = 61;
249
+ _context.next = 82;
202
250
  break;
203
- case 32:
204
- _context.prev = 32;
205
- _context.t4 = _context["catch"](5);
206
- is5xxEvent = checkIf500Event(_context.t4.statusCode);
251
+ case 53:
252
+ _context.prev = 53;
253
+ _context.t5 = _context["catch"](5);
254
+ is5xxEvent = checkIf500Event(_context.t5.statusCode);
207
255
  if (!closed && !onError && is5xxEvent) {
208
256
  // If the user lookup fails while the menu is open, and the consumer is not providing a
209
257
  // fallback data source via the onError prop, then send UFO failure
@@ -214,35 +262,35 @@ export var SmartUserPickerWithoutAnalytics = /*#__PURE__*/function (_React$Compo
214
262
  });
215
263
  onErrorProducedError = false;
216
264
  defaultUsers = [];
217
- _context.prev = 39;
265
+ _context.prev = 60;
218
266
  if (!onError) {
219
- _context.next = 49;
267
+ _context.next = 70;
220
268
  break;
221
269
  }
222
- _context.next = 43;
223
- return onError(_context.t4, recommendationsRequest);
224
- case 43:
225
- _context.t6 = _context.sent;
226
- if (_context.t6) {
227
- _context.next = 46;
270
+ _context.next = 64;
271
+ return onError(_context.t5, recommendationsRequest);
272
+ case 64:
273
+ _context.t7 = _context.sent;
274
+ if (_context.t7) {
275
+ _context.next = 67;
228
276
  break;
229
277
  }
230
- _context.t6 = [];
231
- case 46:
232
- _context.t5 = _context.t6;
233
- _context.next = 50;
278
+ _context.t7 = [];
279
+ case 67:
280
+ _context.t6 = _context.t7;
281
+ _context.next = 71;
234
282
  break;
235
- case 49:
236
- _context.t5 = [];
237
- case 50:
238
- defaultUsers = _context.t5;
239
- _context.next = 56;
283
+ case 70:
284
+ _context.t6 = [];
285
+ case 71:
286
+ defaultUsers = _context.t6;
287
+ _context.next = 77;
240
288
  break;
241
- case 53:
242
- _context.prev = 53;
243
- _context.t7 = _context["catch"](39);
289
+ case 74:
290
+ _context.prev = 74;
291
+ _context.t8 = _context["catch"](60);
244
292
  onErrorProducedError = true;
245
- case 56:
293
+ case 77:
246
294
  if (onErrorProducedError && is5xxEvent) {
247
295
  // Log error from fallback data source `onError` to UFO
248
296
  _this.optionsShownUfoExperienceInstance.failure(ufoEndStateConfig(_this.props.fieldId));
@@ -259,11 +307,11 @@ export var SmartUserPickerWithoutAnalytics = /*#__PURE__*/function (_React$Compo
259
307
  elapsedTimeMilli: _elapsedTimeMilli,
260
308
  productAttributes: productAttributes
261
309
  });
262
- case 61:
310
+ case 82:
263
311
  case "end":
264
312
  return _context.stop();
265
313
  }
266
- }, _callee, null, [[5, 32], [39, 53]]);
314
+ }, _callee, null, [[5, 53], [60, 74]]);
267
315
  })), (_this$props$debounceT = _this.props.debounceTime) !== null && _this$props$debounceT !== void 0 ? _this$props$debounceT : 0));
268
316
  _defineProperty(_this, "onInputChange", function (newQuery, sessionId) {
269
317
  var query = newQuery || '';
@@ -452,6 +500,7 @@ _defineProperty(SmartUserPickerWithoutAnalytics, "defaultProps", {
452
500
  includeNonLicensedUsers: false,
453
501
  prefetch: false,
454
502
  principalId: 'Context',
455
- debounceTime: DEFAULT_DEBOUNCE_TIME_MS
503
+ debounceTime: DEFAULT_DEBOUNCE_TIME_MS,
504
+ userResolvers: []
456
505
  });
457
506
  export var SmartUserPicker = withAnalyticsEvents()(injectIntl(SmartUserPickerWithoutAnalytics));
@@ -0,0 +1,19 @@
1
+ /* prettier-ignore */
2
+ /**
3
+ * NOTE:
4
+ *
5
+ * This file is automatically generated by Traduki 2.0.
6
+ * DO NOT CHANGE IT BY HAND or your changes will be lost.
7
+ */
8
+ //Croatian (Croatia) [hr-HR]
9
+ export default {
10
+ 'fabric.elements.user-picker.external.sourced.from': 'Pronađen u:',
11
+ 'fabric.elements.user-picker.github.provider': 'GitHub',
12
+ 'fabric.elements.user-picker.google.provider': 'Google',
13
+ 'fabric.elements.user-picker.guest.lozenge.text': 'GOST',
14
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.group': 'Grupe gostiju mogu pristupiti samo određenim prostorima i imaju ograničen pristup korisničkim podacima.',
15
+ 'fabric.elements.user-picker.guest.lozenge.tooltip.user': 'Gosti mogu pristupiti samo određenim prostorima i imaju ograničen pristup korisničkim podacima.',
16
+ 'fabric.elements.user-picker.member.lozenge.text': 'ČLAN',
17
+ 'fabric.elements.user-picker.microsoft.provider': 'Microsoft',
18
+ 'fabric.elements.user-picker.slack.provider': 'Slack'
19
+ };