@atlaskit/profilecard 16.4.7 → 16.6.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 (40) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/client/ProfileCardClient.js +16 -0
  3. package/dist/cjs/client/TeamCentralCardClient.js +91 -5
  4. package/dist/cjs/components/User/ProfileCard.js +62 -25
  5. package/dist/cjs/components/User/ProfileCardResourced.js +63 -13
  6. package/dist/cjs/components/User/ProfileCardTrigger.js +60 -12
  7. package/dist/cjs/messages.js +5 -0
  8. package/dist/cjs/mocks/mock-profile-client.js +5 -0
  9. package/dist/cjs/styled/Card.js +1 -1
  10. package/dist/cjs/util/analytics.js +1 -1
  11. package/dist/cjs/version.json +1 -1
  12. package/dist/es2019/client/ProfileCardClient.js +14 -0
  13. package/dist/es2019/client/TeamCentralCardClient.js +57 -0
  14. package/dist/es2019/components/User/ProfileCard.js +53 -16
  15. package/dist/es2019/components/User/ProfileCardResourced.js +51 -11
  16. package/dist/es2019/components/User/ProfileCardTrigger.js +51 -8
  17. package/dist/es2019/messages.js +5 -0
  18. package/dist/es2019/mocks/mock-profile-client.js +4 -0
  19. package/dist/es2019/styled/Card.js +3 -1
  20. package/dist/es2019/util/analytics.js +1 -1
  21. package/dist/es2019/version.json +1 -1
  22. package/dist/esm/client/ProfileCardClient.js +16 -0
  23. package/dist/esm/client/TeamCentralCardClient.js +91 -5
  24. package/dist/esm/components/User/ProfileCard.js +65 -25
  25. package/dist/esm/components/User/ProfileCardResourced.js +57 -13
  26. package/dist/esm/components/User/ProfileCardTrigger.js +60 -12
  27. package/dist/esm/messages.js +5 -0
  28. package/dist/esm/mocks/mock-profile-client.js +5 -0
  29. package/dist/esm/styled/Card.js +1 -1
  30. package/dist/esm/util/analytics.js +1 -1
  31. package/dist/esm/version.json +1 -1
  32. package/dist/types/client/ProfileCardClient.d.ts +2 -0
  33. package/dist/types/client/TeamCentralCardClient.d.ts +7 -0
  34. package/dist/types/client/graphqlUtils.d.ts +1 -1
  35. package/dist/types/components/User/ProfileCard.d.ts +6 -2
  36. package/dist/types/components/User/ProfileCardResourced.d.ts +3 -1
  37. package/dist/types/components/User/ProfileCardTrigger.d.ts +3 -1
  38. package/dist/types/messages.d.ts +5 -0
  39. package/dist/types/types.d.ts +21 -1
  40. package/package.json +8 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/profilecard
2
2
 
3
+ ## 16.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`7c691c8e8a9`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7c691c8e8a9) - [ux] Launch the give kudos flow via a drawer from the profile-card.
8
+
9
+ ## 16.5.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`31ca93c69a3`](https://bitbucket.org/atlassian/atlassian-frontend/commits/31ca93c69a3) - [ux] Adding give kudos button to the profile card
14
+
15
+ ## 16.4.8
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+
3
21
  ## 16.4.7
4
22
 
5
23
  ### Patch Changes
@@ -60,6 +60,22 @@ var ProfileCardClient = /*#__PURE__*/function () {
60
60
  reports: []
61
61
  });
62
62
  }
