@atlaskit/user-picker 9.3.6 → 9.4.1

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 (103) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/analytics/package.json +8 -1
  3. package/dist/cjs/components/AvatarItemOption.js +37 -19
  4. package/dist/cjs/components/TeamOption/main.js +12 -1
  5. package/dist/cjs/components/utils.js +8 -2
  6. package/dist/cjs/version.json +1 -1
  7. package/dist/es2019/components/AvatarItemOption.js +41 -24
  8. package/dist/es2019/components/TeamOption/main.js +13 -1
  9. package/dist/es2019/components/utils.js +4 -1
  10. package/dist/es2019/version.json +1 -1
  11. package/dist/esm/components/AvatarItemOption.js +35 -19
  12. package/dist/esm/components/TeamOption/main.js +13 -1
  13. package/dist/esm/components/utils.js +3 -0
  14. package/dist/esm/version.json +1 -1
  15. package/dist/types/components/AvatarItemOption.d.ts +1 -1
  16. package/dist/types/components/PopupUserPicker.d.ts +1 -1
  17. package/dist/types/components/TeamOption/main.d.ts +1 -0
  18. package/dist/types/components/utils.d.ts +3 -2
  19. package/dist/types/types.d.ts +2 -1
  20. package/dist/types-ts4.0/analytics.d.ts +24 -0
  21. package/dist/types-ts4.0/clients/UserSourceProvider.d.ts +11 -0
  22. package/dist/types-ts4.0/components/AddOptionAvatar.d.ts +6 -0
  23. package/dist/types-ts4.0/components/AvatarItemOption.d.ts +11 -0
  24. package/dist/types-ts4.0/components/BaseUserPicker.d.ts +60 -0
  25. package/dist/types-ts4.0/components/ClearIndicator.d.ts +6 -0
  26. package/dist/types-ts4.0/components/EmailOption/index.d.ts +3 -0
  27. package/dist/types-ts4.0/components/EmailOption/main.d.ts +17 -0
  28. package/dist/types-ts4.0/components/ExternalUserOption/ExternalAvatarItemOption.d.ts +9 -0
  29. package/dist/types-ts4.0/components/ExternalUserOption/InfoIcon.d.ts +3 -0
  30. package/dist/types-ts4.0/components/ExternalUserOption/SourcesTooltipContent.d.ts +6 -0
  31. package/dist/types-ts4.0/components/ExternalUserOption/index.d.ts +3 -0
  32. package/dist/types-ts4.0/components/ExternalUserOption/main.d.ts +12 -0
  33. package/dist/types-ts4.0/components/ExternalUserSourcesContainer.d.ts +15 -0
  34. package/dist/types-ts4.0/components/GroupOption/index.d.ts +3 -0
  35. package/dist/types-ts4.0/components/GroupOption/main.d.ts +15 -0
  36. package/dist/types-ts4.0/components/HighlightText.d.ts +9 -0
  37. package/dist/types-ts4.0/components/Input.d.ts +11 -0
  38. package/dist/types-ts4.0/components/MessagesIntlProvider.d.ts +3 -0
  39. package/dist/types-ts4.0/components/MultiValue.d.ts +25 -0
  40. package/dist/types-ts4.0/components/MultiValueContainer.d.ts +30 -0
  41. package/dist/types-ts4.0/components/Option.d.ts +14 -0
  42. package/dist/types-ts4.0/components/PopupControl.d.ts +6 -0
  43. package/dist/types-ts4.0/components/PopupInput.d.ts +13 -0
  44. package/dist/types-ts4.0/components/PopupUserPicker.d.ts +39 -0
  45. package/dist/types-ts4.0/components/SingleValue.d.ts +8 -0
  46. package/dist/types-ts4.0/components/SingleValueContainer.d.ts +8 -0
  47. package/dist/types-ts4.0/components/SizeableAvatar.d.ts +10 -0
  48. package/dist/types-ts4.0/components/TeamOption/index.d.ts +3 -0
  49. package/dist/types-ts4.0/components/TeamOption/main.d.ts +15 -0
  50. package/dist/types-ts4.0/components/UserOption.d.ts +14 -0
  51. package/dist/types-ts4.0/components/UserPicker.d.ts +16 -0
  52. package/dist/types-ts4.0/components/assets/github.d.ts +2 -0
  53. package/dist/types-ts4.0/components/assets/google.d.ts +2 -0
  54. package/dist/types-ts4.0/components/assets/microsoft.d.ts +2 -0
  55. package/dist/types-ts4.0/components/assets/slack.d.ts +2 -0
  56. package/dist/types-ts4.0/components/batch.d.ts +1 -0
  57. package/dist/types-ts4.0/components/components.d.ts +55 -0
  58. package/dist/types-ts4.0/components/creatable.d.ts +12 -0
  59. package/dist/types-ts4.0/components/creatableEmailSuggestion.d.ts +19 -0
  60. package/dist/types-ts4.0/components/emailValidation.d.ts +3 -0
  61. package/dist/types-ts4.0/components/i18n.d.ts +127 -0
  62. package/dist/types-ts4.0/components/popup.d.ts +48 -0
  63. package/dist/types-ts4.0/components/styles.d.ts +17 -0
  64. package/dist/types-ts4.0/components/utils.d.ts +28 -0
  65. package/dist/types-ts4.0/i18n/cs.d.ts +33 -0
  66. package/dist/types-ts4.0/i18n/da.d.ts +33 -0
  67. package/dist/types-ts4.0/i18n/de.d.ts +33 -0
  68. package/dist/types-ts4.0/i18n/en.d.ts +7 -0
  69. package/dist/types-ts4.0/i18n/en_GB.d.ts +7 -0
  70. package/dist/types-ts4.0/i18n/en_ZZ.d.ts +33 -0
  71. package/dist/types-ts4.0/i18n/es.d.ts +33 -0
  72. package/dist/types-ts4.0/i18n/et.d.ts +15 -0
  73. package/dist/types-ts4.0/i18n/fi.d.ts +33 -0
  74. package/dist/types-ts4.0/i18n/fr.d.ts +33 -0
  75. package/dist/types-ts4.0/i18n/hu.d.ts +33 -0
  76. package/dist/types-ts4.0/i18n/index.d.ts +36 -0
  77. package/dist/types-ts4.0/i18n/is.d.ts +7 -0
  78. package/dist/types-ts4.0/i18n/it.d.ts +33 -0
  79. package/dist/types-ts4.0/i18n/ja.d.ts +33 -0
  80. package/dist/types-ts4.0/i18n/ko.d.ts +33 -0
  81. package/dist/types-ts4.0/i18n/languages.d.ts +27 -0
  82. package/dist/types-ts4.0/i18n/nb.d.ts +33 -0
  83. package/dist/types-ts4.0/i18n/nl.d.ts +33 -0
  84. package/dist/types-ts4.0/i18n/pl.d.ts +33 -0
  85. package/dist/types-ts4.0/i18n/pt_BR.d.ts +33 -0
  86. package/dist/types-ts4.0/i18n/pt_PT.d.ts +15 -0
  87. package/dist/types-ts4.0/i18n/ro.d.ts +7 -0
  88. package/dist/types-ts4.0/i18n/ru.d.ts +33 -0
  89. package/dist/types-ts4.0/i18n/sk.d.ts +15 -0
  90. package/dist/types-ts4.0/i18n/sv.d.ts +33 -0
  91. package/dist/types-ts4.0/i18n/th.d.ts +33 -0
  92. package/dist/types-ts4.0/i18n/tr.d.ts +33 -0
  93. package/dist/types-ts4.0/i18n/uk.d.ts +33 -0
  94. package/dist/types-ts4.0/i18n/vi.d.ts +33 -0
  95. package/dist/types-ts4.0/i18n/zh.d.ts +33 -0
  96. package/dist/types-ts4.0/i18n/zh_TW.d.ts +33 -0
  97. package/dist/types-ts4.0/index.d.ts +7 -0
  98. package/dist/types-ts4.0/types.d.ts +294 -0
  99. package/dist/types-ts4.0/util/i18n-util.d.ts +11 -0
  100. package/dist/types-ts4.0/util/ufoExperiences.d.ts +10 -0
  101. package/package.json +11 -4
  102. package/report.api.md +167 -194
  103. package/types/package.json +8 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/user-picker
