@atlaskit/user-picker 11.23.3 → 11.25.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 (95) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/afm-cc/tsconfig.json +3 -0
  3. package/afm-jira/tsconfig.json +3 -0
  4. package/afm-products/tsconfig.json +3 -0
  5. package/dist/cjs/analytics.js +2 -1
  6. package/dist/cjs/components/AvatarItemOption.js +31 -2
  7. package/dist/cjs/components/AvatarOrIcon.js +1 -1
  8. package/dist/cjs/components/BaseUserPicker.js +69 -39
  9. package/dist/cjs/components/ClearIndicator.js +1 -1
  10. package/dist/cjs/components/Control.js +1 -1
  11. package/dist/cjs/components/CustomOption/main.js +1 -1
  12. package/dist/cjs/components/EmailOption/main.js +1 -1
  13. package/dist/cjs/components/ExternalUserOption/ExternalAvatarItemOption.js +1 -1
  14. package/dist/cjs/components/ExternalUserOption/InfoIcon.js +1 -1
  15. package/dist/cjs/components/GroupOption/main.js +1 -1
  16. package/dist/cjs/components/Input.js +1 -1
  17. package/dist/cjs/components/MultiValue.js +152 -10
  18. package/dist/cjs/components/MultiValueContainer.js +1 -1
  19. package/dist/cjs/components/SingleValue.compiled.css +2 -0
  20. package/dist/cjs/components/SingleValue.js +13 -3
  21. package/dist/cjs/components/SingleValueContainer.js +1 -1
  22. package/dist/cjs/components/UserPicker.js +1 -1
  23. package/dist/cjs/components/i18n.js +5 -0
  24. package/dist/cjs/components/styles.js +2 -1
  25. package/dist/cjs/components/utils.js +1 -1
  26. package/dist/cjs/util/group-options-by-type/index.js +7 -3
  27. package/dist/es2019/analytics.js +1 -0
  28. package/dist/es2019/components/AvatarItemOption.js +31 -2
  29. package/dist/es2019/components/AvatarOrIcon.js +1 -1
  30. package/dist/es2019/components/BaseUserPicker.js +30 -1
  31. package/dist/es2019/components/ClearIndicator.js +1 -1
  32. package/dist/es2019/components/Control.js +1 -1
  33. package/dist/es2019/components/CustomOption/main.js +1 -1
  34. package/dist/es2019/components/EmailOption/main.js +1 -1
  35. package/dist/es2019/components/ExternalUserOption/ExternalAvatarItemOption.js +1 -1
  36. package/dist/es2019/components/ExternalUserOption/InfoIcon.js +1 -1
  37. package/dist/es2019/components/GroupOption/main.js +1 -1
  38. package/dist/es2019/components/Input.js +1 -1
  39. package/dist/es2019/components/MultiValue.js +151 -11
  40. package/dist/es2019/components/MultiValueContainer.js +1 -1
  41. package/dist/es2019/components/SingleValue.compiled.css +2 -0
  42. package/dist/es2019/components/SingleValue.js +12 -3
  43. package/dist/es2019/components/SingleValueContainer.js +1 -1
  44. package/dist/es2019/components/UserPicker.js +1 -1
  45. package/dist/es2019/components/i18n.js +5 -0
  46. package/dist/es2019/components/styles.js +2 -1
  47. package/dist/es2019/components/utils.js +1 -1
  48. package/dist/es2019/util/group-options-by-type/index.js +7 -3
  49. package/dist/esm/analytics.js +1 -0
  50. package/dist/esm/components/AvatarItemOption.js +31 -2
  51. package/dist/esm/components/AvatarOrIcon.js +1 -1
  52. package/dist/esm/components/BaseUserPicker.js +69 -39
  53. package/dist/esm/components/ClearIndicator.js +1 -1
  54. package/dist/esm/components/Control.js +1 -1
  55. package/dist/esm/components/CustomOption/main.js +1 -1
  56. package/dist/esm/components/EmailOption/main.js +1 -1
  57. package/dist/esm/components/ExternalUserOption/ExternalAvatarItemOption.js +1 -1
  58. package/dist/esm/components/ExternalUserOption/InfoIcon.js +1 -1
  59. package/dist/esm/components/GroupOption/main.js +1 -1
  60. package/dist/esm/components/Input.js +1 -1
  61. package/dist/esm/components/MultiValue.js +150 -10
  62. package/dist/esm/components/MultiValueContainer.js +1 -1
  63. package/dist/esm/components/SingleValue.compiled.css +2 -0
  64. package/dist/esm/components/SingleValue.js +12 -3
  65. package/dist/esm/components/SingleValueContainer.js +1 -1
  66. package/dist/esm/components/UserPicker.js +1 -1
  67. package/dist/esm/components/i18n.js +5 -0
  68. package/dist/esm/components/styles.js +2 -1
  69. package/dist/esm/components/utils.js +1 -1
  70. package/dist/esm/util/group-options-by-type/index.js +7 -3
  71. package/dist/types/analytics.d.ts +2 -2
  72. package/dist/types/components/AvatarItemOption.d.ts +2 -2
  73. package/dist/types/components/BaseUserPicker.d.ts +4 -1
  74. package/dist/types/components/ExternalUserOption/index.d.ts +4 -2
  75. package/dist/types/components/ExternalUserOption/main.d.ts +3 -2
  76. package/dist/types/components/GroupOption/main.d.ts +2 -2
  77. package/dist/types/components/PopupUserPicker.d.ts +90 -86
  78. package/dist/types/components/UserPicker.d.ts +2 -1
  79. package/dist/types/components/i18n.d.ts +5 -0
  80. package/dist/types/index.d.ts +1 -1
  81. package/dist/types/types.d.ts +4 -0
  82. package/dist/types/util/group-options-by-type/index.d.ts +2 -1
  83. package/dist/types-ts4.5/analytics.d.ts +2 -2
  84. package/dist/types-ts4.5/components/AvatarItemOption.d.ts +2 -2
  85. package/dist/types-ts4.5/components/BaseUserPicker.d.ts +4 -1
  86. package/dist/types-ts4.5/components/ExternalUserOption/index.d.ts +4 -2
  87. package/dist/types-ts4.5/components/ExternalUserOption/main.d.ts +3 -2
  88. package/dist/types-ts4.5/components/GroupOption/main.d.ts +2 -2
  89. package/dist/types-ts4.5/components/PopupUserPicker.d.ts +90 -86
  90. package/dist/types-ts4.5/components/UserPicker.d.ts +2 -1
  91. package/dist/types-ts4.5/components/i18n.d.ts +5 -0
  92. package/dist/types-ts4.5/index.d.ts +1 -1
  93. package/dist/types-ts4.5/types.d.ts +4 -0
  94. package/dist/types-ts4.5/util/group-options-by-type/index.d.ts +2 -1
  95. package/package.json +16 -6
