@atlaskit/user-picker 8.6.4 → 8.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/user-picker
2
2
 
3
+ ## 8.7.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [`4d4d565e8ad`](https://bitbucket.org/atlassian/atlassian-frontend/commits/4d4d565e8ad) - Skip sending UFO success if already failed
8
+
9
+ ## 8.7.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [`dace9a85101`](https://bitbucket.org/atlassian/atlassian-frontend/commits/dace9a85101) - Add new attribute to analytics events
14
+
15
+ ## 8.7.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [`90f5bb4745c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/90f5bb4745c) - [ux] Sources tooltip: support 'Other Atlassian products', change heading
20
+
3
21
  ## 8.6.4
4
22
 
5
23
  ### Patch Changes
@@ -64,7 +64,8 @@ var optionData2Analytics = function optionData2Analytics(option) {
64
64
  if ((0, _utils.isExternalUser)(option)) {
65
65
  return {
66
66
  type: 'external_user',
67
- sources: option.sources
67
+ sources: option.sources,
68
+ externalUserType: option.externalUserType
68
69
  };
69
70
  } else {
70
71
  // id's of email types are emails which is PII
@@ -31,9 +31,7 @@ var _reactIntlNext = require("react-intl-next");
31
31
 
32
32
  var _styledComponents = _interopRequireDefault(require("styled-components"));
33
33
 
34
- var _confluenceIcon = require("@atlaskit/logo/confluence-icon");
35
-
36
- var _jiraIcon = require("@atlaskit/logo/jira-icon");
34
+ var _logo = require("@atlaskit/logo");
37
35
 
38
36
  var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
39
37
 
@@ -102,16 +100,22 @@ var SourcesInfoMap = new Map([['slack', {
102
100
  label: _i18n.messages.gitHubProvider
103
101
  }], ['jira', {
104
102
  key: 'jira',
105
- icon: /*#__PURE__*/_react.default.createElement(_jiraIcon.JiraIcon, {
103
+ icon: /*#__PURE__*/_react.default.createElement(_logo.JiraIcon, {
106
104
  size: 'xsmall'
107
105
  }),
108
106
  label: _i18n.messages.jiraSource
109
107
  }], ['confluence', {
110
108
  key: 'confluence',
111
- icon: /*#__PURE__*/_react.default.createElement(_confluenceIcon.ConfluenceIcon, {
109
+ icon: /*#__PURE__*/_react.default.createElement(_logo.ConfluenceIcon, {
112
110
  size: 'xsmall'
113
111
  }),
114
112
  label: _i18n.messages.confluenceSource
113
+ }], ['other-atlassian', {
114
+ key: 'other-atlassian',
115
+ icon: /*#__PURE__*/_react.default.createElement(_logo.AtlassianIcon, {
116
+ size: 'xsmall'
117
+ }),
118
+ label: _i18n.messages.otherAtlassianSource
115
119
  }]]);
116
120
 
117
121
  var ExternalUserOption = /*#__PURE__*/function (_React$PureComponent) {
@@ -27,6 +27,8 @@ var _analyticsNext = require("@atlaskit/analytics-next");
27
27
 
28
28
  var _select = _interopRequireWildcard(require("@atlaskit/select"));
29
29
 
30
+ var _ufo = require("@atlaskit/ufo");
31
+
30
32
  var _react = _interopRequireDefault(require("react"));
31
33
 
32
34
  var _BaseUserPicker = require("./BaseUserPicker");
@@ -80,9 +82,12 @@ var UserPickerWithoutAnalytics = /*#__PURE__*/function (_React$Component) {
80
82
  (0, _createClass2.default)(UserPickerWithoutAnalytics, [{
81
83
  key: "componentDidMount",
82
84
  value: function componentDidMount() {
83
- var experienceForId = _ufoExperiences.userPickerRenderedUfoExperience.getInstance(this.ufoId);
85
+ var experienceForId = _ufoExperiences.userPickerRenderedUfoExperience.getInstance(this.ufoId); // Send UFO success if the experience is still in progress i.e. hasn't failed
86
+
84
87
 
85
- experienceForId.success();
88
+ if ([_ufo.UFOExperienceState.IN_PROGRESS.id, _ufo.UFOExperienceState.STARTED.id].includes(experienceForId.state.id)) {
89
+ experienceForId.success();
90
+ }
86
91
  }
87
92
  }, {
88
93
  key: "render",
@@ -70,7 +70,7 @@ var messages = (0, _reactIntlNext.defineMessages)({
70
70
  },
71
71
  externalUserSourcesHeading: {
72
72
  id: 'fabric.elements.user-picker.external.sourced.from',
73
- defaultMessage: 'Found in:',
73
+ defaultMessage: 'Also found in:',
74
74
  description: 'From where the external user is coming'
75
75
  },
76
76
  externalUserSourcesError: {
@@ -108,6 +108,11 @@ var messages = (0, _reactIntlNext.defineMessages)({
108
108
  defaultMessage: 'Confluence',
109
109
  description: 'This external user is sourced from Confluence'
110
110
  },
111
+ otherAtlassianSource: {
112
+ id: 'fabric.elements.user-picker.source.other-atlassian',
113
+ defaultMessage: 'Other Atlassian products',
114
+ description: 'This external user is sourced from Atlassian products other than Jira and Confluence'
115
+ },
111
116
  memberLozengeText: {
112
117
  id: 'fabric.elements.user-picker.member.lozenge.text',
113
118
  defaultMessage: 'MEMBER',
package/dist/cjs/index.js CHANGED
@@ -63,6 +63,12 @@ Object.defineProperty(exports, "isEmail", {
63
63
  return _utils.isEmail;
64
64
  }
65
65
  });
66
+ Object.defineProperty(exports, "isExternalUser", {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return _utils.isExternalUser;
70
+ }
71
+ });
66
72
  Object.defineProperty(exports, "isTeam", {
67
73
  enumerable: true,
68
74
  get: function get() {
@@ -47,7 +47,11 @@ var UfoErrorBoundary = /*#__PURE__*/function (_React$Component) {
47
47
  (0, _createClass2.default)(UfoErrorBoundary, [{
48
48
  key: "componentDidCatch",
49
49
  value: function componentDidCatch() {
50
- userPickerRenderedUfoExperience.getInstance(this.props.id).failure();
50
+ var instance = userPickerRenderedUfoExperience.getInstance(this.props.id);
51
+
52
+ if (instance.state.id !== _ufo.UFOExperienceState.FAILED.id) {
53
+ instance.failure();
54
+ }
51
55
  }
52
56
  }, {
53
57
  key: "render",
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/user-picker",
3
- "version": "8.6.4",
3
+ "version": "8.7.2",
4
4
  "sideEffects": false
5
5
  }
@@ -39,7 +39,8 @@ const optionData2Analytics = option => {
39
39
  if (isExternalUser(option)) {
40
40
  return {
41
41
  type: 'external_user',
42
- sources: option.sources
42
+ sources: option.sources,
43
+ externalUserType: option.externalUserType
43
44
  };
44
45
  } else {
45
46
  // id's of email types are emails which is PII
@@ -2,8 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import React from 'react';
3
3
  import { FormattedMessage } from 'react-intl-next';
4
4
  import styled from 'styled-components';
5
- import { ConfluenceIcon } from '@atlaskit/logo/confluence-icon';
6
- import { JiraIcon } from '@atlaskit/logo/jira-icon';
5
+ import { ConfluenceIcon, JiraIcon, AtlassianIcon } from '@atlaskit/logo';
7
6
  import Spinner from '@atlaskit/spinner';
8
7
  import { B400, N200, N800 } from '@atlaskit/theme/colors';
9
8
  import { token } from '@atlaskit/tokens';
@@ -66,6 +65,12 @@ const SourcesInfoMap = new Map([['slack', {
66
65
  size: 'xsmall'
67
66
  }),
68
67
  label: messages.confluenceSource
68
+ }], ['other-atlassian', {
69
+ key: 'other-atlassian',
70
+ icon: /*#__PURE__*/React.createElement(AtlassianIcon, {
71
+ size: 'xsmall'
72
+ }),
73
+ label: messages.otherAtlassianSource
69
74
  }]]);
70
75
  export class ExternalUserOption extends React.PureComponent {
71
76
  constructor(...args) {
@@ -2,6 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import { withAnalyticsEvents } from '@atlaskit/analytics-next';
4
4
  import Select, { CreatableSelect } from '@atlaskit/select';
5
+ import { UFOExperienceState } from '@atlaskit/ufo';
5
6
  import React from 'react';
6
7
  import { BaseUserPickerWithoutAnalytics } from './BaseUserPicker';
7
8
  import { getStyles } from './styles';
@@ -21,8 +22,11 @@ export class UserPickerWithoutAnalytics extends React.Component {
21
22
  }
22
23
 
23
24
  componentDidMount() {
24
- const experienceForId = experience.getInstance(this.ufoId);
25
- experienceForId.success();
25
+ const experienceForId = experience.getInstance(this.ufoId); // Send UFO success if the experience is still in progress i.e. hasn't failed
26
+
27
+ if ([UFOExperienceState.IN_PROGRESS.id, UFOExperienceState.STARTED.id].includes(experienceForId.state.id)) {
28
+ experienceForId.success();
29
+ }
26
30
  }
27
31
 
28
32
  render() {
@@ -62,7 +62,7 @@ export const messages = defineMessages({
62
62
  },
63
63
  externalUserSourcesHeading: {
64
64
  id: 'fabric.elements.user-picker.external.sourced.from',
65
- defaultMessage: 'Found in:',
65
+ defaultMessage: 'Also found in:',
66
66
  description: 'From where the external user is coming'
67
67
  },
68
68
  externalUserSourcesError: {
@@ -100,6 +100,11 @@ export const messages = defineMessages({
100
100
  defaultMessage: 'Confluence',
101
101
  description: 'This external user is sourced from Confluence'
102
102
  },
103
+ otherAtlassianSource: {
104
+ id: 'fabric.elements.user-picker.source.other-atlassian',
105
+ defaultMessage: 'Other Atlassian products',
106
+ description: 'This external user is sourced from Atlassian products other than Jira and Confluence'
107
+ },
103
108
  memberLozengeText: {
104
109
  id: 'fabric.elements.user-picker.member.lozenge.text',
105
110
  defaultMessage: 'MEMBER',
@@ -2,6 +2,6 @@ export { isValidEmail } from './components/emailValidation';
2
2
  export { UserPicker as default } from './components/UserPicker';
3
3
  export { getUserRecommendations, hydrateDefaultValues, SmartUserPicker, setSmartUserPickerEnv } from './components/smart-user-picker/index';
4
4
  export { PopupUserPicker } from './components/PopupUserPicker';
5
- export { isEmail, isTeam, isUser } from './components/utils';
5
+ export { isEmail, isExternalUser, isTeam, isUser } from './components/utils';
6
6
  export { // Constants
7
7
  EmailType, GroupType, TeamType, UserType } from './types';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ExperiencePerformanceTypes, ExperienceTypes, ConcurrentExperience } from '@atlaskit/ufo';
2
+ import { ExperiencePerformanceTypes, ExperienceTypes, ConcurrentExperience, UFOExperienceState } from '@atlaskit/ufo';
3
3
  export const userPickerRenderedUfoExperience = new ConcurrentExperience('user-picker-rendered', {
4
4
  platform: {
5
5
  component: 'user-picker'
@@ -9,7 +9,11 @@ export const userPickerRenderedUfoExperience = new ConcurrentExperience('user-pi
9
9
  });
10
10
  export class UfoErrorBoundary extends React.Component {
11
11
  componentDidCatch() {
12
- userPickerRenderedUfoExperience.getInstance(this.props.id).failure();
12
+ const instance = userPickerRenderedUfoExperience.getInstance(this.props.id);
13
+
14
+ if (instance.state.id !== UFOExperienceState.FAILED.id) {
15
+ instance.failure();
16
+ }
13
17
  }
14
18
 
15
19
  render() {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/user-picker",
3
- "version": "8.6.4",
3
+ "version": "8.7.2",
4
4
  "sideEffects": false
5
5
  }
@@ -47,7 +47,8 @@ var optionData2Analytics = function optionData2Analytics(option) {
47
47
  if (isExternalUser(option)) {
48
48
  return {
49
49
  type: 'external_user',
50
- sources: option.sources
50
+ sources: option.sources,
51
+ externalUserType: option.externalUserType
51
52
  };
52
53
  } else {
53
54
  // id's of email types are emails which is PII
@@ -17,8 +17,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
17
17
  import React from 'react';
18
18
  import { FormattedMessage } from 'react-intl-next';
19
19
  import styled from 'styled-components';
20
- import { ConfluenceIcon } from '@atlaskit/logo/confluence-icon';
21
- import { JiraIcon } from '@atlaskit/logo/jira-icon';
20
+ import { ConfluenceIcon, JiraIcon, AtlassianIcon } from '@atlaskit/logo';
22
21
  import Spinner from '@atlaskit/spinner';
23
22
  import { B400, N200, N800 } from '@atlaskit/theme/colors';
24
23
  import { token } from '@atlaskit/tokens';
@@ -65,6 +64,12 @@ var SourcesInfoMap = new Map([['slack', {
65
64
  size: 'xsmall'
66
65
  }),
67
66
  label: messages.confluenceSource
67
+ }], ['other-atlassian', {
68
+ key: 'other-atlassian',
69
+ icon: /*#__PURE__*/React.createElement(AtlassianIcon, {
70
+ size: 'xsmall'
71
+ }),
72
+ label: messages.otherAtlassianSource
68
73
  }]]);
69
74
  export var ExternalUserOption = /*#__PURE__*/function (_React$PureComponent) {
70
75
  _inherits(ExternalUserOption, _React$PureComponent);
@@ -16,6 +16,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
16
16
 
17
17
  import { withAnalyticsEvents } from '@atlaskit/analytics-next';
18
18
  import Select, { CreatableSelect } from '@atlaskit/select';
19
+ import { UFOExperienceState } from '@atlaskit/ufo';
19
20
  import React from 'react';
20
21
  import { BaseUserPickerWithoutAnalytics } from './BaseUserPicker';
21
22
  import { getStyles } from './styles';
@@ -46,8 +47,11 @@ export var UserPickerWithoutAnalytics = /*#__PURE__*/function (_React$Component)
46
47
  _createClass(UserPickerWithoutAnalytics, [{
47
48
  key: "componentDidMount",
48
49
  value: function componentDidMount() {
49
- var experienceForId = experience.getInstance(this.ufoId);
50
- experienceForId.success();
50
+ var experienceForId = experience.getInstance(this.ufoId); // Send UFO success if the experience is still in progress i.e. hasn't failed
51
+
52
+ if ([UFOExperienceState.IN_PROGRESS.id, UFOExperienceState.STARTED.id].includes(experienceForId.state.id)) {
53
+ experienceForId.success();
54
+ }
51
55
  }
52
56
  }, {
53
57
  key: "render",
@@ -62,7 +62,7 @@ export var messages = defineMessages({
62
62
  },
63
63
  externalUserSourcesHeading: {
64
64
  id: 'fabric.elements.user-picker.external.sourced.from',
65
- defaultMessage: 'Found in:',
65
+ defaultMessage: 'Also found in:',
66
66
  description: 'From where the external user is coming'
67
67
  },
68
68
  externalUserSourcesError: {
@@ -100,6 +100,11 @@ export var messages = defineMessages({
100
100
  defaultMessage: 'Confluence',
101
101
  description: 'This external user is sourced from Confluence'
102
102
  },
103
+ otherAtlassianSource: {
104
+ id: 'fabric.elements.user-picker.source.other-atlassian',
105
+ defaultMessage: 'Other Atlassian products',
106
+ description: 'This external user is sourced from Atlassian products other than Jira and Confluence'
107
+ },
103
108
  memberLozengeText: {
104
109
  id: 'fabric.elements.user-picker.member.lozenge.text',
105
110
  defaultMessage: 'MEMBER',
package/dist/esm/index.js CHANGED
@@ -2,6 +2,6 @@ export { isValidEmail } from './components/emailValidation';
2
2
  export { UserPicker as default } from './components/UserPicker';
3
3
  export { getUserRecommendations, hydrateDefaultValues, SmartUserPicker, setSmartUserPickerEnv } from './components/smart-user-picker/index';
4
4
  export { PopupUserPicker } from './components/PopupUserPicker';
5
- export { isEmail, isTeam, isUser } from './components/utils';
5
+ export { isEmail, isExternalUser, isTeam, isUser } from './components/utils';
6
6
  export { // Constants
7
7
  EmailType, GroupType, TeamType, UserType } from './types';
@@ -9,7 +9,7 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
9
9
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
10
10
 
11
11
  import React from 'react';
12
- import { ExperiencePerformanceTypes, ExperienceTypes, ConcurrentExperience } from '@atlaskit/ufo';
12
+ import { ExperiencePerformanceTypes, ExperienceTypes, ConcurrentExperience, UFOExperienceState } from '@atlaskit/ufo';
13
13
  export var userPickerRenderedUfoExperience = new ConcurrentExperience('user-picker-rendered', {
14
14
  platform: {
15
15
  component: 'user-picker'
@@ -31,7 +31,11 @@ export var UfoErrorBoundary = /*#__PURE__*/function (_React$Component) {
31
31
  _createClass(UfoErrorBoundary, [{
32
32
  key: "componentDidCatch",
33
33
  value: function componentDidCatch() {
34
- userPickerRenderedUfoExperience.getInstance(this.props.id).failure();
34
+ var instance = userPickerRenderedUfoExperience.getInstance(this.props.id);
35
+
36
+ if (instance.state.id !== UFOExperienceState.FAILED.id) {
37
+ instance.failure();
38
+ }
35
39
  }
36
40
  }, {
37
41
  key: "render",
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/user-picker",
3
- "version": "8.6.4",
3
+ "version": "8.7.2",
4
4
  "sideEffects": false
5
5
  }
@@ -99,6 +99,11 @@ export declare const messages: {
99
99
  defaultMessage: string;
100
100
  description: string;
101
101
  };
102
+ otherAtlassianSource: {
103
+ id: string;
104
+ defaultMessage: string;
105
+ description: string;
106
+ };
102
107
  memberLozengeText: {
103
108
  id: string;
104
109
  defaultMessage: string;
@@ -4,6 +4,6 @@ export { UserPicker as default } from './components/UserPicker';
4
4
  export { getUserRecommendations, hydrateDefaultValues, SmartUserPicker, setSmartUserPickerEnv, } from './components/smart-user-picker/index';
5
5
  export type { RecommendationRequest, SmartUserPickerProps, SupportedProduct, } from './components/smart-user-picker/index';
6
6
  export { PopupUserPicker } from './components/PopupUserPicker';
7
- export { isEmail, isTeam, isUser } from './components/utils';
7
+ export { isEmail, isExternalUser, isTeam, isUser } from './components/utils';
8
8
  export { EmailType, GroupType, TeamType, UserType, } from './types';
9
9
  export type { ActionTypes, Appearance, AtlasKitSelectChange, AtlaskitSelectValue, DefaultValue, InputActionTypes, LozengeProps, OnChange, OnInputChange, OnOption, OnPicker, Option, OptionData, OptionIdentifier, PopupUserPickerProps, Promisable, Target, UserPickerProps, UserPickerState, Value, Email, Group, GroupHighlight, HighlightRange, LoadOptions, Team, TeamHighlight, User, UserHighlight, ExternalUser, UserSource, } from './types';
@@ -202,8 +202,9 @@ export interface OptionData {
202
202
  lozenge?: string | LozengeProps;
203
203
  }
204
204
  export declare const UserType = "user";
205
- export declare type UserSource = 'google' | 'slack' | 'microsoft' | 'github' | 'jira' | 'confluence';
205
+ export declare type UserSource = 'google' | 'slack' | 'microsoft' | 'github' | 'jira' | 'confluence' | 'other-atlassian';
206
206
  export interface ExternalUser extends User {
207
+ externalUserType?: 'crossSite' | 'thirdParty';
207
208
  requiresSourceHydration?: boolean;
208
209
  sources: UserSource[];
209
210
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/user-picker",
3
- "version": "8.6.4",
3
+ "version": "8.7.2",
4
4
  "description": "Fabric component for display a dropdown to select a user from",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"