63
+ }, {
64
+ key: "getTeamCentralBaseUrl",
65
+ value: function getTeamCentralBaseUrl() {
66
+ var _this$tcClient3;
67
+
68
+ return (_this$tcClient3 = this.tcClient) === null || _this$tcClient3 === void 0 ? void 0 : _this$tcClient3.options.teamCentralBaseUrl;
69
+ }
70
+ }, {
71
+ key: "shouldShowGiveKudos",
72
+ value: function shouldShowGiveKudos() {
73
+ var _this$tcClient4, _this$tcClient5, _this$tcClient6;
74
+
75
+ // Check if the kudos feature enabled and if the user has TC
76
+ // if the user does not have TC the tc client will be undefined.
77
+ return ((_this$tcClient4 = this.tcClient) === null || _this$tcClient4 === void 0 ? void 0 : _this$tcClient4.options.teamCentralBaseUrl) && ((_this$tcClient5 = this.tcClient) === null || _this$tcClient5 === void 0 ? void 0 : _this$tcClient5.getFlagEnabled('team-central-kudos-enabled-m2', (_this$tcClient6 = this.tcClient) === null || _this$tcClient6 === void 0 ? void 0 : _this$tcClient6.options.productIdentifier)) || Promise.resolve(false);
78
+ }
63
79
  }]);
64
80
  return ProfileCardClient;
65
81
  }();
@@ -38,6 +38,16 @@ var buildReportingLinesQuery = function buildReportingLinesQuery(aaid) {
38
38
  };
39
39
  };
40
40
 