@@ -1,6 +1,7 @@
1
- /* SingleValue.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* SingleValue.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  "use strict";
3
3
 
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5
  var _typeof = require("@babel/runtime/helpers/typeof");
5
6
  Object.defineProperty(exports, "__esModule", {
6
7
  value: true
@@ -10,18 +11,22 @@ require("./SingleValue.compiled.css");
10
11
  var React = _interopRequireWildcard(require("react"));
11
12
  var _runtime = require("@compiled/react/runtime");
12
13
  var _select = require("@atlaskit/select");
14
+ var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
13
15
  var _AvatarOrIcon = require("./AvatarOrIcon");
14
16
  var _SizeableAvatar = require("./SizeableAvatar");
15
17
  var _utils = require("./utils");
16
18
  var _avatar = require("@atlaskit/avatar");
17
19
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
18
20
  var _verifiedTeamIcon = require("@atlaskit/people-teams-ui-public/verified-team-icon");
21
+ var _reactIntlNext = require("react-intl-next");
19
22
  var _compiled = require("@atlaskit/primitives/compiled");
23
+ var _i18n = require("./i18n");
20
24
  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); }
21
25
  var styles = {
22
26
  avatarItem: "_1reo15vq _18m915vq _4cvr1h6o _1ul953f4",
23
27
  avatarItemTextWrapper: "_16jlkb7n _1o9zkb7n _i0dl1osq _1ul9idpf _p12f1osq _bozgu2gc _vwz419ii",
24
- avatarItemText: "_syazi7uo _1reo15vq _1bto1l2s _o5721q9c"
28
+ avatarItemText: "_syazi7uo _1reo15vq _1bto1l2s _o5721q9c",
29
+ archivedLozengeWrapper: "_1e0c1txw _19bv1b66"
25
30
  };
26
31
  var ElementAfter = function ElementAfter(props) {
27
32
  var data = props.data.data,
@@ -41,6 +46,7 @@ var SingleValue = exports.SingleValue = function SingleValue(props) {
41
46
  _props$selectProps = props.selectProps,
42
47
  appearance = _props$selectProps.appearance,
43
48
  isFocused = _props$selectProps.isFocused;
49
+ var canShowArchivedLozenge = (0, _utils.isTeam)(data) && (data === null || data === void 0 ? void 0 : data.state) === 'DISBANDED' && (0, _platformFeatureFlags.fg)('enable-sup-archive-experience');
44
50
  return !isFocused ? /*#__PURE__*/React.createElement(_select.components.SingleValue, props, /*#__PURE__*/React.createElement(_compiled.Flex, {
45
51
  xcss: styles.avatarItem
46
52
  }, data.icon ? /*#__PURE__*/React.createElement(_AvatarOrIcon.AvatarOrIcon, {
@@ -63,5 +69,9 @@ var SingleValue = exports.SingleValue = function SingleValue(props) {
63
69
  xcss: styles.avatarItemText
64
70
  }, /*#__PURE__*/React.createElement(_compiled.Inline, {
65
71
  alignBlock: "center"
66
- }, label, /*#__PURE__*/React.createElement(ElementAfter, props))))))) : null;
72
+ }, label, canShowArchivedLozenge ? /*#__PURE__*/React.createElement(_compiled.Box, {
73
+ xcss: styles.archivedLozengeWrapper
74
+ }, /*#__PURE__*/React.createElement(_lozenge.default, {
75
+ appearance: "default"
76
+ }, /*#__PURE__*/React.createElement(_reactIntlNext.FormattedMessage, _i18n.messages.archivedLozenge))) : null, /*#__PURE__*/React.createElement(ElementAfter, props))))))) : null;
67
77
  };
