@atlaskit/profilecard 16.12.1 → 17.0.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 (74) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/client/ProfileCardClient.js +2 -2
  3. package/dist/cjs/client/TeamProfileCardClient.js +13 -12
  4. package/dist/cjs/client/UserProfileCardClient.js +25 -2
  5. package/dist/cjs/client/errorUtils.js +25 -0
  6. package/dist/cjs/components/Error/ErrorMessage.js +40 -77
  7. package/dist/cjs/components/Team/TeamLoadingState.js +1 -1
  8. package/dist/cjs/components/Team/TeamProfileCard.js +4 -4
  9. package/dist/cjs/components/Team/TeamProfileCardTrigger.js +3 -3
  10. package/dist/cjs/components/User/OverflowProfileCardButtons.js +44 -10
  11. package/dist/cjs/components/User/ProfileCard.js +195 -362
  12. package/dist/cjs/components/User/ProfileCardDetails.js +142 -0
  13. package/dist/cjs/components/User/ProfileCardResourced.js +25 -20
  14. package/dist/cjs/components/User/ProfileCardTrigger.js +35 -7
  15. package/dist/cjs/components/User/ReportingLinesDetails.js +13 -13
  16. package/dist/cjs/components/User/UserLoadingState.js +14 -2
  17. package/dist/cjs/util/analytics.js +31 -16
  18. package/dist/cjs/version.json +1 -1
  19. package/dist/es2019/client/ProfileCardClient.js +2 -2
  20. package/dist/es2019/client/TeamProfileCardClient.js +3 -9
  21. package/dist/es2019/client/UserProfileCardClient.js +23 -2
  22. package/dist/es2019/client/errorUtils.js +17 -0
  23. package/dist/es2019/components/Error/ErrorMessage.js +38 -42
  24. package/dist/es2019/components/Team/TeamLoadingState.js +2 -2
  25. package/dist/es2019/components/Team/TeamProfileCard.js +5 -5
  26. package/dist/es2019/components/Team/TeamProfileCardTrigger.js +4 -4
  27. package/dist/es2019/components/User/OverflowProfileCardButtons.js +30 -4
  28. package/dist/es2019/components/User/ProfileCard.js +161 -292
  29. package/dist/es2019/components/User/ProfileCardDetails.js +118 -0
  30. package/dist/es2019/components/User/ProfileCardResourced.js +21 -21
  31. package/dist/es2019/components/User/ProfileCardTrigger.js +32 -6
  32. package/dist/es2019/components/User/ReportingLinesDetails.js +10 -11
  33. package/dist/es2019/components/User/UserLoadingState.js +10 -2
  34. package/dist/es2019/util/analytics.js +13 -8
  35. package/dist/es2019/version.json +1 -1
  36. package/dist/esm/client/ProfileCardClient.js +2 -2
  37. package/dist/esm/client/TeamProfileCardClient.js +11 -12
  38. package/dist/esm/client/UserProfileCardClient.js +22 -2
  39. package/dist/esm/client/errorUtils.js +17 -0
  40. package/dist/esm/components/Error/ErrorMessage.js +35 -80
  41. package/dist/esm/components/Team/TeamLoadingState.js +2 -2
  42. package/dist/esm/components/Team/TeamProfileCard.js +5 -5
  43. package/dist/esm/components/Team/TeamProfileCardTrigger.js +4 -4
  44. package/dist/esm/components/User/OverflowProfileCardButtons.js +39 -9
  45. package/dist/esm/components/User/ProfileCard.js +180 -362
  46. package/dist/esm/components/User/ProfileCardDetails.js +120 -0
  47. package/dist/esm/components/User/ProfileCardResourced.js +17 -17
  48. package/dist/esm/components/User/ProfileCardTrigger.js +33 -7
  49. package/dist/esm/components/User/ReportingLinesDetails.js +12 -12
  50. package/dist/esm/components/User/UserLoadingState.js +7 -2
  51. package/dist/esm/util/analytics.js +21 -12
  52. package/dist/esm/version.json +1 -1
  53. package/dist/types/client/ProfileCardClient.d.ts +3 -2
  54. package/dist/types/client/TeamProfileCardClient.d.ts +2 -1
  55. package/dist/types/client/UserProfileCardClient.d.ts +2 -1
  56. package/dist/types/client/errorUtils.d.ts +6 -0
  57. package/dist/types/components/Error/ErrorMessage.d.ts +6 -15
  58. package/dist/types/components/Team/TeamProfileCardTrigger.d.ts +5 -11
  59. package/dist/types/components/User/OverflowProfileCardButtons.d.ts +4 -3
  60. package/dist/types/components/User/ProfileCard.d.ts +5 -29
  61. package/dist/types/components/User/ProfileCardDetails.d.ts +3 -0
  62. package/dist/types/components/User/ProfileCardResourced.d.ts +7 -3
  63. package/dist/types/components/User/ProfileCardTrigger.d.ts +3 -40
  64. package/dist/types/components/User/ReportingLinesDetails.d.ts +2 -4
  65. package/dist/types/components/User/UserLoadingState.d.ts +5 -1
  66. package/dist/types/components/User/lazyProfileCard.d.ts +1 -1
  67. package/dist/types/types.d.ts +11 -10
  68. package/dist/types/util/analytics.d.ts +22 -13
  69. package/package.json +8 -8
  70. package/report.api.md +71 -124
  71. package/dist/cjs/internal/analytics.js +0 -15
  72. package/dist/es2019/internal/analytics.js +0 -8
  73. package/dist/esm/internal/analytics.js +0 -8
  74. package/dist/types/internal/analytics.d.ts +0 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/profilecard
