@atlaskit/user-picker 10.14.0 → 10.16.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/user-picker
2
2
 
3
+ ## 10.16.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#69969](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/69969) [`c9939127a605`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/c9939127a605) - [ux] Render the custom byline instead of email for external users.
8
+ - [#70375](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/70375) [`723e4a0302b6`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/723e4a0302b6) - [ux] Adding tooltip to option shown on hover
9
+
10
+ ## 10.15.0
11
+
12
+ ### Minor Changes
13
+
14
+ - [#68878](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/68878) [`6c49996cd842`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/6c49996cd842) - update user recommendations api to return user's title
15
+
16
+ ### Patch Changes
17
+
18
+ - [#69272](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/69272) [`35f47019f443`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/35f47019f443) - Migrate packages to use declarative entry points
19
+ - Updated dependencies
20
+
3
21
  ## 10.14.0
4
22
 
5
23
  ### Minor Changes
@@ -39,6 +39,9 @@
39
39
  {
40
40
  "path": "../../../design-system/popper/afm-cc/tsconfig.json"
41
41
  },
42
+ {
43
+ "path": "../../../design-system/primitives/afm-cc/tsconfig.json"
44
+ },
42
45
  {
43
46
  "path": "../../../design-system/select/afm-cc/tsconfig.json"
44
47
  },
@@ -12,7 +12,7 @@ var _utils = require("./components/utils");
12
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; }
13
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) { (0, _defineProperty2.default)(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; }
14
14
  var packageName = "@atlaskit/user-picker";
15
- var packageVersion = "10.14.0";
15
+ var packageVersion = "10.16.0";
16
16
  var UUID_REGEXP_TEAMS_GROUPS = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
17
17
  var UUID_REGEXP_OLD_AAID = /^[a-fA-F0-9]{1,8}:[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
18
18
  var UUID_REGEXP_NEW_AAID = /^[a-fA-F0-9]{24,24}$/;
@@ -56,26 +56,40 @@ var ExternalUserOptionImpl = /*#__PURE__*/function (_React$PureComponent) {
56
56
  }, name);
57
57
  });
58
58
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderSecondaryText", function () {
59
- var email = _this.props.user.email;
60
- if (!email) {
59
+ var _this$props$user = _this.props.user,
60
+ byline = _this$props$user.byline,
61
+ email = _this$props$user.email;
62
+ if (!byline && !email) {
61
63
  return;
62
64
  }
63
- var _email$split = email.split('@'),
64
- _email$split2 = (0, _slicedToArray2.default)(_email$split, 2),
65
- emailUser = _email$split2[0],
66
- emailDomain = _email$split2[1];
67
- var emailDomainWithAt = "@".concat(emailDomain);
68
- return (0, _react2.jsx)("span", {
69
- css: (0, _AvatarItemOption.textWrapper)(_this.props.isSelected ? "var(--ds-text-selected, ".concat(_colors.B400, ")") : "var(--ds-text-subtlest, ".concat(_colors.N200, ")"))
70
- }, emailUser, (0, _react2.jsx)("span", {
71
- css: emailDomainWrapper
72
- }, emailDomainWithAt));
65
+ var textColor = _this.props.isSelected ? "var(--ds-text-selected, ".concat(_colors.B400, ")") : "var(--ds-text-subtlest, ".concat(_colors.N200, ")");
66
+
67
+ // Render byline if present
68
+ if (byline) {
69
+ return (0, _react2.jsx)("span", {
70
+ css: (0, _AvatarItemOption.textWrapper)(textColor)
71
+ }, byline);
72
+ }
73
+
74
+ // Render email if byline isn't present
75
+ if (email) {
76
+ var _email$split = email.split('@'),
77
+ _email$split2 = (0, _slicedToArray2.default)(_email$split, 2),
78
+ emailUser = _email$split2[0],
79
+ emailDomain = _email$split2[1];
80
+ var emailDomainWithAt = "@".concat(emailDomain);
81
+ return (0, _react2.jsx)("span", {
82
+ css: (0, _AvatarItemOption.textWrapper)(textColor)
83
+ }, emailUser, (0, _react2.jsx)("span", {
84
+ css: emailDomainWrapper
85
+ }, emailDomainWithAt));
86
+ }
73
87
  });
74
88
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderAvatar", function () {
75
89
  var _this$props = _this.props,