@@ -1,4 +1,4 @@
1
- /* SingleValueContainer.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* SingleValueContainer.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  "use strict";
3
3
 
4
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -1,4 +1,4 @@
1
- /* UserPicker.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* UserPicker.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  "use strict";
3
3
 
4
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
@@ -176,6 +176,11 @@ var messages = exports.messages = (0, _reactIntlNext.defineMessages)({
176
176
  defaultMessage: 'Guest groups can only access certain spaces and have limited access to user info.',
177
177
  description: 'Tooltip text for lozenge showing that a group is for guests in Confluence'
178
178
  },
179
+ archivedLozenge: {
180
+ id: 'fabric.elements.user-picker.archived.lozenge.text',
181
+ defaultMessage: 'Archived',
182
+ description: 'Text within the lozenge when the selected team has been archived/disbanded'
183
+ },
179
184
  userTypeLabel: {
180
185
  id: 'fabric.elements.user-picker.user.type.label',
181
186
  defaultMessage: 'People',
@@ -10,6 +10,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
10
10
  var _colors = require("@atlaskit/theme/colors");
11
11
  var _memoizeOne = _interopRequireDefault(require("memoize-one"));
12
12
  var _select = require("@atlaskit/select");
13
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
13
14
  var _excluded = ["_paddingTop", "_paddingBottom", "_paddingLeft", "_paddingRight"],
14
15
  _excluded2 = ["_paddingTop", "_paddingBottom", "_position"];
15
16
  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; }
@@ -36,7 +37,7 @@ var getStyles = exports.getStyles = (0, _memoizeOne.default)(function (width, is
36
37
  return _objectSpread(_objectSpread({}, css), {}, {
37
38
  width: width,
38
39
  borderColor: state.isFocused ? "var(--ds-border-focused, ".concat(css.borderColor, ")") : state.isInvalid ? "var(--ds-border-danger, ".concat(_colors.R400, ")") : state.selectProps.subtle || state.selectProps.noBorder ? 'transparent' : "var(--ds-border-input, ".concat(_colors.N90, ")"),
39
- backgroundColor: state.isFocused ? "var(--ds-background-input, ".concat(css['backgroundColor'], ")") : state.selectProps.subtle ? 'transparent' : state.selectProps.textFieldBackgroundColor ? "var(--ds-background-input, ".concat(_colors.N10, ")") : "var(--ds-background-input, ".concat(_colors.N20, ")"),
40
+ backgroundColor: state.isFocused ? "var(--ds-background-input, ".concat(css['backgroundColor'], ")") : state.selectProps.subtle ? 'transparent' : state.isDisabled && (0, _platformFeatureFlags.fg)('platform-dst-lozenge-tag-badge-visual-uplifts') ? "var(--ds-background-disabled, ".concat(_colors.N10, ")") : state.selectProps.textFieldBackgroundColor ? "var(--ds-background-input, ".concat(_colors.N10, ")") : "var(--ds-background-input, ".concat(_colors.N20, ")"),
40
41
  '&:hover .fabric-user-picker__clear-indicator': {
41
42
  opacity: 1
42
43
  },
@@ -19,7 +19,7 @@ var isUser = exports.isUser = function isUser(option) {
19
19
  return option.type === undefined || option.type === _types.UserType;
20
20
  };
21
21
  var isTeam = exports.isTeam = function isTeam(option) {
22
- return option.type === _types.TeamType;
22
+ return (option === null || option === void 0 ? void 0 : option.type) === _types.TeamType;
23
23
  };
24
24
  var isGroup = exports.isGroup = function isGroup(option) {
25
25
  return option.type === _types.GroupType;
@@ -6,10 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.groupOptionsByType = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
9
10
  var _reactIntlNext = require("react-intl-next");
10
11
  var _memoizeOne = _interopRequireDefault(require("memoize-one"));
11
12
  var _i18n = require("../../components/i18n");
12
- var getLabelForType = function getLabelForType(type) {
13
+ var getLabelForType = function getLabelForType(type, customLabels) {
14
+ if (customLabels && type in customLabels && (0, _platformFeatureFlags.fg)('jsm-wfo-assignee-recommendation-on-queues')) {
15
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, customLabels[type]);
16
+ }
13
17
  switch (type) {
14
18
  case 'user':
15
19
  return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _i18n.messages.userTypeLabel);
@@ -25,7 +29,7 @@ var getLabelForType = function getLabelForType(type) {
25
29
  return /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _i18n.messages.otherTypeLabel);
26
30
  }
27
31
  };
28
- var groupOptionsByType = exports.groupOptionsByType = (0, _memoizeOne.default)(function (options, groupByTypeOrder) {
32
+ var groupOptionsByType = exports.groupOptionsByType = (0, _memoizeOne.default)(function (options, groupByTypeOrder, customGroupLabels) {
29
33
  // If groupByTypeOrder is empty, just return the original options
30
34
  if (groupByTypeOrder.length === 0) {
31
35
  return options;
@@ -45,7 +49,7 @@ var groupOptionsByType = exports.groupOptionsByType = (0, _memoizeOne.default)(f
45
49
  groupByTypeOrder.forEach(function (type) {
46
50
  if (groupedMap.has(type)) {
47
51
  result.push({
48
- label: getLabelForType(type),
52
+ label: getLabelForType(type, customGroupLabels),
49
53
  options: groupedMap.get(type)
50
54
  });
51
55
  groupedMap.delete(type);
@@ -1,3 +1,4 @@
1
+ // eslint-disable-next-line @typescript-eslint/consistent-type-imports
1
2
  import { createAndFireEvent } from '@atlaskit/analytics-next';
2
3
  import FeatureGates from '@atlaskit/feature-gate-js-client';
3
4
  // eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
@@ -3,9 +3,10 @@
3
3
  * @jsx jsx
4
4
  */