2
2
 
3
+ ## 9.4.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`8cc2f888c83`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8cc2f888c83) - Upgrade Typescript from `4.3.5` to `4.5.5`
8
+
9
+ ## 9.4.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`47c6607c914`](https://bitbucket.org/atlassian/atlassian-frontend/commits/47c6607c914) - [ux] Adding ability for Options of type Team to allow for custom html in the lozenge prop. Added byline prop for type Team which will override the default byline generated from includesYou and memberCount props.
14
+
3
15
  ## 9.3.6
4
16
 
5
17
  ### Patch Changes
@@ -4,5 +4,12 @@
4
4
  "module": "../dist/esm/analytics.js",
5
5
  "module:es2019": "../dist/es2019/analytics.js",
6
6
  "sideEffects": false,
7
- "types": "../dist/types/analytics.d.ts"
7
+ "types": "../dist/types/analytics.d.ts",
8
+ "typesVersions": {
9
+ ">=4.0 <4.5": {
10
+ "*": [
11
+ "../dist/types-ts4.0/analytics.d.ts"
12
+ ]
13
+ }
14
+ }
8
15
  }
@@ -13,10 +13,14 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
13
13
 
14
14
  var _react = _interopRequireDefault(require("react"));
15
15
 
16
+ var _constants = require("@atlaskit/theme/constants");
17
+
16
18
  var _core = require("@emotion/core");
17
19
 
18
20
  var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
19
21
 
22
+ var _utils = require("./utils");
23
+
20
24
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
25
 
22
26
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -45,6 +49,13 @@ var wrapper = (0, _core.css)({
45
49
  width: '100%',
46
50
  cursor: 'pointer'
47
51
  });