76
- _this$props$user = _this$props.user,
77
- avatarUrl = _this$props$user.avatarUrl,
78
- name = _this$props$user.name,
90
+ _this$props$user2 = _this$props.user,
91
+ avatarUrl = _this$props$user2.avatarUrl,
92
+ name = _this$props$user2.name,
79
93
  status = _this$props.status;
80
94
  return (0, _react2.jsx)(_SizeableAvatar.SizeableAvatar, {
81
95
  appearance: "big",
@@ -120,10 +134,10 @@ var ExternalUserOptionImpl = /*#__PURE__*/function (_React$PureComponent) {
120
134
  }, {
121
135
  key: "formattedTooltipContent",
122
136
  value: function formattedTooltipContent() {
123
- var _this$props$user2 = this.props.user,
124
- id = _this$props$user2.id,
125
- requiresSourceHydration = _this$props$user2.requiresSourceHydration,
126
- sources = _this$props$user2.sources;
137
+ var _this$props$user3 = this.props.user,
138
+ id = _this$props$user3.id,
139
+ requiresSourceHydration = _this$props$user3.requiresSourceHydration,
140
+ sources = _this$props$user3.sources;
127
141
  return (0, _react2.jsx)(_ExternalUserSourcesContainer.ExternalUserSourcesContainer, {
128
142
  accountId: id,
129
143
  shouldFetchSources: Boolean(requiresSourceHydration),
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.Option = void 0;
8
+ var _primitives = require("@atlaskit/primitives");
8
9
  var _select = require("@atlaskit/select");
10
+ var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
9
11
  var _react = _interopRequireDefault(require("react"));
10
12
  var _UserOption = require("./UserOption");
11
13
  var _ExternalUserOption = _interopRequireDefault(require("./ExternalUserOption"));
@@ -76,8 +78,20 @@ var dataOption = function dataOption(_ref2) {
76
78
  }
77
79
  return null;
78
80
  };
81
+ var dataOptionWithTooltip = function dataOptionWithTooltip(props) {
82
+ var _props$data;
83
+ if ((_props$data = props.data) !== null && _props$data !== void 0 && (_props$data = _props$data.data) !== null && _props$data !== void 0 && _props$data.tooltip) {
84
+ var _props$data2;
85
+ return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
86
+ content: (_props$data2 = props.data) === null || _props$data2 === void 0 || (_props$data2 = _props$data2.data) === null || _props$data2 === void 0 ? void 0 : _props$data2.tooltip
87
+ }, function (tooltipProps) {
88
+ return /*#__PURE__*/_react.default.createElement(_primitives.Box, tooltipProps, dataOption(props));
89
+ });
90
+ }
91
+ return dataOption(props);
92
+ };
79
93
  var Option = exports.Option = function Option(props) {
80
94
  return /*#__PURE__*/_react.default.createElement(_select.components.Option, props, /*#__PURE__*/_react.default.createElement(_react.default.Suspense, {
81
95
  fallback: defaultOption(props)
82
- }, dataOption(props)));
96
+ }, dataOptionWithTooltip(props)));
83
97
  };
@@ -2,7 +2,7 @@ import { createAndFireEvent } from '@atlaskit/analytics-next';
2
2
  import { v4 as uuidv4 } from 'uuid';
3
3
  import { isCustom, isExternalUser } from './components/utils';
4
4
  const packageName = "@atlaskit/user-picker";
5
- const packageVersion = "10.14.0";
5
+ const packageVersion = "10.16.0";
6
6
  const UUID_REGEXP_TEAMS_GROUPS = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
7
7
  const UUID_REGEXP_OLD_AAID = /^[a-fA-F0-9]{1,8}:[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
8
8
  const UUID_REGEXP_NEW_AAID = /^[a-fA-F0-9]{24,24}$/;
@@ -39,18 +39,31 @@ class ExternalUserOptionImpl extends React.PureComponent {
39
39
  });