2
2
 
3
+ ## 17.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [`fae495c5956`](https://bitbucket.org/atlassian/atlassian-frontend/commits/fae495c5956) - Deprecated the analytics prop and start emitting GASv3 analytics
8
+
3
9
  ## 16.12.1
4
10
 
5
11
  ### Patch Changes
@@ -42,8 +42,8 @@ var ProfileCardClient = /*#__PURE__*/function () {
42
42
  }
43
43
  }, {
44
44
  key: "getProfile",
45
- value: function getProfile(cloudId, userId) {
46
- return this.userClient.getProfile(cloudId, userId);
45
+ value: function getProfile(cloudId, userId, analytics) {
46
+ return this.userClient.getProfile(cloudId, userId, analytics);
47
47
  }
48
48
  }, {
49
49
  key: "getTeamProfile",
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
10
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
13
 
12
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -23,10 +25,16 @@ var _performance = require("../util/performance");
23
25
 
24
26
  var _CachingClient2 = _interopRequireDefault(require("./CachingClient"));
25
27
 
28
+ var _errorUtils = require("./errorUtils");
29
+
26
30
  var _getTeamFromAGG = require("./getTeamFromAGG");
27
31
 
28
32
  var _graphqlUtils = require("./graphqlUtils");
29
33
 
34
+ 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; }
35
+
36
+ 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; }
37
+
30
38
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
31
39
 
32
40
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
@@ -43,12 +51,6 @@ var buildTeamQuery = function buildTeamQuery(teamId, orgId) {
43
51
  };
44
52
  };
45
53
 
