@atlaskit/profilecard 16.11.0 → 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.
- package/CHANGELOG.md +18 -0
- package/dist/cjs/client/ProfileCardClient.js +2 -2
- package/dist/cjs/client/TeamProfileCardClient.js +13 -12
- package/dist/cjs/client/UserProfileCardClient.js +25 -2
- package/dist/cjs/client/errorUtils.js +25 -0
- package/dist/cjs/components/Error/ErrorMessage.js +40 -77
- package/dist/cjs/components/Team/TeamLoadingState.js +1 -1
- package/dist/cjs/components/Team/TeamProfileCard.js +4 -4
- package/dist/cjs/components/Team/TeamProfileCardTrigger.js +3 -3
- package/dist/cjs/components/User/OverflowProfileCardButtons.js +44 -10
- package/dist/cjs/components/User/ProfileCard.js +195 -362
- package/dist/cjs/components/User/ProfileCardDetails.js +142 -0
- package/dist/cjs/components/User/ProfileCardResourced.js +25 -20
- package/dist/cjs/components/User/ProfileCardTrigger.js +35 -7
- package/dist/cjs/components/User/ReportingLinesDetails.js +13 -13
- package/dist/cjs/components/User/UserLoadingState.js +14 -2
- package/dist/cjs/util/analytics.js +31 -16
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/client/ProfileCardClient.js +2 -2
- package/dist/es2019/client/TeamProfileCardClient.js +3 -9
- package/dist/es2019/client/UserProfileCardClient.js +23 -2
- package/dist/es2019/client/errorUtils.js +17 -0
- package/dist/es2019/components/Error/ErrorMessage.js +38 -42
- package/dist/es2019/components/Team/TeamLoadingState.js +2 -2
- package/dist/es2019/components/Team/TeamProfileCard.js +5 -5
- package/dist/es2019/components/Team/TeamProfileCardTrigger.js +4 -4
- package/dist/es2019/components/User/OverflowProfileCardButtons.js +30 -4
- package/dist/es2019/components/User/ProfileCard.js +161 -292
- package/dist/es2019/components/User/ProfileCardDetails.js +118 -0
- package/dist/es2019/components/User/ProfileCardResourced.js +21 -21
- package/dist/es2019/components/User/ProfileCardTrigger.js +32 -6
- package/dist/es2019/components/User/ReportingLinesDetails.js +10 -11
- package/dist/es2019/components/User/UserLoadingState.js +10 -2
- package/dist/es2019/util/analytics.js +13 -8
- package/dist/es2019/version.json +1 -1
- package/dist/esm/client/ProfileCardClient.js +2 -2
- package/dist/esm/client/TeamProfileCardClient.js +11 -12
- package/dist/esm/client/UserProfileCardClient.js +22 -2
- package/dist/esm/client/errorUtils.js +17 -0
- package/dist/esm/components/Error/ErrorMessage.js +35 -80
- package/dist/esm/components/Team/TeamLoadingState.js +2 -2
- package/dist/esm/components/Team/TeamProfileCard.js +5 -5
- package/dist/esm/components/Team/TeamProfileCardTrigger.js +4 -4
- package/dist/esm/components/User/OverflowProfileCardButtons.js +39 -9
- package/dist/esm/components/User/ProfileCard.js +180 -362
- package/dist/esm/components/User/ProfileCardDetails.js +120 -0
- package/dist/esm/components/User/ProfileCardResourced.js +17 -17
- package/dist/esm/components/User/ProfileCardTrigger.js +33 -7
- package/dist/esm/components/User/ReportingLinesDetails.js +12 -12
- package/dist/esm/components/User/UserLoadingState.js +7 -2
- package/dist/esm/util/analytics.js +21 -12
- package/dist/esm/version.json +1 -1
- package/dist/types/client/ProfileCardClient.d.ts +3 -2
- package/dist/types/client/TeamProfileCardClient.d.ts +2 -1
- package/dist/types/client/UserProfileCardClient.d.ts +2 -1
- package/dist/types/client/errorUtils.d.ts +6 -0
- package/dist/types/components/Error/ErrorMessage.d.ts +6 -15
- package/dist/types/components/Team/TeamProfileCardTrigger.d.ts +5 -11
- package/dist/types/components/User/OverflowProfileCardButtons.d.ts +4 -3
- package/dist/types/components/User/ProfileCard.d.ts +5 -29
- package/dist/types/components/User/ProfileCardDetails.d.ts +3 -0
- package/dist/types/components/User/ProfileCardResourced.d.ts +7 -3
- package/dist/types/components/User/ProfileCardTrigger.d.ts +3 -40
- package/dist/types/components/User/ReportingLinesDetails.d.ts +2 -4
- package/dist/types/components/User/UserLoadingState.d.ts +5 -1
- package/dist/types/components/User/lazyProfileCard.d.ts +1 -1
- package/dist/types/types.d.ts +11 -10
- package/dist/types/util/analytics.d.ts +22 -13
- package/package.json +9 -9
- package/report.api.md +71 -124
- package/dist/cjs/internal/analytics.js +0 -15
- package/dist/es2019/internal/analytics.js +0 -8
- package/dist/esm/internal/analytics.js +0 -8
- package/dist/types/internal/analytics.d.ts +0 -8
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.ProfileCardDetails = void 0;
|
|
9
|
+
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
|
+
|
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
|
+
|
|
16
|
+
var _reactIntlNext = require("react-intl-next");
|
|
17
|
+
|
|
18
|
+
var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
|
|
19
|
+
|
|
20
|
+
var _relativeDate = _interopRequireDefault(require("../../internal/relative-date"));
|
|
21
|
+
|
|
22
|
+
var _messages = _interopRequireDefault(require("../../messages"));
|
|
23
|
+
|
|
24
|
+
var _Card = require("../../styled/Card");
|
|
25
|
+
|
|
26
|
+
var _Icon = require("../Icon");
|
|
27
|
+
|
|
28
|
+
var _ReportingLinesDetails = _interopRequireDefault(require("./ReportingLinesDetails"));
|
|
29
|
+
|
|
30
|
+
var _excluded = ["text"];
|
|
31
|
+
|
|
32
|
+
var renderName = function renderName(nickname, fullName, meta) {
|
|
33
|
+
if (!fullName && !nickname) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
var isNicknameRedundant = !nickname || nickname === fullName;
|
|
38
|
+
var shownNickname = " (".concat(nickname, ") ");
|
|
39
|
+
var displayName = isNicknameRedundant ? fullName : "".concat(fullName).concat(shownNickname);
|
|
40
|
+
return /*#__PURE__*/_react.default.createElement(_Card.FullNameLabel, {
|
|
41
|
+
noMeta: !meta,
|
|
42
|
+
"data-testid": "profilecard-name"
|
|
43
|
+
}, displayName);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
var disabledAccountDesc = function disabledAccountDesc(statusModifiedDate, disabledAccountMessage) {
|
|
47
|
+
var status = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'closed';
|
|
48
|
+
|
|
49
|
+
// consumer does not want to use built-in message
|
|
50
|
+
if (disabledAccountMessage) {
|
|
51
|
+
return disabledAccountMessage;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
var date = statusModifiedDate ? new Date(statusModifiedDate * 1000) : null;
|
|
55
|
+
var relativeDateKey = (0, _relativeDate.default)(date);
|
|
56
|
+
var msgKey = relativeDateKey ? "".concat(status, "AccountDescMsgHasDate").concat(relativeDateKey) : "".concat(status, "AccountDescMsgNoDate");
|
|
57
|
+
|
|
58
|
+
var secondSentence = /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default[msgKey]);
|
|
59
|
+
|
|
60
|
+
return /*#__PURE__*/_react.default.createElement("p", {
|
|
61
|
+
"data-testid": "profilecard-disabled-account"
|
|
62
|
+
}, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.generalDescMsgForDisabledUser), ' ', secondSentence);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
var CustomLozenges = function CustomLozenges(_ref) {
|
|
66
|
+
var _ref$lozenges = _ref.lozenges,
|
|
67
|
+
lozenges = _ref$lozenges === void 0 ? [] : _ref$lozenges;
|
|
68
|
+
|
|
69
|
+
if (lozenges.length === 0) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return /*#__PURE__*/_react.default.createElement(_Card.CustomLozengeContainer, null, lozenges.map(function (_ref2, index) {
|
|
74
|
+
var text = _ref2.text,
|
|
75
|
+
otherProps = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
|
|
76
|
+
return /*#__PURE__*/_react.default.createElement(_lozenge.default, (0, _extends2.default)({}, otherProps, {
|
|
77
|
+
key: index
|
|
78
|
+
}), text);
|
|
79
|
+
}));
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
var BotProfileCardDetails = function BotProfileCardDetails(props) {
|
|
83
|
+
var fullName = props.fullName,
|
|
84
|
+
nickname = props.nickname;
|
|
85
|
+
return /*#__PURE__*/_react.default.createElement(_Card.DetailsGroup, null, renderName(nickname, fullName), /*#__PURE__*/_react.default.createElement(_Card.AppTitleLabel, null, "App"));
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
var DisabledProfileCardDetails = function DisabledProfileCardDetails(props) {
|
|
89
|
+
var companyName = props.companyName,
|
|
90
|
+
disabledAccountMessage = props.disabledAccountMessage,
|
|
91
|
+
fullName = props.fullName,
|
|
92
|
+
_props$hasDisabledAcc = props.hasDisabledAccountLozenge,
|
|
93
|
+
hasDisabledAccountLozenge = _props$hasDisabledAcc === void 0 ? true : _props$hasDisabledAcc,
|
|
94
|
+
nickname = props.nickname,
|
|
95
|
+
status = props.status,
|
|
96
|
+
statusModifiedDate = props.statusModifiedDate;
|
|
97
|
+
var name = status === 'inactive' ? fullName || nickname : nickname || /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.disabledAccountDefaultName);
|
|
98
|
+
return /*#__PURE__*/_react.default.createElement(_Card.DetailsGroup, null, /*#__PURE__*/_react.default.createElement(_Card.FullNameLabel, {
|
|
99
|
+
noMeta: true,
|
|
100
|
+
isDisabledAccount: true,
|
|
101
|
+
"data-testid": "profilecard-name"
|
|
102
|
+
}, name), hasDisabledAccountLozenge && /*#__PURE__*/_react.default.createElement(_Card.LozengeWrapper, null, /*#__PURE__*/_react.default.createElement(_lozenge.default, {
|
|
103
|
+
appearance: "default",
|
|
104
|
+
isBold: true
|
|
105
|
+
}, status === 'inactive' ? /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.inactiveAccountMsg) : /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.closedAccountMsg))), /*#__PURE__*/_react.default.createElement(_Card.DisabledInfo, null, disabledAccountDesc(statusModifiedDate, disabledAccountMessage, status)), status === 'inactive' && /*#__PURE__*/_react.default.createElement(_Icon.IconLabel, {
|
|
106
|
+
icon: "companyName"
|
|
107
|
+
}, companyName));
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
var ProfileCardDetails = function ProfileCardDetails(props) {
|
|
111
|
+
var meta = props.meta,
|
|
112
|
+
status = props.status;
|
|
113
|
+
|
|
114
|
+
if (props.isBot) {
|
|
115
|
+
return /*#__PURE__*/_react.default.createElement(BotProfileCardDetails, props);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (status === 'inactive' || status === 'closed') {
|
|
119
|
+
return /*#__PURE__*/_react.default.createElement(DisabledProfileCardDetails, (0, _extends2.default)({}, props, {
|
|
120
|
+
status: status
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return /*#__PURE__*/_react.default.createElement(_Card.DetailsGroup, null, renderName(props.nickname, props.fullName, meta), meta && /*#__PURE__*/_react.default.createElement(_Card.JobTitleLabel, null, meta), /*#__PURE__*/_react.default.createElement(CustomLozenges, {
|
|
125
|
+
lozenges: props.customLozenges
|
|
126
|
+
}), /*#__PURE__*/_react.default.createElement(_Icon.IconLabel, {
|
|
127
|
+
icon: "email"
|
|
128
|
+
}, props.email), /*#__PURE__*/_react.default.createElement(_Icon.IconLabel, {
|
|
129
|
+
icon: "time"
|
|
130
|
+
}, props.timestring), /*#__PURE__*/_react.default.createElement(_Icon.IconLabel, {
|
|
131
|
+
icon: "companyName"
|
|
132
|
+
}, props.companyName), /*#__PURE__*/_react.default.createElement(_Icon.IconLabel, {
|
|
133
|
+
icon: "location"
|
|
134
|
+
}, props.location), /*#__PURE__*/_react.default.createElement(_ReportingLinesDetails.default, {
|
|
135
|
+
reportingLines: props.reportingLines,
|
|
136
|
+
reportingLinesProfileUrl: props.reportingLinesProfileUrl,
|
|
137
|
+
onReportingLinesClick: props.onReportingLinesClick,
|
|
138
|
+
fireAnalyticsWithDuration: props.fireAnalyticsWithDuration
|
|
139
|
+
}));
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
exports.ProfileCardDetails = ProfileCardDetails;
|
|
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports.default = void 0;
|
|
10
|
+
exports.default = exports.ProfileCardResourcedInternal = void 0;
|
|
11
11
|
|
|
12
12
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
13
|
|
|
@@ -29,14 +29,16 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
29
29
|
|
|
30
30
|
var _react = _interopRequireWildcard(require("react"));
|
|
31
31
|
|
|
32
|
-
var
|
|
32
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
33
33
|
|
|
34
|
-
var
|
|
34
|
+
var _giveKudos = require("@atlaskit/give-kudos");
|
|
35
35
|
|
|
36
36
|
var _filterActions = _interopRequireDefault(require("../../internal/filterActions"));
|
|
37
37
|
|
|
38
38
|
var _Card = require("../../styled/Card");
|
|
39
39
|
|
|
40
|
+
var _analytics = require("../../util/analytics");
|
|
41
|
+
|
|
40
42
|
var _Error = require("../Error");
|
|
41
43
|
|
|
42
44
|
var _ProfileCard = _interopRequireDefault(require("./ProfileCard"));
|
|
@@ -81,12 +83,14 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
81
83
|
isKudosEnabled: false,
|
|
82
84
|
kudosDrawerOpen: false
|
|
83
85
|
});
|
|
84
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fireAnalytics", function (payload) {
|
|
87
|
+
// Don't fire analytics if the component is unmounted
|
|
88
|
+
if (!_this._isMounted) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
87
91
|
|
|
88
|
-
if (
|
|
89
|
-
|
|
92
|
+
if (_this.props.createAnalyticsEvent) {
|
|
93
|
+
(0, _analytics.fireEvent)(_this.props.createAnalyticsEvent, payload);
|
|
90
94
|
}
|
|
91
95
|
});
|
|
92
96
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "clientFetchProfile", function () {
|
|
@@ -105,7 +109,7 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
105
109
|
hasError: false,
|
|
106
110
|
data: null
|
|
107
111
|
}, function () {
|
|
108
|
-
var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId, userId), _this.props.resourceClient.getReportingLines(userId), _this.props.resourceClient.shouldShowGiveKudos()]);
|
|
112
|
+
var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId, userId, _this.fireAnalytics), _this.props.resourceClient.getReportingLines(userId), _this.props.resourceClient.shouldShowGiveKudos()]);
|
|
109
113
|
requests.then(function (res) {
|
|
110
114
|
var _this2;
|
|
111
115
|
|
|
@@ -146,17 +150,12 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
146
150
|
userId = _this$props2.userId,
|
|
147
151
|
cloudId = _this$props2.cloudId,
|
|
148
152
|
resourceClient = _this$props2.resourceClient;
|
|
149
|
-
var hasError = this.state.hasError;
|
|
150
153
|
|
|
151
154
|
if (userId !== prevProps.userId || cloudId !== prevProps.cloudId || resourceClient !== prevProps.resourceClient) {
|
|
152
155
|
this.setState({
|
|
153
156
|
isLoading: undefined
|
|
154
157
|
}, this.clientFetchProfile);
|
|
155
158
|
}
|
|
156
|
-
|
|
157
|
-
if (hasError !== prevState.hasError && hasError) {
|
|
158
|
-
this.callAnalytics(_analytics.AnalyticsName.PROFILE_CARD_RESOURCED_ERROR);
|
|
159
|
-
}
|
|
160
159
|
}
|
|
161
160
|
}, {
|
|
162
161
|
key: "componentWillUnmount",
|
|
@@ -202,7 +201,6 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
202
201
|
reportingLinesData = _this$state.reportingLinesData,
|
|
203
202
|
isKudosEnabled = _this$state.isKudosEnabled;
|
|
204
203
|
var _this$props3 = this.props,
|
|
205
|
-
analytics = _this$props3.analytics,
|
|
206
204
|
onReportingLinesClick = _this$props3.onReportingLinesClick,
|
|
207
205
|
cloudId = _this$props3.cloudId,
|
|
208
206
|
userId = _this$props3.userId,
|
|
@@ -210,11 +208,14 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
210
208
|
var isFetchingOrNotStartToFetchYet = isLoading === true || isLoading === undefined;
|
|
211
209
|
|
|
212
210
|
if (isFetchingOrNotStartToFetchYet) {
|
|
213
|
-
return /*#__PURE__*/_react.default.createElement(_Card.CardWrapper, null, /*#__PURE__*/_react.default.createElement(_UserLoadingState.default,
|
|
211
|
+
return /*#__PURE__*/_react.default.createElement(_Card.CardWrapper, null, /*#__PURE__*/_react.default.createElement(_UserLoadingState.default, {
|
|
212
|
+
fireAnalytics: this.fireAnalytics
|
|
213
|
+
}));
|
|
214
214
|
} else if (hasError) {
|
|
215
215
|
return /*#__PURE__*/_react.default.createElement(_Card.CardWrapper, null, /*#__PURE__*/_react.default.createElement(_Error.ErrorMessage, {
|
|
216
216
|
errorType: error,
|
|
217
|
-
reload: this.clientFetchProfile
|
|
217
|
+
reload: this.clientFetchProfile,
|
|
218
|
+
fireAnalytics: this.fireAnalytics
|
|
218
219
|
}));
|
|
219
220
|
}
|
|
220
221
|
|
|
@@ -222,7 +223,6 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
222
223
|
hasError: hasError,
|
|
223
224
|
errorType: error,
|
|
224
225
|
clientFetchProfile: this.clientFetchProfile,
|
|
225
|
-
analytics: analytics,
|
|
226
226
|
reportingLines: reportingLinesData,
|
|
227
227
|
onReportingLinesClick: onReportingLinesClick,
|
|
228
228
|
cloudId: cloudId,
|
|
@@ -255,7 +255,12 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
255
255
|
return ProfileCardResourced;
|
|
256
256
|
}(_react.default.PureComponent);
|
|
257
257
|
|
|
258
|
-
exports.default = ProfileCardResourced;
|
|
259
258
|
(0, _defineProperty2.default)(ProfileCardResourced, "defaultProps", {
|
|
260
259
|
actions: []
|
|
261
|
-
});
|
|
260
|
+
});
|
|
261
|
+
var ProfileCardResourcedInternal = ProfileCardResourced;
|
|
262
|
+
exports.ProfileCardResourcedInternal = ProfileCardResourcedInternal;
|
|
263
|
+
|
|
264
|
+
var _default = (0, _analyticsNext.withAnalyticsEvents)()(ProfileCardResourced);
|
|
265
|
+
|
|
266
|
+
exports.default = _default;
|
|
@@ -31,6 +31,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
31
31
|
|
|
32
32
|
var _react = _interopRequireWildcard(require("react"));
|
|
33
33
|
|
|
34
|
+
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
35
|
+
|
|
34
36
|
var _giveKudos = require("@atlaskit/give-kudos");
|
|
35
37
|
|
|
36
38
|
var _popup = _interopRequireDefault(require("@atlaskit/popup"));
|
|
@@ -41,6 +43,8 @@ var _filterActions2 = _interopRequireDefault(require("../../internal/filterActio
|
|
|
41
43
|
|
|
42
44
|
var _Card = require("../../styled/Card");
|
|
43
45
|
|
|
46
|
+
var _analytics = require("../../util/analytics");
|
|
47
|
+
|
|
44
48
|
var _config = require("../../util/config");
|
|
45
49
|
|
|
46
50
|
var _lazyProfileCard = require("./lazyProfileCard");
|
|
@@ -81,6 +85,16 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
81
85
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hideDelay", _this.props.trigger === 'click' ? 0 : _config.DELAY_MS_HIDE);
|
|
82
86
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "showTimer", 0);
|
|
83
87
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hideTimer", 0);
|
|
88
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fireAnalytics", function (payload) {
|
|
89
|
+
// Don't fire any analytics if the component is unmounted
|
|
90
|
+
if (!_this._isMounted) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (_this.props.createAnalyticsEvent) {
|
|
95
|
+
(0, _analytics.fireEvent)(_this.props.createAnalyticsEvent, payload);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
84
98
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hideProfilecard", function () {
|
|
85
99
|
clearTimeout(_this.showTimer);
|
|
86
100
|
clearTimeout(_this.hideTimer);
|
|
@@ -110,9 +124,20 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
110
124
|
event.stopPropagation();
|
|
111
125
|
|
|
112
126
|
_this.showProfilecard();
|
|
127
|
+
|
|
128
|
+
if (!_this.state.visible) {
|
|
129
|
+
_this.fireAnalytics((0, _analytics.cardTriggered)('user', 'click'));
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMouseEnter", function () {
|
|
133
|
+
_this.showProfilecard();
|
|
134
|
+
|
|
135
|
+
if (!_this.state.visible) {
|
|
136
|
+
_this.fireAnalytics((0, _analytics.cardTriggered)('user', 'hover'));
|
|
137
|
+
}
|
|
113
138
|
});
|
|
114
139
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "containerListeners", _this.props.trigger === 'hover' ? {
|
|
115
|
-
onMouseEnter: _this.
|
|
140
|
+
onMouseEnter: _this.onMouseEnter,
|
|
116
141
|
onMouseLeave: _this.hideProfilecard
|
|
117
142
|
} : {
|
|
118
143
|
onClick: _this.onClick
|
|
@@ -152,7 +177,7 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
152
177
|
hasError: false,
|
|
153
178
|
data: null
|
|
154
179
|
}, function () {
|
|
155
|
-
var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId || '', userId), _this.props.resourceClient.getReportingLines(userId), _this.props.resourceClient.shouldShowGiveKudos()]);
|
|
180
|
+
var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId || '', userId, _this.fireAnalytics), _this.props.resourceClient.getReportingLines(userId), _this.props.resourceClient.shouldShowGiveKudos()]);
|
|
156
181
|
requests.then(function (res) {
|
|
157
182
|
var _this2;
|
|
158
183
|
|
|
@@ -180,7 +205,9 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
180
205
|
var isLoading = _this.state.isLoading;
|
|
181
206
|
|
|
182
207
|
if (isLoading === true || isLoading === undefined) {
|
|
183
|
-
return /*#__PURE__*/_react.default.createElement(_Card.CardWrapper, null, /*#__PURE__*/_react.default.createElement(_UserLoadingState.default,
|
|
208
|
+
return /*#__PURE__*/_react.default.createElement(_Card.CardWrapper, null, /*#__PURE__*/_react.default.createElement(_UserLoadingState.default, {
|
|
209
|
+
fireAnalytics: _this.fireAnalytics
|
|
210
|
+
}));
|
|
184
211
|
} else {
|
|
185
212
|
return _this.renderProfileCard();
|
|
186
213
|
}
|
|
@@ -256,8 +283,7 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
256
283
|
var newProps = _objectSpread(_objectSpread({
|
|
257
284
|
userId: this.props.userId,
|
|
258
285
|
isCurrentUser: (_this$state$data = this.state.data) === null || _this$state$data === void 0 ? void 0 : _this$state$data.isCurrentUser,
|
|
259
|
-
clientFetchProfile: this.clientFetchProfile
|
|
260
|
-
analytics: this.props.analytics
|
|
286
|
+
clientFetchProfile: this.clientFetchProfile
|
|
261
287
|
}, this.state.data), {}, {
|
|
262
288
|
reportingLines: this.state.reportingLinesData,
|
|
263
289
|
onReportingLinesClick: this.props.onReportingLinesClick,
|
|
@@ -268,7 +294,7 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
268
294
|
});
|
|
269
295
|
|
|
270
296
|
var wrapperProps = this.props.trigger === 'hover' ? {
|
|
271
|
-
onMouseEnter: this.
|
|
297
|
+
onMouseEnter: this.onMouseEnter,
|
|
272
298
|
onMouseLeave: this.hideProfilecard
|
|
273
299
|
} : {};
|
|
274
300
|
return /*#__PURE__*/_react.default.createElement("div", wrapperProps, this.state.visible && /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
@@ -333,5 +359,7 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
333
359
|
trigger: 'hover',
|
|
334
360
|
position: 'bottom-start'
|
|
335
361
|
});
|
|
336
|
-
|
|
362
|
+
|
|
363
|
+
var _default = (0, _analyticsNext.withAnalyticsEvents)()(ProfilecardTrigger);
|
|
364
|
+
|
|
337
365
|
exports.default = _default;
|
|
@@ -17,12 +17,12 @@ var _avatarGroup = _interopRequireDefault(require("@atlaskit/avatar-group"));
|
|
|
17
17
|
|
|
18
18
|
var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
|
|
19
19
|
|
|
20
|
-
var _analytics = require("../../internal/analytics");
|
|
21
|
-
|
|
22
20
|
var _messages = _interopRequireDefault(require("../../messages"));
|
|
23
21
|
|
|
24
22
|
var _ReportingLines = require("../../styled/ReportingLines");
|
|
25
23
|
|
|
24
|
+
var _analytics = require("../../util/analytics");
|
|
25
|
+
|
|
26
26
|
function getProfileHref(userId, profileUrl) {
|
|
27
27
|
return profileUrl ? profileUrl + userId : undefined;
|
|
28
28
|
}
|
|
@@ -30,13 +30,11 @@ function getProfileHref(userId, profileUrl) {
|
|
|
30
30
|
var ReportingLinesDetails = function ReportingLinesDetails(props) {
|
|
31
31
|
var _manager$pii, _manager$pii2;
|
|
32
32
|
|
|
33
|
-
var
|
|
33
|
+
var fireAnalyticsWithDuration = props.fireAnalyticsWithDuration,
|
|
34
|
+
_props$reportingLines = props.reportingLines,
|
|
34
35
|
reportingLines = _props$reportingLines === void 0 ? {} : _props$reportingLines,
|
|
35
36
|
reportingLinesProfileUrl = props.reportingLinesProfileUrl,
|
|
36
|
-
onReportingLinesClick = props.onReportingLinesClick
|
|
37
|
-
_props$analytics = props.analytics,
|
|
38
|
-
analytics = _props$analytics === void 0 ? function () {} : _props$analytics,
|
|
39
|
-
getDuration = props.getDuration;
|
|
37
|
+
onReportingLinesClick = props.onReportingLinesClick;
|
|
40
38
|
var _reportingLines$manag = reportingLines.managers,
|
|
41
39
|
managers = _reportingLines$manag === void 0 ? [] : _reportingLines$manag,
|
|
42
40
|
_reportingLines$repor = reportingLines.reports,
|
|
@@ -44,11 +42,13 @@ var ReportingLinesDetails = function ReportingLinesDetails(props) {
|
|
|
44
42
|
var manager = managers.length >= 1 ? managers[0] : undefined;
|
|
45
43
|
var hasReports = reports.length > 0;
|
|
46
44
|
|
|
47
|
-
var getReportingLinesOnClick = function getReportingLinesOnClick(user,
|
|
45
|
+
var getReportingLinesOnClick = function getReportingLinesOnClick(user, userType) {
|
|
48
46
|
return onReportingLinesClick ? function () {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
fireAnalyticsWithDuration(function (duration) {
|
|
48
|
+
return (0, _analytics.reportingLinesClicked)({
|
|
49
|
+
duration: duration,
|
|
50
|
+
userType: userType
|
|
51
|
+
});
|
|
52
52
|
});
|
|
53
53
|
onReportingLinesClick(user);
|
|
54
54
|
} : undefined;
|
|
@@ -62,7 +62,7 @@ var ReportingLinesDetails = function ReportingLinesDetails(props) {
|
|
|
62
62
|
appearance: "subtle",
|
|
63
63
|
spacing: "none",
|
|
64
64
|
href: getProfileHref(manager.accountIdentifier, reportingLinesProfileUrl),
|
|
65
|
-
onClick: getReportingLinesOnClick(manager, '
|
|
65
|
+
onClick: getReportingLinesOnClick(manager, 'manager'),
|
|
66
66
|
isDisabled: !onReportingLinesClick
|
|
67
67
|
}, /*#__PURE__*/_react.default.createElement(_ReportingLines.ManagerSection, null, /*#__PURE__*/_react.default.createElement(_avatar.default, {
|
|
68
68
|
size: "xsmall",
|
|
@@ -78,7 +78,7 @@ var ReportingLinesDetails = function ReportingLinesDetails(props) {
|
|
|
78
78
|
name: ((_member$pii = member.pii) === null || _member$pii === void 0 ? void 0 : _member$pii.name) || '',
|
|
79
79
|
src: (_member$pii2 = member.pii) === null || _member$pii2 === void 0 ? void 0 : _member$pii2.picture,
|
|
80
80
|
href: getProfileHref(member.accountIdentifier, reportingLinesProfileUrl),
|
|
81
|
-
onClick: getReportingLinesOnClick(member, '
|
|
81
|
+
onClick: getReportingLinesOnClick(member, 'direct-report')
|
|
82
82
|
};
|
|
83
83
|
}),
|
|
84
84
|
maxCount: 5,
|
|
@@ -2,18 +2,30 @@
|
|
|
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 _react =
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
13
|
|
|
12
14
|
var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
|
|
13
15
|
|
|
14
16
|
var _Card = require("../../styled/Card");
|
|
15
17
|
|
|
16
|
-
var
|
|
18
|
+
var _analytics = require("../../util/analytics");
|
|
19
|
+
|
|
20
|
+
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); }
|
|
21
|
+
|
|
22
|
+
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; }
|
|
23
|
+
|
|
24
|
+
var UserLoadingState = function UserLoadingState(_ref) {
|
|
25
|
+
var fireAnalytics = _ref.fireAnalytics;
|
|
26
|
+
(0, _react.useEffect)(function () {
|
|
27
|
+
fireAnalytics((0, _analytics.profileCardRendered)('user', 'spinner'));
|
|
28
|
+
}, [fireAnalytics]);
|
|
17
29
|
return /*#__PURE__*/_react.default.createElement(_Card.SpinnerContainer, null, /*#__PURE__*/_react.default.createElement(_spinner.default, null));
|
|
18
30
|
};
|
|
19
31
|
|
|
@@ -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.
|
|
8
|
+
exports.userRequestAnalytics = exports.teamRequestAnalytics = exports.teamAvatarClicked = exports.reportingLinesClicked = exports.profileCardRendered = exports.moreMembersClicked = exports.moreActionsClicked = exports.fireEvent = exports.errorRetryClicked = exports.cardTriggered = exports.actionClicked = void 0;
|
|
9
9
|
|
|
10
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
11
|
|
|
@@ -19,8 +19,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
19
19
|
var ANALYTICS_CHANNEL = 'peopleTeams';
|
|
20
20
|
|
|
21
21
|
var runItLater = function runItLater(cb) {
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
var requestIdleCallback = window.requestIdleCallback;
|
|
23
|
+
|
|
24
|
+
if (typeof requestIdleCallback === 'function') {
|
|
25
|
+
return requestIdleCallback(cb);
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
if (typeof window.requestAnimationFrame === 'function') {
|
|
@@ -46,6 +48,7 @@ var fireEvent = function fireEvent(createAnalyticsEvent, body) {
|
|
|
46
48
|
|
|
47
49
|
exports.fireEvent = fireEvent;
|
|
48
50
|
var TEAM_SUBJECT = 'teamProfileCard';
|
|
51
|
+
var USER_SUBJECT = 'profilecard';
|
|
49
52
|
|
|
50
53
|
var createEvent = function createEvent(eventType, action, actionSubject, actionSubjectId) {
|
|
51
54
|
var attributes = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
|
|
@@ -56,20 +59,20 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
|
|
|
56
59
|
actionSubjectId: actionSubjectId,
|
|
57
60
|
attributes: _objectSpread(_objectSpread({
|
|
58
61
|
packageName: "@atlaskit/profilecard",
|
|
59
|
-
packageVersion: "
|
|
62
|
+
packageVersion: "17.0.0"
|
|
60
63
|
}, attributes), {}, {
|
|
61
|
-
firedAt: (0, _performance.getPageTime)()
|
|
64
|
+
firedAt: Math.round((0, _performance.getPageTime)())
|
|
62
65
|
})
|
|
63
66
|
};
|
|
64
67
|
};
|
|
65
68
|
|
|
66
|
-
var
|
|
67
|
-
return createEvent('ui', 'triggered', TEAM_SUBJECT, undefined, {
|
|
69
|
+
var cardTriggered = function cardTriggered(type, method) {
|
|
70
|
+
return createEvent('ui', 'triggered', type === 'user' ? USER_SUBJECT : TEAM_SUBJECT, undefined, {
|
|
68
71
|
method: method
|
|
69
72
|
});
|
|
70
73
|
};
|
|
71
74
|
|
|
72
|
-
exports.
|
|
75
|
+
exports.cardTriggered = cardTriggered;
|
|
73
76
|
|
|
74
77
|
var teamRequestAnalytics = function teamRequestAnalytics(action, attributes) {
|
|
75
78
|
return createEvent('operational', action, TEAM_SUBJECT, 'request', attributes);
|
|
@@ -77,20 +80,32 @@ var teamRequestAnalytics = function teamRequestAnalytics(action, attributes) {
|
|
|
77
80
|
|
|
78
81
|
exports.teamRequestAnalytics = teamRequestAnalytics;
|
|
79
82
|
|
|
80
|
-
var
|
|
81
|
-
return createEvent('
|
|
83
|
+
var userRequestAnalytics = function userRequestAnalytics(action, attributes) {
|
|
84
|
+
return createEvent('operational', action, USER_SUBJECT, 'request', attributes);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
exports.userRequestAnalytics = userRequestAnalytics;
|
|
88
|
+
|
|
89
|
+
var profileCardRendered = function profileCardRendered(type, actionSubjectId, attributes) {
|
|
90
|
+
return createEvent('ui', 'rendered', type === 'user' ? USER_SUBJECT : TEAM_SUBJECT, actionSubjectId, attributes);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
exports.profileCardRendered = profileCardRendered;
|
|
94
|
+
|
|
95
|
+
var actionClicked = function actionClicked(type, attributes) {
|
|
96
|
+
return createEvent('ui', 'clicked', type === 'user' ? USER_SUBJECT : TEAM_SUBJECT, 'action', attributes);
|
|
82
97
|
};
|
|
83
98
|
|
|
84
|
-
exports.
|
|
99
|
+
exports.actionClicked = actionClicked;
|
|
85
100
|
|
|
86
|
-
var
|
|
87
|
-
return createEvent('ui', 'clicked',
|
|
101
|
+
var reportingLinesClicked = function reportingLinesClicked(attributes) {
|
|
102
|
+
return createEvent('ui', 'clicked', USER_SUBJECT, 'reportingLines', attributes);
|
|
88
103
|
};
|
|
89
104
|
|
|
90
|
-
exports.
|
|
105
|
+
exports.reportingLinesClicked = reportingLinesClicked;
|
|
91
106
|
|
|
92
|
-
var moreActionsClicked = function moreActionsClicked(attributes) {
|
|
93
|
-
return createEvent('ui', 'clicked', TEAM_SUBJECT, 'moreActions', attributes);
|
|
107
|
+
var moreActionsClicked = function moreActionsClicked(type, attributes) {
|
|
108
|
+
return createEvent('ui', 'clicked', type === 'user' ? USER_SUBJECT : TEAM_SUBJECT, 'moreActions', attributes);
|
|
94
109
|
};
|
|
95
110
|
|
|
96
111
|
exports.moreActionsClicked = moreActionsClicked;
|
package/dist/cjs/version.json
CHANGED
|
@@ -17,8 +17,8 @@ class ProfileCardClient {
|
|
|
17
17
|
(_this$tcClient = this.tcClient) === null || _this$tcClient === void 0 ? void 0 : _this$tcClient.flushCache();
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
getProfile(cloudId, userId) {
|
|
21
|
-
return this.userClient.getProfile(cloudId, userId);
|
|
20
|
+
getProfile(cloudId, userId, analytics) {
|
|
21
|
+
return this.userClient.getProfile(cloudId, userId, analytics);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
getTeamProfile(teamId, orgId, analytics) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { teamRequestAnalytics } from '../util/analytics';
|
|
2
2
|
import { getPageTime } from '../util/performance';
|
|
3
3
|
import CachingClient from './CachingClient';
|
|
4
|
+
import { getErrorAttributes } from './errorUtils';
|
|
4
5
|
import { getTeamFromAGG } from './getTeamFromAGG';
|
|
5
6
|
import { graphqlQuery } from './graphqlUtils';
|
|
6
7
|
const QUERY = `query Team($teamId: String!, $organizationId: String) {
|
|
@@ -28,12 +29,6 @@ const buildTeamQuery = (teamId, orgId) => ({
|
|
|
28
29
|
}
|
|
29
30
|
});
|
|
30
31
|
|
|
31
|
-
const IGNORED_ERRORS = ['NotPermitted', 'Gone'];
|
|
32
|
-
|
|
33
|
-
function isRealError(error) {
|
|
34
|
-
return !IGNORED_ERRORS.includes(error.reason);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
32
|
export default class TeamProfileCardClient extends CachingClient {
|
|
38
33
|
constructor(options) {
|
|
39
34
|
super(options);
|
|
@@ -91,11 +86,10 @@ export default class TeamProfileCardClient extends CachingClient {
|
|
|
91
86
|
|
|
92
87
|
resolve(data);
|
|
93
88
|
}).catch(error => {
|
|
94
|
-
if (analytics
|
|
89
|
+
if (analytics) {
|
|
95
90
|
analytics(teamRequestAnalytics('failed', {
|
|
96
91
|
duration: getPageTime() - startTime,
|
|
97
|
-
|
|
98
|
-
errorReason: error.reason,
|
|
92
|
+
...getErrorAttributes(error),
|
|
99
93
|
gateway: shouldUseGateway
|
|
100
94
|
}));
|
|
101
95
|
}
|