41
+ var buildCheckFeatureFlagQuery = function buildCheckFeatureFlagQuery(featureKey, context) {
42
+ return {
43
+ query: "\n query isFeatureKeyEnabled($featureKey: String!, $context: [IsFeatureEnabledContextInput]) {\n isFeatureEnabled(featureKey: $featureKey, context: $context) {\n enabled\n }\n }\n ",
44
+ variables: {
45
+ featureKey: featureKey,
46
+ context: context
47
+ }
48
+ };
49
+ };
50
+
41
51
  var TeamCentralCardClient = /*#__PURE__*/function (_CachingClient) {
42
52
  (0, _inherits2.default)(TeamCentralCardClient, _CachingClient);
43
53
 
@@ -58,13 +68,14 @@ var TeamCentralCardClient = /*#__PURE__*/function (_CachingClient) {
58
68
  _this = _super.call(this, options);
59
69
  _this.options = options;
60
70
  _this.bypassOnFailure = false;
71
+ _this.featureFlagKeys = new Map();
61
72
  return _this;
62
73
  }
63
74
 
64
75
  (0, _createClass2.default)(TeamCentralCardClient, [{
65
- key: "makeRequest",
76
+ key: "makeFeatureFlagCheckRequest",
66
77
  value: function () {
67
- var _makeRequest = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(userId) {
78
+ var _makeFeatureFlagCheckRequest = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(featureKey, context) {
68
79
  var query, response;
69
80
  return _regenerator.default.wrap(function _callee$(_context) {
70
81
  while (1) {
@@ -78,13 +89,13 @@ var TeamCentralCardClient = /*#__PURE__*/function (_CachingClient) {
78
89
  throw new Error('options.teamCentralUrl is a required parameter for retrieving Team Central data');
79
90
 
80
91
  case 2:
81
- query = buildReportingLinesQuery(userId);
92
+ query = buildCheckFeatureFlagQuery(featureKey, context);
82
93
  _context.next = 5;
83
94
  return (0, _graphqlUtils.graphqlQuery)(this.options.teamCentralUrl, query);
84
95
 
85
96
  case 5:
86
97
  response = _context.sent;
87
- return _context.abrupt("return", response.reportingLines);
98
+ return _context.abrupt("return", response.isFeatureEnabled.enabled);
88
99
 
89
100
  case 7:
90
101
  case "end":
@@ -94,7 +105,46 @@ var TeamCentralCardClient = /*#__PURE__*/function (_CachingClient) {
94
105
  }, _callee, this);
95
106
  }));
96
107
 
97
- function makeRequest(_x) {
108
+ function makeFeatureFlagCheckRequest(_x, _x2) {
109
+ return _makeFeatureFlagCheckRequest.apply(this, arguments);
110
+ }
111
+
112
+ return makeFeatureFlagCheckRequest;
113
+ }()
114
+ }, {
115
+ key: "makeRequest",
116
+ value: function () {
117
+ var _makeRequest = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(userId) {
118
+ var query, response;
119
+ return _regenerator.default.wrap(function _callee2$(_context2) {
120
+ while (1) {
121
+ switch (_context2.prev = _context2.next) {
122
+ case 0:
123
+ if (this.options.teamCentralUrl) {
124
+ _context2.next = 2;
125
+ break;
126
+ }
127
+
128
+ throw new Error('options.teamCentralUrl is a required parameter for retrieving Team Central data');
129
+
130
+ case 2:
131
+ query = buildReportingLinesQuery(userId);
132
+ _context2.next = 5;
133
+ return (0, _graphqlUtils.graphqlQuery)(this.options.teamCentralUrl, query);
134
+
135
+ case 5:
136
+ response = _context2.sent;
137
+ return _context2.abrupt("return", response.reportingLines);
138
+
139
+ case 7:
140
+ case "end":
141
+ return _context2.stop();
142
+ }
143
+ }
144
+ }, _callee2, this);
145
+ }));
146
+
147
+ function makeRequest(_x3) {
98
148
  return _makeRequest.apply(this, arguments);
99
149
  }
100
150
 
@@ -146,6 +196,42 @@ var TeamCentralCardClient = /*#__PURE__*/function (_CachingClient) {
146
196
  });
147
197
  });
148
198
  }
199
+ }, {
200
+ key: "getFlagEnabled",
201
+ value: function getFlagEnabled(featureKey, productIdentifier) {
202
+ var _this3 = this;
203
+
204
+ if (!featureKey) {
205
+ return Promise.reject(new Error('featureKey missing'));
206
+ }
207
+
208
+ if (this.featureFlagKeys.has(featureKey)) {
209
+ return Promise.resolve(this.featureFlagKeys.get(featureKey));
210
+ }
211
+
212
+ if (this.bypassOnFailure) {
213
+ return Promise.resolve(false);
214
+ }
215
+
216
+ var context = [{
217
+ key: 'productIdentifier',
218
+ value: productIdentifier || 'unset'
219
+ }];
220
+ return new Promise(function (resolve) {
221
+ _this3.makeFeatureFlagCheckRequest(featureKey, context).then(function (enabled) {
222
+ _this3.featureFlagKeys.set(featureKey, enabled);
223
+
224
+ resolve(enabled);
225
+ }).catch(function (error) {
226
+ if ((error === null || error === void 0 ? void 0 : error.status) === 401 || (error === null || error === void 0 ? void 0 : error.status) === 403) {
227
+ // Trigger circuit breaker
228
+ _this3.bypassOnFailure = true;
229
+ }
230
+
231
+ resolve(false);
232
+ });
233
+ });
234
+ }
149
235
  }, {
150
236
  key: "filterReportingLinesUser",
151
237
  value: function filterReportingLinesUser() {
@@ -89,6 +89,41 @@ var Profilecard = /*#__PURE__*/function (_React$PureComponent) {
89
89
  _this.props.analytics(id, options);
90
90
  }
91
91
  });
92
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "kudosUrl", function () {
93
+ var recipientId = _this.props.userId && "&recipientId=".concat(_this.props.userId) || '';
94
+ var cloudId = _this.props.cloudId && "&cloudId=".concat(_this.props.cloudId) || '';
95
+ return "".concat(_this.props.teamCentralBaseUrl, "/kudos/give?type=individual").concat(recipientId).concat(cloudId);
96
+ });
97
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "kudosButtonCallback", function () {
98
+ if (_this.props.openKudosDrawer) {
99
+ _this.props.openKudosDrawer();
100
+ } else {
101
+ window.open(_this.kudosUrl());
102
+ }
103
+ });
104
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderButton", function (action, idx) {
105
+ return /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
106
+ appearance: idx === 0 ? 'default' : 'subtle',
107
+ key: action.id || idx,
108
+ onClick: function onClick(event) {
109
+ _this.callAnalytics(_analytics.AnalyticsName.PROFILE_CARD_CLICK, {
110
+ id: action.id || null,
111
+ duration: _this.durationSince(_this.timeOpen)
112
+ });
113
+
114
+ if (action.callback && (0, _click.isBasicClick)(event)) {
115
+ event.preventDefault();
116
+
117
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
118
+ args[_key - 1] = arguments[_key];
119
+ }
120
+
121
+ action.callback.apply(action, [event].concat(args));
122
+ }
123
+ },
124
+ href: action.link
125
+ }, action.label);
126
+ });
92
127
  _this.timeOpen = null;