40
40
  _defineProperty(this, "renderSecondaryText", () => {
41
41
  const {
42
+ byline,
42
43
  email
43
44
  } = this.props.user;
44
- if (!email) {
45
+ if (!byline && !email) {
45
46
  return;
46
47
  }
47
- const [emailUser, emailDomain] = email.split('@');
48
- const emailDomainWithAt = `@${emailDomain}`;
49
- return jsx("span", {
50
- css: textWrapper(this.props.isSelected ? `var(--ds-text-selected, ${B400})` : `var(--ds-text-subtlest, ${N200})`)
51
- }, emailUser, jsx("span", {
52
- css: emailDomainWrapper
53
- }, emailDomainWithAt));
48
+ const textColor = this.props.isSelected ? `var(--ds-text-selected, ${B400})` : `var(--ds-text-subtlest, ${N200})`;
49
+
50
+ // Render byline if present
51
+ if (byline) {
52
+ return jsx("span", {
53
+ css: textWrapper(textColor)
54
+ }, byline);
55
+ }
56
+
57
+ // Render email if byline isn't present
58
+ if (email) {
59
+ const [emailUser, emailDomain] = email.split('@');
60
+ const emailDomainWithAt = `@${emailDomain}`;
61
+ return jsx("span", {
62
+ css: textWrapper(textColor)
63
+ }, emailUser, jsx("span", {
64
+ css: emailDomainWrapper
65
+ }, emailDomainWithAt));
66
+ }
54
67
  });
55
68
  _defineProperty(this, "renderAvatar", () => {
56
69
  const {
@@ -1,4 +1,6 @@
1
+ import { Box } from '@atlaskit/primitives';
1
2
  import { components } from '@atlaskit/select';
3
+ import Tooltip from '@atlaskit/tooltip';
2
4
  import React from 'react';
3
5
  import { UserOption } from './UserOption';
4
6
  import AsyncExternalOption from './ExternalUserOption';
@@ -72,6 +74,16 @@ const dataOption = ({
72
74
  }
73
75
  return null;
74
76
  };
77
+ const dataOptionWithTooltip = props => {
78
+ var _props$data, _props$data$data;
79
+ if ((_props$data = props.data) !== null && _props$data !== void 0 && (_props$data$data = _props$data.data) !== null && _props$data$data !== void 0 && _props$data$data.tooltip) {
80
+ var _props$data2, _props$data2$data;
81
+ return /*#__PURE__*/React.createElement(Tooltip, {
82
+ content: (_props$data2 = props.data) === null || _props$data2 === void 0 ? void 0 : (_props$data2$data = _props$data2.data) === null || _props$data2$data === void 0 ? void 0 : _props$data2$data.tooltip
83
+ }, tooltipProps => /*#__PURE__*/React.createElement(Box, tooltipProps, dataOption(props)));
84
+ }
85
+ return dataOption(props);
86
+ };
75
87
  export const Option = props => /*#__PURE__*/React.createElement(components.Option, props, /*#__PURE__*/React.createElement(React.Suspense, {
76
88
  fallback: defaultOption(props)
77
- }, dataOption(props)));
89
+ }, dataOptionWithTooltip(props)));
@@ -5,7 +5,7 @@ import { createAndFireEvent } from '@atlaskit/analytics-next';
5
5
  import { v4 as uuidv4 } from 'uuid';
6
6
  import { isCustom, isExternalUser } from './components/utils';
7
7
  var packageName = "@atlaskit/user-picker";
8
- var packageVersion = "10.14.0";
8
+ var packageVersion = "10.16.0";
9
9
  var UUID_REGEXP_TEAMS_GROUPS = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
10
10
  var UUID_REGEXP_OLD_AAID = /^[a-fA-F0-9]{1,8}:[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/;
11
11
  var UUID_REGEXP_NEW_AAID = /^[a-fA-F0-9]{24,24}$/;
@@ -50,26 +50,40 @@ var ExternalUserOptionImpl = /*#__PURE__*/function (_React$PureComponent) {
50
50
  }, name);
51
51
  });