5
5
  import React from 'react';
6
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
6
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports
7
7
  import { css, jsx } from '@emotion/react';
8
8
  import Lozenge from '@atlaskit/lozenge';
9
+ import Tag from '@atlaskit/tag';
9
10
  import { isLozengeText } from './utils';
10
11
  import { fg } from '@atlaskit/platform-feature-flags';
11
12
  const AsyncTooltip = /*#__PURE__*/React.lazy(() => import( /* webpackChunkName: "@atlaskit-internal_@atlaskit/tooltip" */'@atlaskit/tooltip').then(module => {
@@ -106,6 +107,14 @@ export const textWrapper = color => {
106
107
  color
107
108
  });
108
109
  };
110
+ const lozengeAppearanceToTagColor = {
111
+ default: 'standard',
112
+ success: 'lime',
113
+ removed: 'red',
114
+ inprogress: 'blue',
115
+ new: 'purple',
116
+ moved: 'orange'
117
+ };
109
118
  export const AvatarItemOption = ({
110
119
  avatar,
111
120
  isDisabled,
@@ -113,6 +122,26 @@ export const AvatarItemOption = ({
113
122
  primaryText,
114
123
  secondaryText
115
124
  }) => {
125
+ const renderTag = () => {
126
+ if (isLozengeText(lozenge) && !lozenge.isBold) {
127
+ const color = lozenge.appearance ? lozengeAppearanceToTagColor[lozenge.appearance] : 'standard';
128
+ const tag = jsx(Tag, {
129
+ text: lozenge.text,
130
+ color: color,
131
+ isRemovable: false,
132
+ migration_fallback: "lozenge"
133
+ });
134
+ if (lozenge.tooltip) {
135
+ return jsx(React.Suspense, {
136
+ fallback: tag
137
+ }, jsx(AsyncTooltip, {
138
+ content: lozenge.tooltip
139
+ }, tag));
140
+ }
141
+ return tag;
142
+ }
143
+ return renderLozenge();
144
+ };
116
145
  const renderLozenge = () => {
117
146
  if (isLozengeText(lozenge)) {
118
147
  if (lozenge !== null && lozenge !== void 0 && lozenge.tooltip) {
@@ -140,6 +169,6 @@ export const AvatarItemOption = ({
140
169
  css: getTextStyle(true)
141
170
  }, secondaryText))), lozenge && jsx("div", {
142
171
  css: additionalInfo
143
- }, renderLozenge()))
172
+ }, fg('platform-dst-lozenge-tag-badge-visual-uplifts') ? renderTag() : renderLozenge()))
144
173
  );
145
174
  };
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { SizeableAvatar } from './SizeableAvatar';
7
7
  import { getAvatarSize } from './utils';
8
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports
9
9
  import { css, jsx } from '@emotion/react';