93
128
 
94
129
  _this.clientFetchProfile = function () {
@@ -116,43 +151,45 @@ var Profilecard = /*#__PURE__*/function (_React$PureComponent) {
116
151
  errorType: this.props.errorType
117
152
  });
118
153
  }
154
+ }, {
155
+ key: "getActions",
156
+ value: function getActions() {
157
+ var _this3 = this;
158
+
159
+ var actions = this.props.actions || [];
160
+
161
+ if (!this.props.isCurrentUser && this.props.isKudosEnabled) {
162
+ var kudosAction = {
163
+ label: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.giveKudosButton),
164
+ id: 'give-kudos',
165
+ callback: function callback() {
166
+ _this3.kudosButtonCallback();
167
+ },
168
+ link: this.kudosUrl()
169
+ };
170
+ return actions.concat([kudosAction]);
171
+ }
172
+
173
+ return actions;
174
+ }
119
175
  }, {
120
176
  key: "renderActionsButtons",
121
177
  value: function renderActionsButtons() {
122
- var _this3 = this;
178
+ var _this4 = this;
123
179
 
124
180
  if (this.props.actions && this.props.actions.length === 0) {
125
181
  return null;
126
182
  }
127
183
 
128
- return /*#__PURE__*/_react.default.createElement(_Card.ActionButtonGroup, null, this.props.actions && this.props.actions.map(function (action, idx) {
129
- return /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
130
- appearance: idx === 0 ? 'default' : 'subtle',
131
- key: action.id || idx,
132
- onClick: function onClick(event) {
133
- _this3.callAnalytics(_analytics.AnalyticsName.PROFILE_CARD_CLICK, {
134
- id: action.id || null,
135
- duration: _this3.durationSince(_this3.timeOpen)
136
- });
137
-
138
- if (action.callback && (0, _click.isBasicClick)(event)) {
139
- event.preventDefault();
140
-
141
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
142
- args[_key - 1] = arguments[_key];
143
- }
144
-
145
- action.callback.apply(action, [event].concat(args));
146
- }
147
- },
148
- href: action.link
149
- }, action.label);
184
+ var actions = this.getActions();
185
+ return /*#__PURE__*/_react.default.createElement(_Card.ActionButtonGroup, null, actions.map(function (action, idx) {
186
+ return _this4.renderButton(action, idx);
150
187
  }));
151
188
  }
152
189
  }, {
153
190
  key: "renderCardDetailsDefault",
154
191
  value: function renderCardDetailsDefault() {
155
- var _this4 = this;
192
+ var _this5 = this;
156
193
 
157
194
  var _this$props2 = this.props,
158
195
  meta = _this$props2.meta,
@@ -175,7 +212,7 @@ var Profilecard = /*#__PURE__*/function (_React$PureComponent) {
175
212
  onReportingLinesClick: this.props.onReportingLinesClick,
176
213
  analytics: this.props.analytics,
177
214
  getDuration: function getDuration() {
178
- return _this4.durationSince(_this4.timeOpen);
215
+ return _this5.durationSince(_this5.timeOpen);
179
216
  }
180
217
  }));
181
218
  }