52
+ var optionWrapper = (0, _core.css)({
53
+ maxWidth: '100%',
54
+ minWidth: 0,
55
+ flex: '1 1 100%',
56
+ lineHeight: '1.4',
57
+ paddingLeft: "".concat((0, _constants.gridSize)(), "px")
58
+ });
48
59
 
49
60
  var getTextStyle = function getTextStyle(isSecondary) {
50
61
  var secondaryCssArgs = isSecondary ? {
@@ -66,7 +77,7 @@ var textWrapper = function textWrapper(color) {
66
77
  return (0, _core.css)({
67
78
  overflow: 'hidden',
68
79
  textOverflow: 'ellipsis',
69
- display: 'inline-block',
80
+ display: 'inline',
70
81
  color: color
71
82
  });
72
83
  };
@@ -78,29 +89,36 @@ var AvatarItemOption = function AvatarItemOption(_ref) {
78
89
  primaryText = _ref.primaryText,
79
90
  secondaryText = _ref.secondaryText,
80
91
  lozenge = _ref.lozenge;
92
+
93
+ var renderLozenge = function renderLozenge() {
94
+ if ((0, _utils.isLozengeText)(lozenge)) {
95
+ if (lozenge !== null && lozenge !== void 0 && lozenge.tooltip) {
96
+ // Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
97
+ // Lozenge text) or tooltip won't work
98
+ return (0, _core.jsx)(_react.default.Suspense, {
99
+ fallback: (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text)
100
+ }, (0, _core.jsx)(AsyncTooltip, {
101
+ content: lozenge.tooltip
102
+ }, (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text)));
103
+ }
104
+
105
+ return (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text);
106
+ }
107
+
108
+ return lozenge;
109
+ };
110
+
81
111
  return (0, _core.jsx)("span", {
82
112
  css: wrapper
83
113
  }, avatar, (0, _core.jsx)("div", {
84
- style: {
85
- maxWidth: '100%',
86
- minWidth: 0,
87
- flex: '1 1 100%',
88
- lineHeight: '1.4',
89
- paddingLeft: '8px'
90
- }
91
- }, (0, _core.jsx)("div", null, (0, _core.jsx)("span", {
114
+ css: optionWrapper
115
+ }, (0, _core.jsx)("div", null, (0, _core.jsx)("div", {
92
116
  css: getTextStyle()
93
- }, primaryText), (0, _core.jsx)("span", {
94
- css: additionalInfo
95
- }, (lozenge === null || lozenge === void 0 ? void 0 : lozenge.text) && (lozenge !== null && lozenge !== void 0 && lozenge.tooltip ? // Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
96
- // Lozenge text) or tooltip won't work
97
- (0, _core.jsx)(_react.default.Suspense, {
98
- fallback: (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text)
99
- }, (0, _core.jsx)(AsyncTooltip, {
100
- content: lozenge.tooltip
101
- }, (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text))) : (0, _core.jsx)(_lozenge.default, lozenge, lozenge.text)))), (0, _core.jsx)("div", null, (0, _core.jsx)("span", {
117
+ }, primaryText), secondaryText && (0, _core.jsx)("div", {
102
118
  css: getTextStyle(true)
103
- }, secondaryText))));
119
+ }, secondaryText))), lozenge && (0, _core.jsx)("div", {
120
+ css: additionalInfo
121
+ }, renderLozenge()));
104
122
  };
105
123
 
106
124
  exports.AvatarItemOption = AvatarItemOption;
@@ -124,6 +124,17 @@ var TeamOption = /*#__PURE__*/function (_React$PureComponent) {
124
124
  text: _this.props.team.lozenge
125
125
  } : _this.props.team.lozenge;
126
126
  });
127
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderCustomByLine", function () {
128
+ var _this$props$team4;
129
+
130
+ if (!((_this$props$team4 = _this.props.team) !== null && _this$props$team4 !== void 0 && _this$props$team4.byline)) {
131
+ return undefined;
132
+ }
133
+
134
+ return (0, _core.jsx)("span", {
135
+ css: (0, _AvatarItemOption.textWrapper)(_this.props.isSelected ? (0, _tokens.token)('color.text.selected', _colors.B400) : (0, _tokens.token)('color.text.subtlest', _colors.N200))
136
+ }, _this.props.team.byline);
137
+ });
127
138
  return _this;
128
139
  }
129
140
 