52
52
  _defineProperty(_assertThisInitialized(_this), "renderSecondaryText", function () {
53
- var email = _this.props.user.email;
54
- if (!email) {
53
+ var _this$props$user = _this.props.user,
54
+ byline = _this$props$user.byline,
55
+ email = _this$props$user.email;
56
+ if (!byline && !email) {
55
57
  return;
56
58
  }
57
- var _email$split = email.split('@'),
58
- _email$split2 = _slicedToArray(_email$split, 2),
59
- emailUser = _email$split2[0],
60
- emailDomain = _email$split2[1];
61
- var emailDomainWithAt = "@".concat(emailDomain);
62
- return jsx("span", {
63
- css: textWrapper(_this.props.isSelected ? "var(--ds-text-selected, ".concat(B400, ")") : "var(--ds-text-subtlest, ".concat(N200, ")"))
64
- }, emailUser, jsx("span", {
65
- css: emailDomainWrapper
66
- }, emailDomainWithAt));
59
+ var textColor = _this.props.isSelected ? "var(--ds-text-selected, ".concat(B400, ")") : "var(--ds-text-subtlest, ".concat(N200, ")");
60
+
61
+ // Render byline if present
62
+ if (byline) {
63
+ return jsx("span", {
64
+ css: textWrapper(textColor)
65
+ }, byline);
66
+ }
67
+
68
+ // Render email if byline isn't present
69
+ if (email) {
70
+ var _email$split = email.split('@'),
71
+ _email$split2 = _slicedToArray(_email$split, 2),
72
+ emailUser = _email$split2[0],
73
+ emailDomain = _email$split2[1];
74
+ var emailDomainWithAt = "@".concat(emailDomain);
75
+ return jsx("span", {
76
+ css: textWrapper(textColor)
77
+ }, emailUser, jsx("span", {
78
+ css: emailDomainWrapper
79
+ }, emailDomainWithAt));
80
+ }
67
81
  });
68
82
  _defineProperty(_assertThisInitialized(_this), "renderAvatar", function () {
69
83
  var _this$props = _this.props,
70
- _this$props$user = _this$props.user,
71
- avatarUrl = _this$props$user.avatarUrl,
72
- name = _this$props$user.name,
84
+ _this$props$user2 = _this$props.user,
85
+ avatarUrl = _this$props$user2.avatarUrl,
86
+ name = _this$props$user2.name,
73
87
  status = _this$props.status;
74
88
  return jsx(SizeableAvatar, {
75
89
  appearance: "big",
@@ -114,10 +128,10 @@ var ExternalUserOptionImpl = /*#__PURE__*/function (_React$PureComponent) {
114
128
  }, {
115
129
  key: "formattedTooltipContent",
116
130
  value: function formattedTooltipContent() {
117
- var _this$props$user2 = this.props.user,
118
- id = _this$props$user2.id,
119
- requiresSourceHydration = _this$props$user2.requiresSourceHydration,
120
- sources = _this$props$user2.sources;
131
+ var _this$props$user3 = this.props.user,
132
+ id = _this$props$user3.id,
133
+ requiresSourceHydration = _this$props$user3.requiresSourceHydration,
134
+ sources = _this$props$user3.sources;
121
135
  return jsx(ExternalUserSourcesContainer, {
122
136
  accountId: id,
123
137
  shouldFetchSources: Boolean(requiresSourceHydration),
@@ -1,4 +1,6 @@
1
+ import { Box } from '@atlaskit/primitives';
1
2
  import { components } from '@atlaskit/select';
3
+ import Tooltip from '@atlaskit/tooltip';
2
4
  import React from 'react';
3
5
  import { UserOption } from './UserOption';
4
6
  import AsyncExternalOption from './ExternalUserOption';
@@ -69,8 +71,20 @@ var dataOption = function dataOption(_ref2) {
69
71
  }
70
72
  return null;
71
73
  };
74
+ var dataOptionWithTooltip = function dataOptionWithTooltip(props) {
75
+ var _props$data;
76
+ if ((_props$data = props.data) !== null && _props$data !== void 0 && (_props$data = _props$data.data) !== null && _props$data !== void 0 && _props$data.tooltip) {
77
+ var _props$data2;
78
+ return /*#__PURE__*/React.createElement(Tooltip, {
79
+ content: (_props$data2 = props.data) === null || _props$data2 === void 0 || (_props$data2 = _props$data2.data) === null || _props$data2 === void 0 ? void 0 : _props$data2.tooltip
80
+ }, function (tooltipProps) {
81
+ return /*#__PURE__*/React.createElement(Box, tooltipProps, dataOption(props));
82
+ });
83
+ }
84
+ return dataOption(props);
85
+ };
72
86
  export var Option = function Option(props) {
73
87
  return /*#__PURE__*/React.createElement(components.Option, props, /*#__PURE__*/React.createElement(React.Suspense, {
74
88
  fallback: defaultOption(props)
75
- }, dataOption(props)));
89
+ }, dataOptionWithTooltip(props)));
76
90
  };
@@ -239,6 +239,7 @@ export interface OptionData {
239
239
  lozenge?: string | LozengeProps | ReactNode;
240
240
  name: string;
241
241
  type?: 'user' | 'team' | 'email' | 'group' | 'custom' | 'external_user';
242
+ tooltip?: string;
242
243
  }
243
244
  export declare const UserType = "user";
244
245
  export type UserSource = 'google' | 'slack' | 'microsoft' | 'jira' | 'confluence' | 'other-atlassian';
@@ -256,6 +257,7 @@ export interface User extends OptionData {
256
257
  type?: 'user' | 'external_user';
257
258
  email?: string;
258
259
  isExternal?: boolean;
260
+ title?: string;
259
261
  }
260
262
  export type LozengeColor = 'default' | 'success' | 'removed' | 'inprogress' | 'new' | 'moved';
261
263
  export interface LozengeProps {
@@ -242,6 +242,7 @@ export interface OptionData {
242
242
  lozenge?: string | LozengeProps | ReactNode;
243
243
  name: string;
244
244
  type?: 'user' | 'team' | 'email' | 'group' | 'custom' | 'external_user';
245
+ tooltip?: string;
245
246
  }
246
247
  export declare const UserType = "user";
247
248
  export type UserSource = 'google' | 'slack' | 'microsoft' | 'jira' | 'confluence' | 'other-atlassian';
@@ -259,6 +260,7 @@ export interface User extends OptionData {
259
260
  type?: 'user' | 'external_user';
260
261
  email?: string;
261
262
  isExternal?: boolean;
263
+ title?: string;
262
264
  }
263
265
  export type LozengeColor = 'default' | 'success' | 'removed' | 'inprogress' | 'new' | 'moved';
264
266
  export interface LozengeProps {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/user-picker",
3
- "version": "10.14.0",
3
+ "version": "10.16.0",
4
4
  "description": "Fabric component for display a dropdown to select a user from",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -22,9 +22,14 @@
22
22
  },
23
23
  "sideEffects": false,
24
24
  "atlaskit:src": "src/index.ts",
25
+ "af:exports": {
26
+ ".": "./src/index.ts",
27
+ "./analytics": "./src/analytics.ts",
28
+ "./option": "./src/option.ts",
29
+ "./types": "./src/types.ts"
30
+ },
25
31
  "atlassian": {
26
32
  "team": "Search Platform: Search Experience",
27
- "deprecatedAutoEntryPoints": true,
28
33
  "releaseModel": "continuous",
29
34
  "website": {
30
35
  "name": "User Picker"
@@ -37,17 +42,18 @@
37
42
  "access": "public"
38
43
  },
39
44
  "dependencies": {
40
- "@atlaskit/analytics-next": "^9.1.0",
45
+ "@atlaskit/analytics-next": "^9.2.0",
41
46
  "@atlaskit/avatar": "^21.4.0",
42
47
  "@atlaskit/icon": "^22.0.0",
43
48
  "@atlaskit/logo": "^13.15.0",
44
49
  "@atlaskit/lozenge": "^11.6.0",
45
50
  "@atlaskit/platform-feature-flags": "^0.2.0",
46
51
  "@atlaskit/popper": "^5.5.0",
52
+ "@atlaskit/primitives": "^2.0.0",
47
53
  "@atlaskit/select": "^17.0.3",
48
54
  "@atlaskit/spinner": "^16.0.0",
49
55
  "@atlaskit/theme": "^12.6.0",
50
- "@atlaskit/tokens": "^1.34.0",
56
+ "@atlaskit/tokens": "^1.35.0",
51
57
  "@atlaskit/tooltip": "^18.1.0",
52
58
  "@atlaskit/ufo": "^0.2.0",
53
59
  "@babel/runtime": "^7.0.0",
@@ -64,8 +70,7 @@
64
70
  "devDependencies": {
65
71
  "@atlaskit/analytics-viewer": "^0.5.0",
66
72
  "@atlaskit/elements-test-helpers": "^0.7.0",
67
- "@atlaskit/heading": "^1.5.0",
68
- "@atlaskit/primitives": "^1.18.0",
73
+ "@atlaskit/heading": "^1.6.0",
69
74
  "@atlaskit/visual-regression": "*",
70
75
  "@atlassian/atlassian-frontend-prettier-config-1.0.1": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.1",
71
76
  "@emotion/styled": "^11.0.0",