@@ -2,6 +2,8 @@
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
  });
@@ -9,6 +11,8 @@ exports.default = void 0;
9
11
 
10
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
13
 
14
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
+
12
16
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
17
 
14
18
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -23,7 +27,9 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
23
27
 
24
28
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
29
 
26
- var _react = _interopRequireDefault(require("react"));
30
+ var _react = _interopRequireWildcard(require("react"));
31
+
32
+ var _giveKudos = require("@atlaskit/give-kudos");
27
33
 
28
34
  var _analytics = require("../../internal/analytics");
29
35
 
@@ -37,6 +43,10 @@ var _ProfileCard = _interopRequireDefault(require("./ProfileCard"));
37
43
 
38
44
  var _UserLoadingState = _interopRequireDefault(require("./UserLoadingState"));
39
45
 
46
+ 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); }
47
+
48
+ 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; }
49
+
40
50
  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; }
41
51
 
42
52
  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; }
@@ -67,7 +77,9 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
67
77
  hasError: false,
68
78
  error: null,
69
79
  data: null,
70
- reportingLinesData: undefined
80
+ reportingLinesData: undefined,
81
+ isKudosEnabled: false,
82
+ kudosDrawerOpen: false
71
83
  });
72
84
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "callAnalytics", function (id) {
73
85
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -93,9 +105,11 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
93
105
  hasError: false,
94
106
  data: null
95
107
  }, function () {
96
- var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId, userId), _this.props.resourceClient.getReportingLines(userId)]);
108
+ var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId, userId), _this.props.resourceClient.getReportingLines(userId), _this.props.resourceClient.shouldShowGiveKudos()]);
97
109
  requests.then(function (res) {
98
- return _this.handleClientSuccess(res[0], res[1]);
110
+ var _this2;
111
+
112
+ return (_this2 = _this).handleClientSuccess.apply(_this2, (0, _toConsumableArray2.default)(res));
99
113
  }, function (err) {
100
114
  return _this.handleClientError(err);
101
115
  }).catch(function (err) {
@@ -106,6 +120,16 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
106
120
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "filterActions", function () {
107
121
  return (0, _filterActions.default)(_this.props.actions, _this.state.data);
108
122
  });
123
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "openKudosDrawer", function () {
124
+ _this.setState({
125
+ kudosDrawerOpen: true
126
+ });
127
+ });
128
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "closeKudosDrawer", function () {
129
+ _this.setState({
130
+ kudosDrawerOpen: false
131
+ });
132
+ });
109
133
  return _this;
110
134
  }
111
135
 
@@ -141,7 +165,7 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
141
165
  }
142
166
  }, {
143
167
  key: "handleClientSuccess",
144
- value: function handleClientSuccess(profileData, reportingLinesData) {
168
+ value: function handleClientSuccess(profileData, reportingLinesData, shouldShowGiveKudos) {
145
169
  if (!this._isMounted) {
146
170
  return;
147
171
  }
@@ -150,7 +174,8 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
150
174
  isLoading: false,
151
175
  hasError: false,
152
176
  data: profileData,
153
- reportingLinesData: reportingLinesData
177
+ reportingLinesData: reportingLinesData,
178
+ isKudosEnabled: shouldShowGiveKudos
154
179
  });
155
180
  }
156
181
  }, {
@@ -174,10 +199,14 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
174
199
  hasError = _this$state.hasError,
175
200
  error = _this$state.error,
176
201
  data = _this$state.data,
177
- reportingLinesData = _this$state.reportingLinesData;
202
+ reportingLinesData = _this$state.reportingLinesData,
203
+ isKudosEnabled = _this$state.isKudosEnabled;
178
204
  var _this$props3 = this.props,
179
205
  analytics = _this$props3.analytics,
180
- onReportingLinesClick = _this$props3.onReportingLinesClick;
206
+ onReportingLinesClick = _this$props3.onReportingLinesClick,
207
+ cloudId = _this$props3.cloudId,
208
+ userId = _this$props3.userId,
209
+ addFlag = _this$props3.addFlag;
181
210
  var isFetchingOrNotStartToFetchYet = isLoading === true || isLoading === undefined;
182
211
 
183
212
  if (isFetchingOrNotStartToFetchYet) {
@@ -189,18 +218,39 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
189
218
  }));