46
- var IGNORED_ERRORS = ['NotPermitted', 'Gone'];
47
-
48
- function isRealError(error) {
49
- return !IGNORED_ERRORS.includes(error.reason);
50
- }
51
-
52
54
  var TeamProfileCardClient = /*#__PURE__*/function (_CachingClient) {
53
55
  (0, _inherits2.default)(TeamProfileCardClient, _CachingClient);
54
56
 
@@ -122,13 +124,12 @@ var TeamProfileCardClient = /*#__PURE__*/function (_CachingClient) {
122
124
 
123
125
  resolve(data);
124
126
  }).catch(function (error) {
125
- if (analytics && isRealError(error)) {
126
- analytics((0, _analytics.teamRequestAnalytics)('failed', {
127
- duration: (0, _performance.getPageTime)() - startTime,
128
- errorStatus: error.code,
129
- errorReason: error.reason,
127
+ if (analytics) {
128
+ analytics((0, _analytics.teamRequestAnalytics)('failed', _objectSpread(_objectSpread({
129
+ duration: (0, _performance.getPageTime)() - startTime
130
+ }, (0, _errorUtils.getErrorAttributes)(error)), {}, {
130
131
  gateway: shouldUseGateway
131
- }));
132
+ })));
132
133
  }
133
134
 
134
135
  reject(error);
@@ -23,8 +23,14 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
23
23
 
24
24
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
25
 
26
+ var _analytics = require("../util/analytics");
27
+
28
+ var _performance = require("../util/performance");
29
+
26
30
  var _CachingClient2 = _interopRequireDefault(require("./CachingClient"));
27
31
 
32
+ var _errorUtils = require("./errorUtils");
33
+
28
34
  var _graphqlUtils = require("./graphqlUtils");
29
35
 
30
36
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
@@ -55,7 +61,6 @@ var modifyResponse = function modifyResponse(response) {
55
61
  return {
56
62
  isBot: data.isBot,
57
63
  isCurrentUser: data.isCurrentUser,
58
- isNotMentionable: data.isNotMentionable,
59
64
  status: data.status,
60
65
  statusModifiedDate: data.statusModifiedDate || undefined,
61
66
  avatarUrl: data.avatarUrl || undefined,
@@ -142,7 +147,7 @@ var UserProfileCardClient = /*#__PURE__*/function (_CachingClient) {
142
147
  }()
143
148
  }, {
144
149
  key: "getProfile",
145
- value: function getProfile(cloudId, userId) {
150
+ value: function getProfile(cloudId, userId, analytics) {
146
151
  var _this2 = this;
147
152
 
148
153
  if (!userId) {
@@ -157,13 +162,31 @@ var UserProfileCardClient = /*#__PURE__*/function (_CachingClient) {
157
162
  }
158
163
 
159
164
  return new Promise(function (resolve, reject) {
165
+ var startTime = (0, _performance.getPageTime)();
166
+
167
+ if (analytics) {
168
+ analytics((0, _analytics.userRequestAnalytics)('triggered'));
169
+ }
170
+
160
171
  _this2.makeRequest(cloudId, userId).then(function (data) {
161
172
  if (_this2.cache) {
162
173
  _this2.setCachedProfile(cacheIdentifier, data);
163
174
  }
164
175
 
176
+ if (analytics) {
177
+ analytics((0, _analytics.userRequestAnalytics)('succeeded', {
178
+ duration: (0, _performance.getPageTime)() - startTime
179
+ }));
180
+ }
181
+
165
182
  resolve(data);
166
183
  }).catch(function (error) {
184
+ if (analytics) {
185
+ analytics((0, _analytics.userRequestAnalytics)('failed', _objectSpread({
186
+ duration: (0, _performance.getPageTime)() - startTime
187
+ }, (0, _errorUtils.getErrorAttributes)(error))));
188
+ }
189
+
167
190
  reject(error);
168
191
  });
169
192
  });
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getErrorAttributes = void 0;
7
+ var IGNORED_ERRORS = ['NotPermitted', 'Gone'];
8
+
9
+ function isIgnoredError(error) {
10
+ return !!error && IGNORED_ERRORS.includes(error.reason);
11
+ }
12
+
13
+ var getErrorAttributes = function getErrorAttributes(error) {
14
+ var _error$response, _error$response$heade;
15
+
16
+ var traceId = !!error ? (_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$heade = _error$response.headers) === null || _error$response$heade === void 0 ? void 0 : _error$response$heade.get('atl-traceid') : undefined;
17
+ return {
18
+ errorStatus: error === null || error === void 0 ? void 0 : error.code,
19
+ errorReason: error === null || error === void 0 ? void 0 : error.reason,
20
+ isSLOFailure: !isIgnoredError(error),
21
+ traceId: traceId !== null && traceId !== void 0 ? traceId : undefined
22
+ };
23
+ };
24
+
25
+ exports.getErrorAttributes = getErrorAttributes;
@@ -2,97 +2,60 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
8
10
  exports.default = void 0;
9
11
 
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
-
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
12
+ var _react = _interopRequireWildcard(require("react"));
19
13
 
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
-
24
- var _react = _interopRequireDefault(require("react"));
25
-
26
- var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
14
+ var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
27
15
 
28
16
  var _crossCircle = _interopRequireDefault(require("@atlaskit/icon/glyph/cross-circle"));
29
17
 
30
18
  var _Error = require("../../styled/Error");
31
19
 
32
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
33
-
34
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
35
-
36
- var ErrorMessage = /*#__PURE__*/function (_React$PureComponent) {
37
- (0, _inherits2.default)(ErrorMessage, _React$PureComponent);
20
+ var _analytics = require("../../util/analytics");
38
21
 
39
- var _super = _createSuper(ErrorMessage);
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
40
23
 
41
- function ErrorMessage() {
42
- var _this;
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
25
 
44
- (0, _classCallCheck2.default)(this, ErrorMessage);
45
-
46
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
47
- args[_key] = arguments[_key];
48
- }
49
-
50
- _this = _super.call.apply(_super, [this].concat(args));
51
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderNotFound", function () {
26
+ var ErrorMessage = function ErrorMessage(props) {
27
+ var errorType = props.errorType || {
28
+ reason: 'default'
29
+ };
30
+ var errorReason = errorType.reason;
31
+ var fireAnalytics = props.fireAnalytics,
32
+ reload = props.reload;
33
+ var hasRetry = !!reload;
34
+ (0, _react.useEffect)(function () {
35
+ fireAnalytics((0, _analytics.profileCardRendered)('user', 'error', {
36
+ hasRetry: hasRetry,
37
+ errorType: errorReason
38
+ }));
39
+ }, [errorReason, fireAnalytics, hasRetry]);
40
+
41
+ var errorContent = function errorContent() {
42
+ if (errorReason === 'NotFound') {
52
43
  return /*#__PURE__*/_react.default.createElement(_Error.ErrorTitle, null, "The user is no longer available for the site");
53
- });
54
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderDefault", function () {
55
- return /*#__PURE__*/_react.default.createElement(_Error.ErrorTitle, null, "Oops, looks like we\u2019re having issues", /*#__PURE__*/_react.default.createElement("br", null), _this.props.reload ? /*#__PURE__*/_react.default.createElement(_Error.ErrorText, null, "Try again and we\u2019ll give it another shot") : null);
56
- });
57
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderRetryButton", function () {
58
- return _this.props.reload ? /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
59
- appearance: "link",
60
- onClick: _this.props.reload
61
- }, "Try again") : null;
62
- });
63
- return _this;
64
- }
65
-
66
- (0, _createClass2.default)(ErrorMessage, [{
67
- key: "renderErrorContent",
68
- value: function renderErrorContent() {
69
- var errorType = this.props.errorType || {
70
- reason: 'default'
71
- };
72
-
73
- switch (errorType.reason) {
74
- case 'NotFound':
75
- return this.renderNotFound();
76
-
77
- default:
78
- return this.renderDefault();
79
- }
80
44
  }
81
- }, {
82
- key: "render",
83
- value: function render() {
84
- return /*#__PURE__*/_react.default.createElement(_Error.ErrorWrapper, null, /*#__PURE__*/_react.default.createElement(_crossCircle.default, {
85
- label: "icon error",
86
- size: "xlarge"
87
- }), this.renderErrorContent(), this.renderRetryButton());
88
- }
89
- }]);
90
- return ErrorMessage;
91
- }(_react.default.PureComponent);
92
45
 
93
- exports.default = ErrorMessage;
94
- (0, _defineProperty2.default)(ErrorMessage, "defaultProps", {
95
- errorType: {
96
- reason: 'default'
97
- }
98
- });
46
+ return /*#__PURE__*/_react.default.createElement(_Error.ErrorTitle, null, "Oops, looks like we\u2019re having issues", /*#__PURE__*/_react.default.createElement("br", null), reload && /*#__PURE__*/_react.default.createElement(_Error.ErrorText, null, "Try again and we\u2019ll give it another shot"));
47
+ };
48
+
49
+ return /*#__PURE__*/_react.default.createElement(_Error.ErrorWrapper, {
50
+ "data-testid": "profilecard-error"
51
+ }, /*#__PURE__*/_react.default.createElement(_crossCircle.default, {
52
+ label: "icon error",
53
+ size: "xlarge"
54
+ }), errorContent(), reload && /*#__PURE__*/_react.default.createElement(_standardButton.default, {
55
+ appearance: "link",
56
+ onClick: reload
57
+ }, "Try again"));
58
+ };
59
+
60
+ var _default = ErrorMessage;
61
+ exports.default = _default;
@@ -25,7 +25,7 @@ var _default = function _default(props) {
25
25
  var analytics = props.analytics;
26
26
  (0, _react.useEffect)(function () {
27
27
  analytics(function (duration) {
28
- return (0, _analytics.teamProfileCardRendered)('spinner', {
28
+ return (0, _analytics.profileCardRendered)('team', 'spinner', {
29
29
  duration: duration
30
30
  });
31
31
  });
@@ -134,7 +134,7 @@ var TeamMembers = function TeamMembers(_ref) {
134
134
  function onActionClick(action, analytics, index) {
135
135
  return function (event) {
136
136
  analytics(function (duration) {
137
- return (0, _analytics.teamActionClicked)({
137
+ return (0, _analytics.actionClicked)('team', {
138
138
  duration: duration,
139
139
  hasHref: !!action.link,
140
140
  hasOnClick: !!action.callback,
@@ -189,7 +189,7 @@ var ExtraActions = function ExtraActions(_ref3) {
189
189
  if (shouldBeOpen) {
190
190
  // Only fire this event when OPENING the dropdown
191
191
  analytics(function (duration) {
192
- return (0, _analytics.moreActionsClicked)({
192
+ return (0, _analytics.moreActionsClicked)('team', {
193
193
  duration: duration,
194
194
  numActions: count + 2
195
195
  });
@@ -280,7 +280,7 @@ var TeamProfilecardContent = function TeamProfilecardContent(_ref5) {
280
280
  analytics(function (duration) {
281
281
  var _team$members;
282
282
 
283
- return (0, _analytics.teamProfileCardRendered)('content', {
283
+ return (0, _analytics.profileCardRendered)('team', 'content', {
284
284
  duration: duration,
285
285
  numActions: allActions.length,
286
286
  memberCount: (_team$members = team.members) === null || _team$members === void 0 ? void 0 : _team$members.length,
@@ -313,7 +313,7 @@ var ErrorMessage = function ErrorMessage(_ref6) {
313
313
  var hasRetry = !!clientFetchProfile;
314
314
  (0, _react.useEffect)(function () {
315
315
  analytics(function (duration) {
316
- return (0, _analytics.teamProfileCardRendered)('error', {
316
+ return (0, _analytics.profileCardRendered)('team', 'error', {
317
317
  duration: duration,
318
318
  hasRetry: hasRetry
319
319
  });
@@ -147,7 +147,7 @@ var TeamProfileCardTriggerInternal = /*#__PURE__*/function (_React$PureComponent
147
147
  _this.showProfilecard(0);
148
148
 
149
149
  if (!_this.state.visible) {
150
- _this.fireAnalytics((0, _analytics.teamCardTriggered)('click'));
150
+ _this.fireAnalytics((0, _analytics.cardTriggered)('team', 'click'));
151
151
  }
152
152
  }
153
153
  });
@@ -159,7 +159,7 @@ var TeamProfileCardTriggerInternal = /*#__PURE__*/function (_React$PureComponent
159
159
  if (!_this.state.visible) {
160
160
  _this.openedByHover = true;
161
161
 
162
- _this.fireAnalytics((0, _analytics.teamCardTriggered)('hover'));
162
+ _this.fireAnalytics((0, _analytics.cardTriggered)('team', 'hover'));
163
163
  }
164
164
 
165
165
  _this.showProfilecard(_config.DELAY_MS_SHOW);
@@ -250,7 +250,7 @@ var TeamProfileCardTriggerInternal = /*#__PURE__*/function (_React$PureComponent
250
250
  });
251
251
  });
252
252
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onErrorBoundary", function () {
253
- _this.fireAnalytics((0, _analytics.teamProfileCardRendered)('errorBoundary', {
253
+ _this.fireAnalytics((0, _analytics.profileCardRendered)('team', 'errorBoundary', {
254
254
  duration: 0
255
255
  }));
256
256
 
@@ -7,13 +7,15 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.OverflowProfileCardButtons = void 0;
10
+ exports.OverflowProfileCardButtons = exports.ACTION_OVERFLOW_THRESHOLD = void 0;
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
14
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
15
 
16
- var _react = _interopRequireDefault(require("react"));
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
17
19
 
18
20
  var _reactIntlNext = require("react-intl-next");
19
21
 
@@ -27,21 +29,53 @@ var _messages = _interopRequireDefault(require("../../messages"));
27
29
 
28
30
  var _Card = require("../../styled/Card");
29
31
 
32
+ var _analytics = require("../../util/analytics");
33
+
30
34
  var _excluded = ["triggerRef", "isSelected", "testId"];
31
35
 
32
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
37
 
34
38
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
39
 
40
+ var ACTION_OVERFLOW_THRESHOLD = 2;
41
+ exports.ACTION_OVERFLOW_THRESHOLD = ACTION_OVERFLOW_THRESHOLD;
42
+
36
43
  var OverflowProfileCardButtons = function OverflowProfileCardButtons(props) {
37
44
  var intl = (0, _reactIntlNext.useIntl)();
38
- return /*#__PURE__*/_react.default.createElement(_Card.OverflowActionButtonsWrapper, null, /*#__PURE__*/_react.default.createElement(_dropdownMenu.default, {
45
+
46
+ var _useState = (0, _react.useState)(false),
47
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
48
+ setOpen = _useState2[1];
49
+
50
+ var actions = props.actions,
51
+ onItemClick = props.onItemClick,
52
+ fireAnalyticsWithDuration = props.fireAnalyticsWithDuration;
53
+ var numActions = actions.length + ACTION_OVERFLOW_THRESHOLD;
54
+ var onOpenChange = (0, _react.useCallback)(function (_ref) {
55
+ var nextOpen = _ref.isOpen;
56
+ setOpen(function (prevOpen) {
57
+ if (nextOpen && !prevOpen) {
58
+ fireAnalyticsWithDuration(function (duration) {
59
+ return (0, _analytics.moreActionsClicked)('user', {
60
+ duration: duration,
61
+ numActions: numActions
62
+ });
63
+ });
64
+ }
65
+
66
+ return nextOpen;
67
+ });
68
+ }, [numActions, fireAnalyticsWithDuration]);
69
+ return /*#__PURE__*/_react.default.createElement(_Card.OverflowActionButtonsWrapper, {
70
+ "data-testid": "profilecard-actions-overflow"
71
+ }, /*#__PURE__*/_react.default.createElement(_dropdownMenu.default, {
72
+ onOpenChange: onOpenChange,
39
73
  placement: 'bottom-end',
40
- trigger: function trigger(_ref) {
41
- var triggerRef = _ref.triggerRef,
42
- isSelected = _ref.isSelected,
43
- testId = _ref.testId,
44
- providedProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
74
+ trigger: function trigger(_ref2) {
75
+ var triggerRef = _ref2.triggerRef,
76
+ isSelected = _ref2.isSelected,
77
+ testId = _ref2.testId,
78
+ providedProps = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
45
79
  return /*#__PURE__*/_react.default.createElement(_customThemeButton.default, (0, _extends2.default)({
46
80
  type: "button"
47
81
  }, providedProps, {
@@ -51,7 +85,7 @@ var OverflowProfileCardButtons = function OverflowProfileCardButtons(props) {
51
85
  })
52
86
  }));
53
87
  }
54
- }, /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItemGroup, null, props.actions.map(function (action) {
88
+ }, /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItemGroup, null, actions.map(function (action, index) {
55
89
  return /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItem, {
56
90
  key: action.id,
57
91
  onClick: function onClick(event) {
@@ -59,7 +93,7 @@ var OverflowProfileCardButtons = function OverflowProfileCardButtons(props) {
59
93
  args[_key - 1] = arguments[_key];
60
94
  }
61
95
 
62
- props.onItemClick(action, args, event);
96
+ onItemClick(action, args, event, index);
63
97
  },
64
98
  href: action.link
65
99
  }, action.label);