@@ -132,7 +143,7 @@ var TeamOption = /*#__PURE__*/function (_React$PureComponent) {
132
143
  value: function render() {
133
144
  return (0, _core.jsx)(_AvatarItemOption.AvatarItemOption, {
134
145
  avatar: this.renderAvatar(),
135
- secondaryText: this.renderByline(),
146
+ secondaryText: this.renderCustomByLine() || this.renderByline(),
136
147
  primaryText: this.getPrimaryText(),
137
148
  lozenge: this.getLozengeProps()
138
149
  });
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.optionToSelectableOptions = exports.optionToSelectableOption = exports.isUser = exports.isTeam = exports.isSingleValue = exports.isPopupUserPickerByProps = exports.isPopupUserPickerByComponent = exports.isIterable = exports.isGroup = exports.isExternalUser = exports.isEmail = exports.isDefaultValuePopulated = exports.isChildInput = exports.hasValue = exports.getOptions = exports.getAvatarUrl = exports.getAvatarSize = exports.extractOptionValue = exports.callCallback = void 0;
8
+ exports.optionToSelectableOptions = exports.optionToSelectableOption = exports.isUser = exports.isTeam = exports.isSingleValue = exports.isPopupUserPickerByProps = exports.isPopupUserPickerByComponent = exports.isLozengeText = exports.isIterable = exports.isGroup = exports.isExternalUser = exports.isEmail = exports.isDefaultValuePopulated = exports.isChildInput = exports.hasValue = exports.getOptions = exports.getAvatarUrl = exports.getAvatarSize = exports.extractOptionValue = exports.callCallback = void 0;
9
9
 
10
10
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
11
 
@@ -182,4 +182,10 @@ var isPopupUserPickerByProps = function isPopupUserPickerByProps(selectProps) {
182
182
  return selectProps.searchThreshold === -1;
183
183
  };
184
184
 
185
- exports.isPopupUserPickerByProps = isPopupUserPickerByProps;
185
+ exports.isPopupUserPickerByProps = isPopupUserPickerByProps;
186
+
187
+ var isLozengeText = function isLozengeText(lozengeProp) {
188
+ return (lozengeProp === null || lozengeProp === void 0 ? void 0 : lozengeProp.hasOwnProperty('text')) || false;
189
+ };
190
+
191
+ exports.isLozengeText = isLozengeText;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/user-picker",
3
- "version": "9.3.6",
3
+ "version": "9.4.1",
4
4
  "sideEffects": false
5
5
  }
@@ -1,7 +1,9 @@
1
1
  /** @jsx jsx */
2
2
  import React from 'react';
3
+ import { gridSize } from '@atlaskit/theme/constants';
3
4
  import { css, jsx } from '@emotion/core';
4
5
  import Lozenge from '@atlaskit/lozenge';
6
+ import { isLozengeText } from './utils';
5
7
  const AsyncTooltip = /*#__PURE__*/React.lazy(() => import(
6
8
  /* webpackChunkName: "@atlaskit-internal_@atlaskit/tooltip" */
7
9
  '@atlaskit/tooltip').then(module => {
@@ -19,6 +21,13 @@ const wrapper = css({
19
21
  width: '100%',
20
22
  cursor: 'pointer'
21
23
  });
24
+ const optionWrapper = css({
25
+ maxWidth: '100%',
26
+ minWidth: 0,
27
+ flex: '1 1 100%',
28
+ lineHeight: '1.4',
29
+ paddingLeft: `${gridSize()}px`
30
+ });
22
31
 
23
32
  const getTextStyle = isSecondary => {
24
33
  const secondaryCssArgs = isSecondary ? {
@@ -39,7 +48,7 @@ const additionalInfo = css({
39
48
  export const textWrapper = color => css({
40
49
  overflow: 'hidden',
41
50
  textOverflow: 'ellipsis',
42
- display: 'inline-block',
51
+ display: 'inline',
43
52
  color
44
53
  });
45
54
  export const AvatarItemOption = ({
@@ -47,26 +56,34 @@ export const AvatarItemOption = ({
47
56
  primaryText,
48
57
  secondaryText,
49
58
  lozenge
50
- }) => jsx("span", {
51
- css: wrapper
52
- }, avatar, jsx("div", {
53
- style: {
54
- maxWidth: '100%',
55
- minWidth: 0,
56
- flex: '1 1 100%',
57
- lineHeight: '1.4',
58
- paddingLeft: '8px'
59
- }
60
- }, jsx("div", null, jsx("span", {
61
- css: getTextStyle()
62
- }, primaryText), jsx("span", {
63
- css: additionalInfo
64
- }, (lozenge === null || lozenge === void 0 ? void 0 : lozenge.text) && (lozenge !== null && lozenge !== void 0 && lozenge.tooltip ? // Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
65
- // Lozenge text) or tooltip won't work
66
- jsx(React.Suspense, {
67
- fallback: jsx(Lozenge, lozenge, lozenge.text)
68
- }, jsx(AsyncTooltip, {
69
- content: lozenge.tooltip
70
- }, jsx(Lozenge, lozenge, lozenge.text))) : jsx(Lozenge, lozenge, lozenge.text)))), jsx("div", null, jsx("span", {
71
- css: getTextStyle(true)
72
- }, secondaryText))));
59
+ }) => {
60
+ const renderLozenge = () => {
61
+ if (isLozengeText(lozenge)) {
62
+ if (lozenge !== null && lozenge !== void 0 && lozenge.tooltip) {
63
+ // Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
64
+ // Lozenge text) or tooltip won't work
65
+ return jsx(React.Suspense, {
66
+ fallback: jsx(Lozenge, lozenge, lozenge.text)
67
+ }, jsx(AsyncTooltip, {
68
+ content: lozenge.tooltip
69
+ }, jsx(Lozenge, lozenge, lozenge.text)));
70
+ }
71
+
72
+ return jsx(Lozenge, lozenge, lozenge.text);
73
+ }
74
+
75
+ return lozenge;
76
+ };
77
+
78
+ return jsx("span", {
79
+ css: wrapper
80
+ }, avatar, jsx("div", {
81
+ css: optionWrapper
82
+ }, jsx("div", null, jsx("div", {
83
+ css: getTextStyle()
84
+ }, primaryText), secondaryText && jsx("div", {
85
+ css: getTextStyle(true)
86
+ }, secondaryText))), lozenge && jsx("div", {
87
+ css: additionalInfo
88
+ }, renderLozenge()));
89
+ };
@@ -87,12 +87,24 @@ export class TeamOption extends React.PureComponent {
87
87
  _defineProperty(this, "getLozengeProps", () => typeof this.props.team.lozenge === 'string' ? {
88
88
  text: this.props.team.lozenge
89
89
  } : this.props.team.lozenge);
90
+
91
+ _defineProperty(this, "renderCustomByLine", () => {
92
+ var _this$props$team;
93
+
94
+ if (!((_this$props$team = this.props.team) !== null && _this$props$team !== void 0 && _this$props$team.byline)) {
95
+ return undefined;
96
+ }
97
+
98
+ return jsx("span", {
99
+ css: textWrapper(this.props.isSelected ? token('color.text.selected', B400) : token('color.text.subtlest', N200))
100
+ }, this.props.team.byline);
101
+ });
90
102
  }
91
103
 
92
104
  render() {
93
105
  return jsx(AvatarItemOption, {
94
106
  avatar: this.renderAvatar(),
95
- secondaryText: this.renderByline(),
107
+ secondaryText: this.renderCustomByLine() || this.renderByline(),
96
108
  primaryText: this.getPrimaryText(),
97
109
  lozenge: this.getLozengeProps()
98
110
  });
@@ -76,4 +76,7 @@ export const getAvatarUrl = optionData => {
76
76
  return undefined;
77
77
  };
78
78
  export const isPopupUserPickerByComponent = SelectComponent => SelectComponent === PopupSelect;
79
- export const isPopupUserPickerByProps = selectProps => selectProps.searchThreshold === -1;
79
+ export const isPopupUserPickerByProps = selectProps => selectProps.searchThreshold === -1;
80
+ export const isLozengeText = lozengeProp => {
81
+ return (lozengeProp === null || lozengeProp === void 0 ? void 0 : lozengeProp.hasOwnProperty('text')) || false;
82
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/user-picker",
3
- "version": "9.3.6",
3
+ "version": "9.4.1",
4
4
  "sideEffects": false
5
5
  }
@@ -6,8 +6,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
6
6
 
7
7
  /** @jsx jsx */
8
8
  import React from 'react';
9
+ import { gridSize } from '@atlaskit/theme/constants';
9
10
  import { css, jsx } from '@emotion/core';
10
11
  import Lozenge from '@atlaskit/lozenge';
12
+ import { isLozengeText } from './utils';
11
13
  var AsyncTooltip = /*#__PURE__*/React.lazy(function () {
12
14
  return import(
13
15
  /* webpackChunkName: "@atlaskit-internal_@atlaskit/tooltip" */
@@ -27,6 +29,13 @@ var wrapper = css({
27
29
  width: '100%',
28
30
  cursor: 'pointer'
29
31
  });
32
+ var optionWrapper = css({
33
+ maxWidth: '100%',
34
+ minWidth: 0,
35
+ flex: '1 1 100%',
36
+ lineHeight: '1.4',
37
+ paddingLeft: "".concat(gridSize(), "px")
38
+ });
30
39
 
31
40
  var getTextStyle = function getTextStyle(isSecondary) {
32
41
  var secondaryCssArgs = isSecondary ? {
@@ -47,7 +56,7 @@ export var textWrapper = function textWrapper(color) {
47
56
  return css({
48
57
  overflow: 'hidden',
49
58
  textOverflow: 'ellipsis',
50
- display: 'inline-block',
59
+ display: 'inline',
51
60
  color: color
52
61
  });
53
62
  };
@@ -56,27 +65,34 @@ export var AvatarItemOption = function AvatarItemOption(_ref) {
56
65
  primaryText = _ref.primaryText,
57
66
  secondaryText = _ref.secondaryText,
58
67
  lozenge = _ref.lozenge;
68
+
69
+ var renderLozenge = function renderLozenge() {
70
+ if (isLozengeText(lozenge)) {
71
+ if (lozenge !== null && lozenge !== void 0 && lozenge.tooltip) {
72
+ // Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
73
+ // Lozenge text) or tooltip won't work
74
+ return jsx(React.Suspense, {
75
+ fallback: jsx(Lozenge, lozenge, lozenge.text)
76
+ }, jsx(AsyncTooltip, {
77
+ content: lozenge.tooltip
78
+ }, jsx(Lozenge, lozenge, lozenge.text)));
79
+ }
80
+
81
+ return jsx(Lozenge, lozenge, lozenge.text);
82
+ }
83
+
84
+ return lozenge;
85
+ };
86
+
59
87
  return jsx("span", {
60
88
  css: wrapper
61
89
  }, avatar, jsx("div", {
62
- style: {
63
- maxWidth: '100%',
64
- minWidth: 0,
65
- flex: '1 1 100%',
66
- lineHeight: '1.4',
67
- paddingLeft: '8px'
68
- }
69
- }, jsx("div", null, jsx("span", {
90
+ css: optionWrapper
91
+ }, jsx("div", null, jsx("div", {
70
92
  css: getTextStyle()
71
- }, primaryText), jsx("span", {
72
- css: additionalInfo
73
- }, (lozenge === null || lozenge === void 0 ? void 0 : lozenge.text) && (lozenge !== null && lozenge !== void 0 && lozenge.tooltip ? // Note that entire Lozenge must be wrapped in the Tooltip (rather than just the
74
- // Lozenge text) or tooltip won't work
75
- jsx(React.Suspense, {
76
- fallback: jsx(Lozenge, lozenge, lozenge.text)
77
- }, jsx(AsyncTooltip, {
78
- content: lozenge.tooltip
79
- }, jsx(Lozenge, lozenge, lozenge.text))) : jsx(Lozenge, lozenge, lozenge.text)))), jsx("div", null, jsx("span", {
93
+ }, primaryText), secondaryText && jsx("div", {
80
94
  css: getTextStyle(true)
81
- }, secondaryText))));
95
+ }, secondaryText))), lozenge && jsx("div", {
96
+ css: additionalInfo
97
+ }, renderLozenge()));
82
98
  };
@@ -106,6 +106,18 @@ export var TeamOption = /*#__PURE__*/function (_React$PureComponent) {
106
106
  } : _this.props.team.lozenge;
107
107
  });
108
108
 
109
+ _defineProperty(_assertThisInitialized(_this), "renderCustomByLine", function () {
110
+ var _this$props$team4;
111
+
112
+ if (!((_this$props$team4 = _this.props.team) !== null && _this$props$team4 !== void 0 && _this$props$team4.byline)) {
113
+ return undefined;
114
+ }
115
+
116
+ return jsx("span", {
117
+ css: textWrapper(_this.props.isSelected ? token('color.text.selected', B400) : token('color.text.subtlest', N200))
118
+ }, _this.props.team.byline);
119
+ });
120
+
109
121
  return _this;
110
122
  }
111
123
 
@@ -114,7 +126,7 @@ export var TeamOption = /*#__PURE__*/function (_React$PureComponent) {
114
126
  value: function render() {
115
127
  return jsx(AvatarItemOption, {
116
128
  avatar: this.renderAvatar(),
117
- secondaryText: this.renderByline(),
129
+ secondaryText: this.renderCustomByLine() || this.renderByline(),
118
130
  primaryText: this.getPrimaryText(),
119
131
  lozenge: this.getLozengeProps()
120
132
  });
@@ -118,4 +118,7 @@ export var isPopupUserPickerByComponent = function isPopupUserPickerByComponent(
118
118
  };
119
119
  export var isPopupUserPickerByProps = function isPopupUserPickerByProps(selectProps) {
120
120
  return selectProps.searchThreshold === -1;
121
+ };
122
+ export var isLozengeText = function isLozengeText(lozengeProp) {
123
+ return (lozengeProp === null || lozengeProp === void 0 ? void 0 : lozengeProp.hasOwnProperty('text')) || false;
121
124
  };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/user-picker",
3
- "version": "9.3.6",
3
+ "version": "9.4.1",
4
4
  "sideEffects": false
5
5
  }
@@ -6,6 +6,6 @@ export declare type AvatarItemOptionProps = {
6
6
  avatar: ReactNode;
7
7
  primaryText?: ReactNode;
8
8
  secondaryText?: ReactNode;
9
- lozenge?: LozengeProps;
9
+ lozenge?: ReactNode | LozengeProps;
10
10
  };
11
11
  export declare const AvatarItemOption: ({ avatar, primaryText, secondaryText, lozenge, }: AvatarItemOptionProps) => JSX.Element;
@@ -27,7 +27,7 @@ export declare class PopupUserPickerWithoutAnalytics extends React.Component<Pop
27
27
  };
28
28
  render(): JSX.Element;
29
29
  }
30
- export declare const PopupUserPicker: React.ForwardRefExoticComponent<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "target" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isDisabled" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "options" | "placeholder" | "styles" | "value" | "defaultValue" | "fieldId" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadUserSource" | "search" | "anchor" | "open" | "onSelection" | "onClear" | "onClose" | "appearance" | "subtle" | "noBorder" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabelledBy" | "ariaLive" | "popupTitle"> & Partial<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "offset" | "isMulti" | "width" | "boundariesElement" | "placement" | "rootBoundary" | "shouldFlip">> & Partial<Pick<{
30
+ export declare const PopupUserPicker: React.ForwardRefExoticComponent<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "target" | "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "inputId" | "isClearable" | "isDisabled" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "options" | "placeholder" | "styles" | "value" | "defaultValue" | "fieldId" | "menuMinWidth" | "maxPickerHeight" | "textFieldBackgroundColor" | "loadOptions" | "loadUserSource" | "search" | "anchor" | "open" | "onSelection" | "onClear" | "onClose" | "appearance" | "subtle" | "noBorder" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabelledBy" | "ariaLive" | "popupTitle"> & Partial<Pick<Omit<PopupUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "offset" | "isMulti" | "width" | "rootBoundary" | "boundariesElement" | "placement" | "shouldFlip">> & Partial<Pick<{
31
31
  boundariesElement: string;
32
32
  width: number;
33
33
  isMulti: boolean;
@@ -10,5 +10,6 @@ export declare class TeamOption extends React.PureComponent<TeamOptionProps> {
10
10
  private getBylineComponent;
11
11
  private renderAvatar;
12
12
  private getLozengeProps;
13
+ private renderCustomByLine;
13
14
  render(): JSX.Element;
14
15
  }
@@ -1,5 +1,5 @@
1
- import { ReactChild, ReactElement } from 'react';
2
- import { AtlaskitSelectValue, ExternalUser, Email, Option, OptionData, Promisable, Team, Group, User, OptionIdentifier, DefaultValue } from '../types';
1
+ import { ReactChild, ReactElement, ReactNode } from 'react';
2
+ import { AtlaskitSelectValue, ExternalUser, Email, Option, OptionData, Promisable, Team, Group, User, OptionIdentifier, DefaultValue, LozengeProps } from '../types';
3
3
  export declare const isExternalUser: (option: OptionData) => option is ExternalUser;
4
4
  export declare const isUser: (option: OptionData) => option is User;
5
5
  export declare const isTeam: (option: OptionData) => option is Team;
@@ -25,3 +25,4 @@ export declare const callCallback: <U extends any[], R>(callback: ((...U: U) =>
25
25
  export declare const getAvatarUrl: (optionData: OptionData) => string | undefined;
26
26
  export declare const isPopupUserPickerByComponent: (SelectComponent: React.ComponentClass<any>) => boolean;
27
27
  export declare const isPopupUserPickerByProps: (selectProps: any) => boolean;
28
+ export declare const isLozengeText: (lozengeProp: ReactNode | LozengeProps) => lozengeProp is LozengeProps;
@@ -203,7 +203,7 @@ export interface OptionData {
203
203
  name: string;
204
204
  type?: 'user' | 'team' | 'email' | 'group';
205
205
  fixed?: boolean;
206
- lozenge?: string | LozengeProps;
206
+ lozenge?: string | LozengeProps | ReactNode;
207
207
  }
208
208
  export declare const UserType = "user";
209
209
  export declare type UserSource = 'google' | 'slack' | 'microsoft' | 'github' | 'jira' | 'confluence' | 'other-atlassian';
@@ -241,6 +241,7 @@ export interface Team extends OptionData {
241
241
  includesYou?: boolean;
242
242
  highlight?: TeamHighlight;
243
243
  type: 'team';
244
+ byline?: string;
244
245
  }
245
246
  export declare const GroupType = "group";
246
247
  export interface Group extends OptionData {
@@ -0,0 +1,24 @@
1
+ import { AnalyticsEventPayload } from '@atlaskit/analytics-next';
2
+ import { UserPickerProps, UserPickerState } from './types';
3
+ export declare type UserPickerSession = {
4
+ id: string;
5
+ start: number;
6
+ inputChangeTime: number;
7
+ upCount: number;
8
+ downCount: number;
9
+ lastKey?: number;
10
+ };
11
+ export declare const startSession: () => UserPickerSession;
12
+ export declare const createAndFireEventInElementsChannel: (payload: AnalyticsEventPayload) => (createAnalyticsEvent: import("@atlaskit/analytics-next").CreateUIAnalyticsEvent) => import("@atlaskit/analytics-next").UIAnalyticsEvent;
13
+ export interface EventCreator {
14
+ (props: UserPickerProps, state: UserPickerState, session?: UserPickerSession): AnalyticsEventPayload;
15
+ (props: UserPickerProps, state: UserPickerState, session?: UserPickerSession, ...args: any[]): AnalyticsEventPayload;
16
+ }
17
+ export declare const focusEvent: EventCreator;
18
+ export declare const clearEvent: EventCreator;
19
+ export declare const deleteEvent: EventCreator;
20
+ export declare const cancelEvent: EventCreator;
21
+ export declare const selectEvent: EventCreator;
22
+ export declare const searchedEvent: EventCreator;
23
+ export declare const failedEvent: EventCreator;
24
+ export declare const userInfoEvent: (sources: string[], accountId: string) => AnalyticsEventPayload;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { LoadUserSource, UserSource } from '../types';
3
+ export interface UserSourceContext {
4
+ fetchUserSource?: LoadUserSource;
5
+ }
6
+ export declare const ExusUserSourceProvider: React.FC<UserSourceContext>;
7
+ export declare const useUserSource: (accountId: string, shouldFetchSources: boolean, existingSources?: UserSource[] | undefined) => {
8
+ sources: UserSource[];
9
+ loading: boolean;
10
+ error: string | null;
11
+ };
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare type AddOptionAvatarProps = {
3
+ label: string;
4
+ isLozenge?: boolean;
5
+ };
6
+ export declare const AddOptionAvatar: React.FunctionComponent<AddOptionAvatarProps>;
@@ -0,0 +1,11 @@
1
+ /** @jsx jsx */
2
+ import { ReactNode } from 'react';
3
+ import { LozengeProps } from '../types';
4
+ export declare const textWrapper: (color?: string | undefined) => import("@emotion/utils").SerializedStyles;
5
+ export declare type AvatarItemOptionProps = {
6
+ avatar: ReactNode;
7
+ primaryText?: ReactNode;
8
+ secondaryText?: ReactNode;
9
+ lozenge?: ReactNode | LozengeProps;
10
+ };
11
+ export declare const AvatarItemOption: ({ avatar, primaryText, secondaryText, lozenge, }: AvatarItemOptionProps) => JSX.Element;
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { UserPickerProps, UserPickerState } from '../types';
3
+ export declare type BaseUserPickerProps = UserPickerProps & {
4
+ SelectComponent: React.ComponentClass<any>;
5
+ pickerProps?: any;
6
+ styles: any;
7
+ components: any;
8
+ width: string | number;
9
+ };
10
+ export declare class BaseUserPickerWithoutAnalytics extends React.Component<BaseUserPickerProps, UserPickerState> {
11
+ static defaultProps: {
12
+ isMulti: boolean;
13
+ subtle: boolean;
14
+ noBorder: boolean;
15
+ textFieldBackgroundColor: boolean;
16
+ isClearable: boolean;
17
+ };
18
+ static getDerivedStateFromProps(nextProps: Partial<UserPickerProps>, prevState: UserPickerState): Partial<UserPickerState>;
19
+ private selectRef;
20
+ private session?;
21
+ private journeyId?;
22
+ private optionsShownUfoExperienceInstance;
23
+ constructor(props: BaseUserPickerProps);
24
+ private getSessionId;
25
+ private withSelectRef;
26
+ nextOption: () => void;
27
+ previousOption: () => void;
28
+ focus: () => void;
29
+ blur: () => void;
30
+ selectOption: () => void;
31
+ private handleChange;
32
+ private handleSelectRef;
33
+ private addOptions;
34
+ private handleLoadOptionsError;
35
+ private debouncedLoadOptions;
36
+ abortOptionsShownUfoExperience: () => void;
37
+ startOptionsShownUfoExperience: () => void;
38
+ private executeLoadOptions;
39
+ private handleFocus;
40
+ private resetInputState;
41
+ private handleBlur;
42
+ private handleClose;
43
+ private handleInputChange;
44
+ private fireEvent;
45
+ private startSession;
46
+ componentDidMount(): void;
47
+ componentDidUpdate(_: UserPickerProps, prevState: UserPickerState): void;
48
+ private handleKeyDown;
49
+ handleClearIndicatorHover: (hoveringClearIndicator: boolean) => void;
50
+ private getOptions;
51
+ private getAppearance;
52
+ render(): JSX.Element;
53
+ }
54
+ export declare const BaseUserPicker: React.ForwardRefExoticComponent<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "autoFocus" | "captureMenuScroll" | "closeMenuOnScroll" | "components" | "inputId" | "isDisabled" | "isLoading" | "menuPosition" | "menuPortalTarget" | "menuShouldBlockScroll" | "noOptionsMessage" | "onBlur" | "onChange" | "onFocus" | "onInputChange" | "options" | "placeholder" | "styles" | "value" | "defaultValue" | "fieldId" | "width" | "menuMinWidth" | "maxPickerHeight" | "loadOptions" | "loadUserSource" | "search" | "anchor" | "open" | "onSelection" | "onClear" | "onClose" | "appearance" | "addMoreMessage" | "clearValueLabel" | "allowEmail" | "suggestEmailsForDomain" | "emailLabel" | "disableInput" | "isValidEmail" | "maxOptions" | "ariaLabelledBy" | "ariaLive" | "SelectComponent" | "pickerProps"> & Partial<Pick<Omit<BaseUserPickerProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, "isClearable" | "isMulti" | "textFieldBackgroundColor" | "subtle" | "noBorder">> & Partial<Pick<{
55
+ isMulti: boolean;
56
+ subtle: boolean;
57
+ noBorder: boolean;
58
+ textFieldBackgroundColor: boolean;
59
+ isClearable: boolean;
60
+ }, never>> & React.RefAttributes<any>>;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { IndicatorProps } from '@atlaskit/select';
3
+ export declare class ClearIndicator extends React.PureComponent<IndicatorProps<any>> {
4
+ private handleMouseDown;
5
+ render(): JSX.Element;
6
+ }
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const AsyncEmailOption: React.LazyExoticComponent<typeof import("./main").EmailOption>;
3
+ export default AsyncEmailOption;