190
219
  }
191
220
 
192
- var newProps = _objectSpread({
221
+ var newProps = _objectSpread(_objectSpread({
193
222
  hasError: hasError,
194
223
  errorType: error,
195
224
  clientFetchProfile: this.clientFetchProfile,
196
225
  analytics: analytics,
197
226
  reportingLines: reportingLinesData,
198
- onReportingLinesClick: onReportingLinesClick
199
- }, data);
227
+ onReportingLinesClick: onReportingLinesClick,
228
+ cloudId: cloudId,
229
+ userId: userId,
230
+ addFlag: addFlag
231
+ }, data), {}, {
232
+ isKudosEnabled: isKudosEnabled,
233
+ teamCentralBaseUrl: this.props.resourceClient.getTeamCentralBaseUrl(),
234
+ openKudosDrawer: this.openKudosDrawer
235
+ });
200
236
 
201
- return /*#__PURE__*/_react.default.createElement(_Card.CardWrapper, null, /*#__PURE__*/_react.default.createElement(_ProfileCard.default, (0, _extends2.default)({}, newProps, {
237
+ return /*#__PURE__*/_react.default.createElement(_Card.CardWrapper, null, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, isKudosEnabled && /*#__PURE__*/_react.default.createElement(_react.Suspense, {
238
+ fallback: null
239
+ }, /*#__PURE__*/_react.default.createElement(_giveKudos.GiveKudosLauncherLazy, {
240
+ isOpen: this.state.kudosDrawerOpen,
241
+ recipient: {
242
+ type: _giveKudos.KudosType.INDIVIDUAL,
243
+ recipientId: this.props.userId
244
+ },
245
+ analytics: this.props.analytics,
246
+ analyticsSource: "profile-card",
247
+ teamCentralBaseUrl: newProps.teamCentralBaseUrl,
248
+ cloudId: this.props.cloudId,
249
+ addFlag: this.props.addFlag,
250
+ onClose: this.closeKudosDrawer
251
+ })), /*#__PURE__*/_react.default.createElement(_ProfileCard.default, (0, _extends2.default)({}, newProps, {
202
252
  actions: this.filterActions()
203
- })));
253
+ }))));
204
254
  }
205
255
  }]);
206
256
  return ProfileCardResourced;
@@ -13,6 +13,8 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
13
13
 
14
14
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
15
 
16
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
+
16
18
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
19
 
18
20
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -29,6 +31,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
29
31
 
30
32
  var _react = _interopRequireWildcard(require("react"));
31
33
 
34
+ var _giveKudos = require("@atlaskit/give-kudos");
35
+
32
36
  var _popup = _interopRequireDefault(require("@atlaskit/popup"));
33
37
 
34
38
  var _constants = require("@atlaskit/theme/constants");
@@ -123,7 +127,10 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
123
127
  hasError: false,
124
128
  error: null,
125
129
  data: null,
126
- reportingLinesData: undefined
130
+ reportingLinesData: undefined,
131
+ shouldShowGiveKudos: false,
132
+ teamCentralBaseUrl: undefined,
133
+ kudosDrawerOpen: false
127
134
  });
128
135
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "clientFetchProfile", function () {
129
136
  var _this$props = _this.props,
@@ -136,14 +143,20 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
136
143
  return;
137
144
  }
138
145
 