10
10
  const iconStyle = css({
11
11
  display: 'flex',
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import { fg } from '@atlaskit/platform-feature-flags';
3
4
  import { withAnalyticsEvents } from '@atlaskit/analytics-next';
4
5
  import { UFOExperienceState } from '@atlaskit/ufo';
5
6
  import debounce from 'lodash/debounce';
@@ -341,7 +342,7 @@ export class BaseUserPickerWithoutAnalytics extends React.Component {
341
342
  hoveringClearIndicator
342
343
  });
343
344
  });
344
- _defineProperty(this, "getOptions", () => {
345
+ _defineProperty(this, "getOptionsOld", () => {
345
346
  const options = getOptions(this.state.options) || [];
346
347
  const {
347
348
  maxOptions,
@@ -365,6 +366,34 @@ export class BaseUserPickerWithoutAnalytics extends React.Component {
365
366
  }
366
367
  return groupByTypeOrder ? groupOptionsByType(options, groupByTypeOrder) : options;
367
368
  });
369
+ _defineProperty(this, "getOptionsNew", () => {
370
+ const options = getOptions(this.state.options) || [];
371
+ const {
372
+ maxOptions,
373
+ isMulti,
374
+ groupByTypeOrder,
375
+ customGroupLabels
376
+ } = this.props;
377
+ if (maxOptions === 0) {
378
+ return [];
379
+ }
380
+ if (maxOptions && maxOptions > 0 && maxOptions < options.length) {
381
+ const {
382
+ value
383
+ } = this.state;
384
+ let filteredOptions = options;
385
+ // Filter out previously selected options
386
+ if (isMulti && Array.isArray(value)) {
387
+ const valueIds = value.map(item => item.data.id);
388
+ filteredOptions = options.filter(option => valueIds.indexOf(option.data.id) === -1);
389
+ }
390
+ return groupByTypeOrder ? groupOptionsByType(filteredOptions.slice(0, maxOptions), groupByTypeOrder, customGroupLabels) : filteredOptions.slice(0, maxOptions);
391
+ }
392
+ return groupByTypeOrder ? groupOptionsByType(options, groupByTypeOrder, customGroupLabels) : options;
393
+ });
394
+ _defineProperty(this, "getOptions", () => {
395
+ return fg('jsm-wfo-assignee-recommendation-on-queues') ? this.getOptionsNew() : this.getOptionsOld();
396
+ });
368
397
  _defineProperty(this, "getAppearance", () => this.props.appearance ? this.props.appearance : 'normal');
369
398
  _defineProperty(this, "handleClickDraggableParentComponent", () => {
370
399
  if (this.state.initialFocusHandled) {
@@ -1,4 +1,4 @@
1
- /* ClearIndicator.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* ClearIndicator.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
4
  import "./ClearIndicator.compiled.css";
@@ -1,4 +1,4 @@
1
- /* Control.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* Control.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import "./Control.compiled.css";
4
4
  import * as React from 'react';
@@ -4,7 +4,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
4
  * @jsx jsx
5
5
  */
6
6
  import { B400, N800, N200 } from '@atlaskit/theme/colors';
7
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
7
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports
8
8
  import { jsx } from '@emotion/react';
9
9
  import React from 'react';
10
10
  import { AvatarItemOption, textWrapper } from '../AvatarItemOption';
@@ -6,7 +6,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
6
6
  import React from 'react';
7
7
  import { FormattedMessage } from 'react-intl-next';
8
8
  import { B400, N200, N800 } from '@atlaskit/theme/colors';
9
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
9
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports
10
10
  import { jsx } from '@emotion/react';
11
11
  import { AddOptionAvatar } from '../AddOptionAvatar';
12
12
  import { AvatarItemOption, textWrapper } from '../AvatarItemOption';
@@ -3,7 +3,7 @@
3
3
  * @jsx jsx
4
4
  */
5
5
 
6
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
6
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports
7
7
  import { css, jsx } from '@emotion/react';
8
8
  import { B400 } from '@atlaskit/theme/colors';
9
9
  const outerWrapper = isDisabled => css({
@@ -3,7 +3,7 @@
3
3
  * @jsx jsx
4
4
  */
5
5
  import { useCallback, useState } from 'react';
6
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
6
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports
7
7
  import { css, jsx } from '@emotion/react';
8
8
  import EditorPanelIcon from '@atlaskit/icon/core/status-information';
9
9
  import { N50, N200 } from '@atlaskit/theme/colors';
@@ -6,7 +6,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
6
6
  */
7
7
  import React from 'react';
8
8
  import { FormattedMessage } from 'react-intl-next';
9
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
9
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports
10
10
  import { css, jsx } from '@emotion/react';
11
11
  import { N20, B400, N800, N200 } from '@atlaskit/theme/colors';
12
12
  import PeopleIcon from '@atlaskit/icon/core/people-group';
@@ -1,4 +1,4 @@
1
- /* Input.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* Input.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
4
  import "./Input.compiled.css";
@@ -10,12 +10,19 @@ import { Box, Inline, xcss } from '@atlaskit/primitives';
10
10
  import { components } from '@atlaskit/select';
11
11
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
12
12
  import { css, jsx } from '@emotion/react';
13
+ import Avatar from '@atlaskit/avatar';
14
+ import { fg } from '@atlaskit/platform-feature-flags';
15
+ import { AvatarTag, default as Tag } from '@atlaskit/tag';
16
+ import TeamAvatar from '@atlaskit/teams-avatar';
13
17
  import { AddOptionAvatar } from './AddOptionAvatar';
14
18
  import { AvatarOrIcon } from './AvatarOrIcon';
15
19
  import { SizeableAvatar } from './SizeableAvatar';
16
20
  import { getAvatarUrl, isEmail, isGroup, isTeam } from './utils';
21
+ import Lozenge from '@atlaskit/lozenge';
17
22
  import PeopleIcon from '@atlaskit/icon/core/people-group';
18
23
  import { VerifiedTeamIcon } from '@atlaskit/people-teams-ui-public/verified-team-icon';
24
+ import { FormattedMessage } from 'react-intl-next';
25
+ import { messages } from './i18n';
19
26
  export const scrollToValue = (valueContainer, control) => {
20
27
  const {
21
28
  top,
@@ -31,14 +38,34 @@ export const scrollToValue = (valueContainer, control) => {
31
38
  valueContainer.scrollIntoView(false);
32
39
  }
33
40
  };
34
- const groupTagContainer = xcss({
41
+ const groupTagContainerOld = xcss({
35
42
  paddingLeft: 'space.025',
36
43
  marginTop: 'space.025'
37
44
  });
45
+ const groupTagContainer = xcss({
46
+ paddingLeft: 'space.050'
47
+ });
48
+ const archivedLozengeWrapper = xcss({
49
+ display: 'flex',
50
+ paddingLeft: 'space.050'
51
+ });
52
+ const iconStyle = css({
53
+ display: 'flex',
54
+ alignItems: 'center',
55
+ justifyContent: 'center',
56
+ flexShrink: 0,
57
+ width: '20px',
58
+ height: '20px'
59
+ });
38
60
  const nameWrapper = css({
39
61
  font: "var(--ds-font-body, normal 400 14px/20px \"Atlassian Sans\", ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, \"Helvetica Neue\", sans-serif)",
40
62
  paddingLeft: "var(--ds-space-050, 4px)"
41
63
  });
64
+ const avatarTagWrapperStyle = css({
65
+ display: 'inline-flex',
66
+ // eslint-disable-next-line @atlaskit/design-system/use-tokens-space -- offsets AvatarTag's built-in space.050 margin down to space.025
67
+ margin: '-2px'
68
+ });
42
69
  export class MultiValue extends React.Component {
43
70
  constructor(props) {
44
71
  super(props);
@@ -57,7 +84,7 @@ export class MultiValue extends React.Component {
57
84
  }
58
85
  if (isGroup(data)) {
59
86
  return jsx(Box, {
60
- xcss: groupTagContainer
87
+ xcss: groupTagContainerOld
61
88
  }, jsx(PeopleIcon, {
62
89
  color: "currentColor",
63
90
  label: "" // This element is a decorative icon and does not require a label
@@ -85,11 +112,19 @@ export class MultiValue extends React.Component {
85
112
  data
86
113
  }
87
114
  } = this.props;
115
+ const canShowArchivedLozenge = isTeam(data) && (data === null || data === void 0 ? void 0 : data.state) === 'DISBANDED' && fg('enable-sup-archive-experience');
88
116
  if (isGroup(data) && data.includeTeamsUpdates || isTeam(data) && data.verified) {
89
117
  return jsx(VerifiedTeamIcon, {
90
118
  size: data.includeTeamsUpdates ? 'small' : 'medium'
91
119
  });
92
120
  }
121
+ if (canShowArchivedLozenge) {
122
+ return jsx(Box, {
123
+ xcss: archivedLozengeWrapper
124
+ }, jsx(Lozenge, {
125
+ appearance: "default"
126
+ }, jsx(FormattedMessage, messages.archivedLozenge)));
127
+ }
93
128
  return null;
94
129
  });
95
130
  this.containerRef = /*#__PURE__*/React.createRef();
@@ -104,21 +139,26 @@ export class MultiValue extends React.Component {
104
139
  }
105
140
  shouldComponentUpdate(nextProps) {
106
141
  const {
107
- data: {
108
- label,
109
- data
110
- },
142
+ data: option,
111
143
  innerProps,
112
144
  isFocused
113
145
  } = this.props;
114
146
  const {
115
- data: {
116
- label: nextLabel,
117
- data: nextData
118
- },
147
+ data: nextOption,
119
148
  innerProps: nextInnerProps,
120
149
  isFocused: nextIsFocused
121
150
  } = nextProps;
151
+ if (option == null || nextOption == null) {
152
+ return option !== nextOption || innerProps !== nextInnerProps || isFocused !== nextIsFocused;
153
+ }
154
+ const {
155
+ label,
156
+ data
157
+ } = option;
158
+ const {
159
+ label: nextLabel,
160
+ data: nextData
161
+ } = nextOption;
122
162
 
123
163
  // We can ignore onRemove here because it is an anonymous function
124
164
  // that will be recreated every time but with the same implementation.
@@ -127,10 +167,110 @@ export class MultiValue extends React.Component {
127
167
  render() {
128
168
  const {
129
169
  children,
130
- innerProps,
170
+ innerProps: _innerProps,
171
+ removeProps,
172
+ data: option,
131
173
  ...rest
132
174
  } = this.props;
175
+ if (fg('platform-dst-lozenge-tag-badge-visual-uplifts')) {
176
+ var _this$props$selectPro;
177
+ const {
178
+ data,
179
+ label
180
+ } = option;
181
+ const isTeamOption = isTeam(data);
182
+ const isGroupOption = isGroup(data);
183
+ const isEmailOption = isEmail(data);
184
+ const avatarUrl = getAvatarUrl(data);
185
+ const isDisabled = Boolean((_this$props$selectPro = this.props.selectProps) === null || _this$props$selectPro === void 0 ? void 0 : _this$props$selectPro.isDisabled);
186
+ const canShowArchivedLozenge = isTeam(data) && (data === null || data === void 0 ? void 0 : data.state) === 'DISBANDED' && fg('enable-sup-archive-experience');
187
+ const avatarProps = avatarUrl ? {
188
+ name: data.name,
189
+ src: avatarUrl
190
+ } : {
191
+ name: data.name
192
+ };
193
+ const removeAction = () => {
194
+ removeProps.onClick({});
195
+ return true;
196
+ };
197
+ if (isEmailOption) {
198
+ return jsx("span", {
199
+ ref: this.containerRef,
200
+ css: avatarTagWrapperStyle,
201
+ "data-user-picker-multi-value": true
202
+ }, jsx(Tag, {
203
+ text: label,
204
+ elemBefore: jsx(AddOptionAvatar, {
205
+ isLozenge: true,
206
+ isPendingAction: data.isPendingAction
207
+ }),
208
+ isRemovable: !isDisabled,
209
+ onBeforeRemoveAction: removeAction
210
+ }));
211
+ }
212
+ if (isGroupOption) {
213
+ return jsx("span", {
214
+ ref: this.containerRef,
215
+ css: avatarTagWrapperStyle,
216
+ "data-user-picker-multi-value": true
217
+ }, jsx(Tag, {
218
+ text: label,
219
+ elemBefore: jsx(Box, {
220
+ xcss: groupTagContainer
221
+ }, jsx(PeopleIcon, {
222
+ color: "currentColor",
223
+ label: "" // This element is a decorative icon and does not require a label
224
+ ,
225
+ size: "small"
226
+ })),
227
+ isRemovable: !isDisabled,
228
+ onBeforeRemoveAction: removeAction
229
+ }));
230
+ }
231
+ if (data.icon) {
232
+ return jsx("span", {
233
+ ref: this.containerRef,
234
+ css: avatarTagWrapperStyle,
235
+ "data-user-picker-multi-value": true
236
+ }, jsx(Tag, {
237
+ text: label,
238
+ elemBefore: jsx("div", {
239
+ css: iconStyle,
240
+ style: {
241
+ color: data.iconColor
242
+ }
243
+ }, data.icon),
244
+ isRemovable: !isDisabled,
245
+ onBeforeRemoveAction: removeAction
246
+ }));
247
+ }
248
+ return jsx("span", {
249
+ ref: this.containerRef,
250
+ css: avatarTagWrapperStyle,
251
+ "data-user-picker-multi-value": true
252
+ }, isTeamOption ? jsx(React.Fragment, null, jsx(AvatarTag, {
253
+ type: "other",
254
+ text: label,
255
+ isVerified: isTeamOption ? data.verified : undefined,
256
+ isRemovable: !isDisabled,
257
+ onBeforeRemoveAction: removeAction,
258
+ avatar: props => jsx(TeamAvatar, _extends({}, props, avatarProps))
259
+ }), canShowArchivedLozenge ? jsx(Box, {
260
+ xcss: archivedLozengeWrapper
261
+ }, jsx(Lozenge, {
262
+ appearance: "default"
263
+ }, jsx(FormattedMessage, messages.archivedLozenge))) : null) : jsx(AvatarTag, {
264
+ type: "user",
265
+ text: label,
266
+ isRemovable: !isDisabled,
267
+ onBeforeRemoveAction: removeAction,
268
+ avatar: props => jsx(Avatar, _extends({}, props, avatarProps))
269
+ }));
270
+ }
133
271
  return jsx(components.MultiValue, _extends({}, rest, {
272
+ data: option,
273
+ removeProps: removeProps,
134
274
  innerProps: {
135
275
  ref: this.containerRef
136
276
  },
@@ -1,4 +1,4 @@
1
- /* MultiValueContainer.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* MultiValueContainer.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
4
  import "./MultiValueContainer.compiled.css";
@@ -1,6 +1,8 @@
1
1
  ._16jlkb7n{flex-grow:1}
2
2
  ._18m915vq{overflow-y:hidden}
3
+ ._19bv1b66{padding-left:var(--ds-space-050,4px)}
3
4
  ._1bto1l2s{text-overflow:ellipsis}
5
+ ._1e0c1txw{display:flex}
4
6
  ._1o9zkb7n{flex-shrink:1}
5
7
  ._1reo15vq{overflow-x:hidden}
6
8
  ._1ul953f4{min-width:75pt}
@@ -1,19 +1,23 @@
1
- /* SingleValue.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* SingleValue.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  import "./SingleValue.compiled.css";
3
3
  import * as React from 'react';
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
5
  import { components } from '@atlaskit/select';
6
+ import Lozenge from '@atlaskit/lozenge';
6
7
  import { AvatarOrIcon } from './AvatarOrIcon';
7
8
  import { SizeableAvatar } from './SizeableAvatar';
8
9
  import { getAvatarUrl, isTeam, isGroup } from './utils';
9
10
  import { getAppearanceForAppType } from '@atlaskit/avatar';
10
11
  import { fg } from '@atlaskit/platform-feature-flags';
11
12
  import { VerifiedTeamIcon } from '@atlaskit/people-teams-ui-public/verified-team-icon';
13
+ import { FormattedMessage } from 'react-intl-next';
12
14
  import { Box, Flex, Inline } from '@atlaskit/primitives/compiled';
15
+ import { messages } from './i18n';
13
16
  const styles = {
14
17
  avatarItem: "_1reo15vq _18m915vq _4cvr1h6o _1ul953f4",
15
18
  avatarItemTextWrapper: "_16jlkb7n _1o9zkb7n _i0dl1osq _1ul9idpf _p12f1osq _bozgu2gc _vwz419ii",
16
- avatarItemText: "_syazi7uo _1reo15vq _1bto1l2s _o5721q9c"
19
+ avatarItemText: "_syazi7uo _1reo15vq _1bto1l2s _o5721q9c",
20
+ archivedLozengeWrapper: "_1e0c1txw _19bv1b66"
17
21
  };
18
22
  const ElementAfter = props => {
19
23
  const {
@@ -42,6 +46,7 @@ export const SingleValue = props => {
42
46
  isFocused
43
47
  }
44
48
  } = props;
49
+ const canShowArchivedLozenge = isTeam(data) && (data === null || data === void 0 ? void 0 : data.state) === 'DISBANDED' && fg('enable-sup-archive-experience');
45
50
  return !isFocused ? /*#__PURE__*/React.createElement(components.SingleValue, props, /*#__PURE__*/React.createElement(Flex, {
46
51
  xcss: styles.avatarItem
47
52
  }, data.icon ? /*#__PURE__*/React.createElement(AvatarOrIcon, {
@@ -64,5 +69,9 @@ export const SingleValue = props => {
64
69
  xcss: styles.avatarItemText
65
70
  }, /*#__PURE__*/React.createElement(Inline, {
66
71
  alignBlock: "center"
67
- }, label, /*#__PURE__*/React.createElement(ElementAfter, props))))))) : null;
72
+ }, label, canShowArchivedLozenge ? /*#__PURE__*/React.createElement(Box, {
73
+ xcss: styles.archivedLozengeWrapper
74
+ }, /*#__PURE__*/React.createElement(Lozenge, {
75
+ appearance: "default"
76
+ }, /*#__PURE__*/React.createElement(FormattedMessage, messages.archivedLozenge))) : null, /*#__PURE__*/React.createElement(ElementAfter, props))))))) : null;
68
77
  };
@@ -1,4 +1,4 @@
1
- /* SingleValueContainer.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* SingleValueContainer.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
4
  import "./SingleValueContainer.compiled.css";
@@ -1,4 +1,4 @@
1
- /* UserPicker.tsx generated by @compiled/babel-plugin v0.38.1 */
1
+ /* UserPicker.tsx generated by @compiled/babel-plugin v0.39.1 */
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
4
  import { ax, ix } from "@compiled/react/runtime";