146
+ _this.setState({
147
+ teamCentralBaseUrl: _this.props.resourceClient.getTeamCentralBaseUrl()
148
+ });
149
+
139
150
  _this.setState({
140
151
  isLoading: true,
141
152
  hasError: false,
142
153
  data: null
143
154
  }, function () {
144
- var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId || '', userId), _this.props.resourceClient.getReportingLines(userId)]);
155
+ var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId || '', userId), _this.props.resourceClient.getReportingLines(userId), _this.props.resourceClient.shouldShowGiveKudos()]);
145
156
  requests.then(function (res) {
146
- return _this.handleClientSuccess(res[0], res[1]);
157
+ var _this2;
158
+
159
+ return (_this2 = _this).handleClientSuccess.apply(_this2, (0, _toConsumableArray2.default)(res));
147
160
  }, function (err) {
148
161
  return _this.handleClientError(err);
149
162
  }).catch(function (err) {
@@ -151,6 +164,18 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
151
164
  });
152
165
  });
153
166
  });
167
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "openKudosDrawer", function () {
168
+ _this.hideProfilecard();
169
+
170
+ _this.setState({
171
+ kudosDrawerOpen: true
172
+ });
173
+ });
174
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "closeKudosDrawer", function () {
175
+ _this.setState({
176
+ kudosDrawerOpen: false
177
+ });
178
+ });
154
179
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderCard", function () {
155
180
  var isLoading = _this.state.isLoading;
156
181
 
@@ -192,7 +217,7 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
192
217
  }
193
218
  }, {
194
219
  key: "handleClientSuccess",
195
- value: function handleClientSuccess(profileData, reportingLinesData) {
220
+ value: function handleClientSuccess(profileData, reportingLinesData, shouldShowGiveKudos) {
196
221
  if (!this._isMounted) {
197
222
  return;
198
223
  }
@@ -201,7 +226,8 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
201
226
  isLoading: false,
202
227
  hasError: false,
203
228
  data: profileData,
204
- reportingLinesData: reportingLinesData
229
+ reportingLinesData: reportingLinesData,
230
+ shouldShowGiveKudos: shouldShowGiveKudos
205
231
  });
206
232
  }
207
233
  }, {
@@ -225,12 +251,20 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
225
251
  }, {
226
252
  key: "renderProfileCard",
227
253
  value: function renderProfileCard() {
254
+ var _this$state$data;
255
+
228
256
  var newProps = _objectSpread(_objectSpread({
257
+ userId: this.props.userId,
258
+ isCurrentUser: (_this$state$data = this.state.data) === null || _this$state$data === void 0 ? void 0 : _this$state$data.isCurrentUser,
229
259
  clientFetchProfile: this.clientFetchProfile,
230
260
  analytics: this.props.analytics
231
261
  }, this.state.data), {}, {
232
262
  reportingLines: this.state.reportingLinesData,
233
- onReportingLinesClick: this.props.onReportingLinesClick
263
+ onReportingLinesClick: this.props.onReportingLinesClick,
264
+ isKudosEnabled: this.state.shouldShowGiveKudos,
265
+ teamCentralBaseUrl: this.state.teamCentralBaseUrl,
266
+ cloudId: this.props.cloudId,
267
+ openKudosDrawer: this.openKudosDrawer
234
268
  });
235
269
 
236
270
  var wrapperProps = this.props.trigger === 'hover' ? {
@@ -249,9 +283,9 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
249
283
  }, {
250
284
  key: "renderWithTrigger",
251
285
  value: function renderWithTrigger() {
252
- var _this2 = this;
286
+ var _this3 = this;
253
287
 
254
- return /*#__PURE__*/_react.default.createElement(_popup.default, {
288
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_popup.default, {
255
289
  isOpen: !!this.state.visible,
256
290
  onClose: this.hideProfilecard,
257
291
  placement: this.props.position,
@@ -259,14 +293,28 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
259
293
  trigger: function trigger(triggerProps) {
260
294
  var ref = triggerProps.ref,
261
295
  innerProps = (0, _objectWithoutProperties2.default)(triggerProps, _excluded);
262
- return /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({}, innerProps, _this2.containerListeners, {
296
+ return /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({}, innerProps, _this3.containerListeners, {
263
297
  ref: ref,
264
- "data-testid": _this2.props.testId
265
- }), _this2.props.children);
298
+ "data-testid": _this3.props.testId
299
+ }), _this3.props.children);
266
300
  },
267
301
  zIndex: _constants.layers.modal(),
268
302
  shouldUseCaptureOnOutsideClick: true
269
- });
303
+ }), this.state.shouldShowGiveKudos && /*#__PURE__*/_react.default.createElement(_react.Suspense, {
304
+ fallback: null
305
+ }, /*#__PURE__*/_react.default.createElement(_giveKudos.GiveKudosLauncherLazy, {
306
+ isOpen: this.state.kudosDrawerOpen,
307
+ recipient: {
308
+ type: _giveKudos.KudosType.INDIVIDUAL,
309
+ recipientId: this.props.userId
310
+ },
311
+ analytics: this.props.analytics,
312
+ analyticsSource: "profile-card",
313
+ teamCentralBaseUrl: this.state.teamCentralBaseUrl,
314
+ cloudId: this.props.cloudId,
315
+ addFlag: this.props.addFlag,
316
+ onClose: this.closeKudosDrawer
317
+ })));
270
318
  }
271
319
  }, {
272
320
  key: "render",
@@ -147,6 +147,11 @@ var messages = (0, _reactIntlNext.defineMessages)({
147
147
  id: 'pt.team-profile-card.directReports.heading',
148
148
  defaultMessage: 'Direct reports',
149
149
  description: "Title for a section on the profile card that show the user's direct reports"
150
+ },
151
+ giveKudosButton: {
152
+ id: 'pt.profile-card.give-kudos',
153
+ defaultMessage: 'Give kudos',
154
+ description: 'Title for the button on the profile card for a user to give a kudos'
150
155
  }
151
156
  });
152
157
  var _default = messages;
@@ -114,6 +114,11 @@ function getMockProfileClient(BaseProfileClient, modifyResponse) {
114
114
  }, timeout);
115
115
  });
116
116
  }
117
+ }, {
118
+ key: "getFlagEnabled",
119
+ value: function getFlagEnabled(featureKey) {
120
+ return Promise.resolve(true);
121
+ }
117
122
  }]);
118
123
  return MockTeamCentralClient;
119
124
  }(_TeamCentralCardClient.default);
@@ -43,7 +43,7 @@ var ActionsFlexSpacer = _styledComponents.default.div(_templateObject4 || (_temp
43
43
 
44
44
  exports.ActionsFlexSpacer = ActionsFlexSpacer;
45
45
 
46
- var ActionButtonGroup = _styledComponents.default.div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n user-select: none;\n margin: ", "px 0 0 0;\n text-align: right;\n\n button {\n margin-left: ", "px;\n\n &:first-child {\n margin-left: 0;\n }\n }\n"])), 2 * (0, _constants.gridSize)(), _constants.gridSize);
46
+ var ActionButtonGroup = _styledComponents.default.div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n user-select: none;\n margin: ", "px 0 0 0;\n text-align: right;\n\n button,\n a,\n span {\n margin-left: ", "px;\n\n &:first-child {\n margin-left: 0;\n }\n }\n"])), 2 * (0, _constants.gridSize)(), _constants.gridSize);
47
47
 
48
48
  exports.ActionButtonGroup = ActionButtonGroup;
49
49
 
@@ -56,7 +56,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
56
56
  actionSubjectId: actionSubjectId,
57
57
  attributes: _objectSpread(_objectSpread({
58
58
  packageName: "@atlaskit/profilecard",
59
- packageVersion: "16.4.7"
59
+ packageVersion: "16.6.0"
60
60
  }, attributes), {}, {
61
61
  firedAt: (0, _performance.getPageTime)()
62
62
  })