@atlaskit/profilecard 19.11.8 → 19.13.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.
@@ -5,353 +5,335 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = ProfilecardTrigger;
8
+ exports.default = ProfilecardTriggerSwitch;
9
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
14
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
18
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
19
  var _react = _interopRequireWildcard(require("react"));
17
- var _reactIntlNext = require("react-intl-next");
18
20
  var _analyticsNext = require("@atlaskit/analytics-next");
19
21
  var _giveKudos = require("@atlaskit/give-kudos");
22
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
20
23
  var _popup = _interopRequireDefault(require("@atlaskit/popup"));
21
24
  var _constants = require("@atlaskit/theme/constants");
22
- var _filterActions = _interopRequireDefault(require("../../internal/filterActions"));
23
- var _getLabelMessage = _interopRequireDefault(require("../../internal/getLabelMessage"));
25
+ var _filterActions2 = _interopRequireDefault(require("../../internal/filterActions"));
24
26
  var _Card = require("../../styled/Card");
25
27
  var _analytics = require("../../util/analytics");
26
28
  var _config = require("../../util/config");
27
29
  var _lazyProfileCard = require("./lazyProfileCard");
30
+ var _ProfileCardTriggerNext = _interopRequireDefault(require("./ProfileCardTriggerNext"));
28
31
  var _UserLoadingState = _interopRequireDefault(require("./UserLoadingState"));
29
- var _excluded = ["ref"],
30
- _excluded2 = ["aria-expanded", "aria-haspopup"];
32
+ var _excluded = ["ref"];
31
33
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
32
34
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
33
35
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
34
36
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
35
- function ProfilecardTrigger(_ref) {
36
- var _ref$trigger = _ref.trigger,
37
- trigger = _ref$trigger === void 0 ? 'hover' : _ref$trigger,
38
- userId = _ref.userId,
39
- cloudId = _ref.cloudId,
40
- resourceClient = _ref.resourceClient,
41
- _ref$actions = _ref.actions,
42
- actions = _ref$actions === void 0 ? [] : _ref$actions,
43
- _ref$position = _ref.position,
44
- position = _ref$position === void 0 ? 'bottom-start' : _ref$position,
45
- children = _ref.children,
46
- testId = _ref.testId,
47
- addFlag = _ref.addFlag,
48
- onReportingLinesClick = _ref.onReportingLinesClick,
49
- ariaLabel = _ref.ariaLabel,
50
- ariaLabelledBy = _ref.ariaLabelledBy,
51
- prepopulatedData = _ref.prepopulatedData,
52
- disabledAriaAttributes = _ref.disabledAriaAttributes,
53
- onVisibilityChange = _ref.onVisibilityChange;
54
- var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
55
- createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
56
- var _useIntl = (0, _reactIntlNext.useIntl)(),
57
- formatMessage = _useIntl.formatMessage;
58
- var _useState = (0, _react.useState)(false),
59
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
60
- isMounted = _useState2[0],
61
- setIsMounted = _useState2[1];
62
- var showDelay = trigger === 'click' ? 0 : _config.DELAY_MS_SHOW;
63
- var hideDelay = trigger === 'click' ? 0 : _config.DELAY_MS_HIDE;
64
- var showTimer = (0, _react.useRef)(0);
65
- var hideTimer = (0, _react.useRef)(0);
66
- var _useState3 = (0, _react.useState)(false),
67
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
68
- visible = _useState4[0],
69
- setVisible = _useState4[1];
70
- var _useState5 = (0, _react.useState)(undefined),
71
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
72
- isLoading = _useState6[0],
73
- setIsLoading = _useState6[1];
74
- var _useState7 = (0, _react.useState)(false),
75
- _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
76
- hasError = _useState8[0],
77
- setHasError = _useState8[1];
78
- var _useState9 = (0, _react.useState)(null),
79
- _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
80
- error = _useState10[0],
81
- setError = _useState10[1];
82
- var _useState11 = (0, _react.useState)(null),
83
- _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
84
- data = _useState12[0],
85
- setData = _useState12[1];
86
- var _useState13 = (0, _react.useState)(undefined),
87
- _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
88
- reportingLinesData = _useState14[0],
89
- setReportingLinesData = _useState14[1];
90
- var _useState15 = (0, _react.useState)(false),
91
- _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
92
- shouldShowGiveKudos = _useState16[0],
93
- setShouldShowGiveKudos = _useState16[1];
94
- var _useState17 = (0, _react.useState)(undefined),
95
- _useState18 = (0, _slicedToArray2.default)(_useState17, 2),
96
- teamCentralBaseUrl = _useState18[0],
97
- setTeamCentralBaseUrl = _useState18[1];
98
- var _useState19 = (0, _react.useState)(false),
99
- _useState20 = (0, _slicedToArray2.default)(_useState19, 2),
100
- kudosDrawerOpen = _useState20[0],
101
- setKudosDrawerOpen = _useState20[1];
102
- var _useState21 = (0, _react.useState)(false),
103
- _useState22 = (0, _slicedToArray2.default)(_useState21, 2),
104
- isTriggeredUsingKeyboard = _useState22[0],
105
- setTriggeredUsingKeyboard = _useState22[1];
106
- var triggerRef = (0, _react.useRef)(null);
107
- (0, _react.useEffect)(function () {
108
- setIsMounted(true);
109
- return function () {
110
- setIsMounted(false);
111
- clearTimeout(showTimer.current);
112
- clearTimeout(hideTimer.current);
113
- };
114
- // eslint-disable-next-line react-hooks/exhaustive-deps
115
- }, []);
116
- (0, _react.useEffect)(function () {
117
- // Reset state when the userId changes
118
- setIsLoading(undefined);
119
- setHasError(false);
120
- setError(null);
121
- setData(null);
122
- setReportingLinesData(undefined);
123
- setShouldShowGiveKudos(false);
124
- setTeamCentralBaseUrl(undefined);
125
- }, [userId]);
126
- var fireAnalytics = (0, _react.useCallback)(function (payload) {
127
- // Don't fire any analytics if the component is unmounted
128
- if (!isMounted) {
129
- return;
130
- }
131
- (0, _analytics.fireEvent)(createAnalyticsEvent, payload);
132
- }, [createAnalyticsEvent, isMounted]);
133
- var hideProfilecard = (0, _react.useCallback)(function () {
134
- clearTimeout(showTimer.current);
135
- clearTimeout(hideTimer.current);
136
- if (!isTriggeredUsingKeyboard) {
137
- hideTimer.current = window.setTimeout(function () {
138
- setVisible(false);
139
- onVisibilityChange && onVisibilityChange(false);
140
- }, hideDelay);
141
- }
142
- }, [hideDelay, isTriggeredUsingKeyboard, onVisibilityChange]);
143
- var handleKeyboardClose = (0, _react.useCallback)(function (event) {
144
- if (event.key && event.key !== 'Escape') {
145
- return;
37
+ 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); }; }
38
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
39
+ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
40
+ (0, _inherits2.default)(ProfilecardTrigger, _React$PureComponent);
41
+ var _super = _createSuper(ProfilecardTrigger);
42
+ function ProfilecardTrigger() {
43
+ var _this;
44
+ (0, _classCallCheck2.default)(this, ProfilecardTrigger);
45
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
46
+ args[_key] = arguments[_key];
146
47
  }
147
- if (triggerRef.current) {
148
- triggerRef.current.focus();
48
+ _this = _super.call.apply(_super, [this].concat(args));
49
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_isMounted", false);
50
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "showDelay", _this.props.trigger === 'click' ? 0 : _config.DELAY_MS_SHOW);
51
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hideDelay", _this.props.trigger === 'click' ? 0 : _config.DELAY_MS_HIDE);
52
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "showTimer", 0);
53
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hideTimer", 0);
54
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fireAnalytics", function (payload) {
55
+ // Don't fire any analytics if the component is unmounted
56
+ if (!_this._isMounted) {
57
+ return;
58
+ }
59
+ if (_this.props.createAnalyticsEvent) {
60
+ (0, _analytics.fireEvent)(_this.props.createAnalyticsEvent, payload);
61
+ }
62
+ });
63
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hideProfilecard", function () {
64
+ clearTimeout(_this.showTimer);
65
+ clearTimeout(_this.hideTimer);
66
+ _this.hideTimer = window.setTimeout(function () {
67
+ _this.setState({
68
+ visible: false
69
+ });
70
+ }, _this.hideDelay);
71
+ });
72
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "showProfilecard", function () {
73
+ clearTimeout(_this.hideTimer);
74
+ clearTimeout(_this.showTimer);
75
+ _this.showTimer = window.setTimeout(function () {
76
+ if (!_this.state.visible) {
77
+ _this.clientFetchProfile();
78
+ _this.setState({
79
+ visible: true
80
+ });
81
+ }
82
+ }, _this.showDelay);
83
+ });
84
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onClick", function (event) {
85
+ // If the user clicks on the trigger then we don't want that click event to
86
+ // propagate out to parent containers. For example when clicking a mention
87
+ // lozenge in an inline-edit.
88
+ event.stopPropagation();
89
+ _this.showProfilecard();
90
+ if (!_this.state.visible) {
91
+ _this.fireAnalytics((0, _analytics.cardTriggered)('user', 'click'));
92
+ }
93
+ });
94
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMouseEnter", function () {
95
+ _this.showProfilecard();
96
+ if (!_this.state.visible) {
97
+ _this.fireAnalytics((0, _analytics.cardTriggered)('user', 'hover'));
98
+ }
99
+ });
100
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onKeyPress", function (event) {
101
+ if (event.key === 'Enter' || event.key === ' ') {
102
+ event.preventDefault();
103
+ _this.showProfilecard();
104
+ if (!_this.state.visible) {
105
+ _this.fireAnalytics((0, _analytics.cardTriggered)('user', 'click'));
106
+ }
107
+ }
108
+ });
109
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onFocus", function () {
110
+ _this.showProfilecard();
111
+ });
112
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "containerListeners", _this.props.trigger === 'hover' ? {
113
+ onMouseEnter: _this.onMouseEnter,
114
+ onMouseLeave: _this.hideProfilecard,
115
+ onBlur: _this.hideProfilecard,
116
+ onKeyPress: _this.onKeyPress
117
+ } : {
118
+ onClick: _this.onClick,
119
+ onKeyPress: _this.onKeyPress
120
+ });
121
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "layerListeners", {
122
+ handleClickOutside: _this.hideProfilecard,
123
+ handleEscapeKeydown: _this.hideProfilecard
124
+ });
125
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
126
+ visible: false,
127
+ isLoading: undefined,
128
+ hasError: false,
129
+ error: null,
130
+ data: null,
131
+ reportingLinesData: undefined,
132
+ shouldShowGiveKudos: false,
133
+ teamCentralBaseUrl: undefined,
134
+ kudosDrawerOpen: false
135
+ });
136
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "clientFetchProfile", function () {
137
+ var _this$props = _this.props,
138
+ cloudId = _this$props.cloudId,
139
+ userId = _this$props.userId;
140
+ var isLoading = _this.state.isLoading;
141
+ if (isLoading === true) {
142
+ // don't fetch data when fetching is in process
143
+ return;
144
+ }
145
+ _this.setState({
146
+ teamCentralBaseUrl: _this.props.resourceClient.getTeamCentralBaseUrl()
147
+ });
148
+ _this.setState({
149
+ isLoading: true,
150
+ hasError: false,
151
+ data: null
152
+ }, function () {
153
+ var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId || '', userId, _this.fireAnalytics), _this.props.resourceClient.getReportingLines(userId), _this.props.resourceClient.shouldShowGiveKudos()]);
154
+ requests.then(function (res) {
155
+ var _this2;
156
+ return (_this2 = _this).handleClientSuccess.apply(_this2, (0, _toConsumableArray2.default)(res));
157
+ }, function (err) {
158
+ return _this.handleClientError(err);
159
+ }).catch(function (err) {
160
+ return _this.handleClientError(err);
161
+ });
162
+ });
163
+ });
164
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "openKudosDrawer", function () {
165
+ _this.hideProfilecard();
166
+ _this.setState({
167
+ kudosDrawerOpen: true
168
+ });
169
+ });
170
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "closeKudosDrawer", function () {
171
+ _this.setState({
172
+ kudosDrawerOpen: false
173
+ });
174
+ });
175
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderCard", function () {
176
+ var isLoading = _this.state.isLoading;
177
+ if (isLoading === true || isLoading === undefined) {
178
+ return /*#__PURE__*/_react.default.createElement(_Card.CardWrapper, null, /*#__PURE__*/_react.default.createElement(_UserLoadingState.default, {
179
+ fireAnalytics: _this.fireAnalytics
180
+ }));
181
+ } else {
182
+ return _this.renderProfileCard();
183
+ }
184
+ });
185
+ return _this;
186
+ }
187
+ (0, _createClass2.default)(ProfilecardTrigger, [{
188
+ key: "componentDidMount",
189
+ value: function componentDidMount() {
190
+ this._isMounted = true;
149
191
  }
150
- setTriggeredUsingKeyboard(false);
151
- setVisible(false);
152
- onVisibilityChange && onVisibilityChange(false);
153
- }, [setTriggeredUsingKeyboard, setVisible, onVisibilityChange]);
154
- var handleClientSuccess = (0, _react.useCallback)(function (profileData, reportingLinesData, shouldShowGiveKudos) {
155
- if (!isMounted) {
156
- return;
192
+ }, {
193
+ key: "componentDidUpdate",
194
+ value: function componentDidUpdate(prevProps) {
195
+ var _this$props2 = this.props,
196
+ userId = _this$props2.userId,
197
+ cloudId = _this$props2.cloudId,
198
+ resourceClient = _this$props2.resourceClient;
199
+ var visible = this.state.visible;
200
+
201
+ // just re-fetching data when the card opens
202
+ if (visible && (userId !== prevProps.userId || cloudId !== prevProps.cloudId || resourceClient !== prevProps.resourceClient)) {
203
+ this.setState({
204
+ isLoading: undefined
205
+ }, this.clientFetchProfile);
206
+ }
157
207
  }
158
- setIsLoading(false);
159
- setHasError(false);
160
- setData(profileData);
161
- setReportingLinesData(reportingLinesData);
162
- setShouldShowGiveKudos(shouldShowGiveKudos);
163
- }, [isMounted, setHasError, setIsLoading, setData, setReportingLinesData, setShouldShowGiveKudos]);
164
- var handleClientError = (0, _react.useCallback)(function (err) {
165
- if (!isMounted) {
166
- return;
208
+ }, {
209
+ key: "componentWillUnmount",
210
+ value: function componentWillUnmount() {
211
+ this._isMounted = false;
212
+ clearTimeout(this.showTimer);
213
+ clearTimeout(this.hideTimer);
167
214
  }
168
- setIsLoading(false);
169
- setHasError(true);
170
- setError(err);
171
- }, [isMounted, setHasError, setIsLoading, setError]);
172
- var clientFetchProfile = (0, _react.useCallback)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
173
- var requests, responses;
174
- return _regenerator.default.wrap(function _callee$(_context) {
175
- while (1) switch (_context.prev = _context.next) {
176
- case 0:
177
- if (!(isLoading === true)) {
178
- _context.next = 2;
179
- break;
180
- }
181
- return _context.abrupt("return");
182
- case 2:
183
- setTeamCentralBaseUrl(resourceClient.getTeamCentralBaseUrl());
184
- setIsLoading(true);
185
- setHasError(false);
186
- setError(null);
187
- setData(null);
188
- _context.prev = 7;
189
- requests = Promise.all([resourceClient.getProfile(cloudId || '', userId, fireAnalytics), resourceClient.getReportingLines(userId), resourceClient.shouldShowGiveKudos()]);
190
- _context.next = 11;
191
- return requests;
192
- case 11:
193
- responses = _context.sent;
194
- handleClientSuccess.apply(void 0, (0, _toConsumableArray2.default)(responses));
195
- _context.next = 18;
196
- break;
197
- case 15:
198
- _context.prev = 15;
199
- _context.t0 = _context["catch"](7);
200
- handleClientError(_context.t0);
201
- case 18:
202
- case "end":
203
- return _context.stop();
204
- }
205
- }, _callee, null, [[7, 15]]);
206
- })), [cloudId, fireAnalytics, isLoading, resourceClient, userId, handleClientSuccess, handleClientError]);
207
- var showProfilecard = (0, _react.useCallback)(function () {
208
- clearTimeout(hideTimer.current);
209
- clearTimeout(showTimer.current);
210
- showTimer.current = window.setTimeout(function () {
211
- if (!visible) {
212
- void clientFetchProfile();
213
- setVisible(true);
214
- onVisibilityChange && onVisibilityChange(true);
215
+ }, {
216
+ key: "handleClientSuccess",
217
+ value: function handleClientSuccess(profileData, reportingLinesData, shouldShowGiveKudos) {
218
+ if (!this._isMounted) {
219
+ return;
215
220
  }
216
- }, showDelay);
217
- }, [showDelay, visible, clientFetchProfile, onVisibilityChange]);
218
- var onClick = (0, _react.useCallback)(function (event) {
219
- // If the user clicks on the trigger then we don't want that click event to
220
- // propagate out to parent containers. For example when clicking a mention
221
- // lozenge in an inline-edit.
222
- event.stopPropagation();
223
- showProfilecard();
224
- if (!visible) {
225
- fireAnalytics((0, _analytics.cardTriggered)('user', 'click'));
221
+ this.setState({
222
+ isLoading: false,
223
+ hasError: false,
224
+ data: profileData,
225
+ reportingLinesData: reportingLinesData,
226
+ shouldShowGiveKudos: shouldShowGiveKudos
227
+ });
226
228
  }
227
- }, [fireAnalytics, showProfilecard, visible]);
228
- var onMouseEnter = (0, _react.useCallback)(function () {
229
- showProfilecard();
230
- if (!visible) {
231
- fireAnalytics((0, _analytics.cardTriggered)('user', 'hover'));
232
- }
233
- }, [fireAnalytics, showProfilecard, visible]);
234
- var onKeyPress = (0, _react.useCallback)(function (event) {
235
- if (event.key === 'Enter' || event.key === ' ') {
236
- event.preventDefault();
237
- setTriggeredUsingKeyboard(true);
238
- showProfilecard();
239
- if (!visible) {
240
- fireAnalytics((0, _analytics.cardTriggered)('user', 'click'));
229
+ }, {
230
+ key: "handleClientError",
231
+ value: function handleClientError(err) {
232
+ if (!this._isMounted) {
233
+ return;
241
234
  }
235
+ this.setState({
236
+ isLoading: false,
237
+ hasError: true,
238
+ error: err
239
+ });
242
240
  }
243
- }, [fireAnalytics, showProfilecard, visible]);
244
- var onFocus = (0, _react.useCallback)(function () {
245
- showProfilecard();
246
- }, [showProfilecard]);
247
- var containerListeners = (0, _react.useMemo)(function () {
248
- return trigger === 'hover' ? {
249
- onMouseEnter: onMouseEnter,
250
- onMouseLeave: hideProfilecard,
251
- onBlur: hideProfilecard,
252
- onKeyPress: onKeyPress
253
- } : {
254
- onClick: onClick,
255
- onKeyPress: onKeyPress
256
- };
257
- }, [hideProfilecard, onClick, onKeyPress, onMouseEnter, trigger]);
258
- var filterActions = (0, _react.useCallback)(function () {
259
- return (0, _filterActions.default)(actions, data);
260
- }, [actions, data]);
261
- var openKudosDrawer = function openKudosDrawer() {
262
- hideProfilecard();
263
- setKudosDrawerOpen(true);
264
- };
265
- var closeKudosDrawer = function closeKudosDrawer() {
266
- setKudosDrawerOpen(false);
267
- };
268
- var showLoading = isLoading === true || isLoading === undefined;
269
- var wrapperProps = (0, _react.useMemo)(function () {
270
- return trigger === 'hover' ? {
271
- onMouseEnter: onMouseEnter,
272
- onMouseLeave: hideProfilecard,
273
- onFocus: onFocus
274
- } : {};
275
- }, [hideProfilecard, onFocus, onMouseEnter, trigger]);
276
- var profilecardProps = _objectSpread(_objectSpread({
277
- userId: userId,
278
- fullName: prepopulatedData === null || prepopulatedData === void 0 ? void 0 : prepopulatedData.fullName,
279
- isCurrentUser: data === null || data === void 0 ? void 0 : data.isCurrentUser,
280
- clientFetchProfile: clientFetchProfile
281
- }, data), {}, {
282
- reportingLines: reportingLinesData,
283
- onReportingLinesClick: onReportingLinesClick,
284
- isKudosEnabled: shouldShowGiveKudos,
285
- teamCentralBaseUrl: teamCentralBaseUrl,
286
- cloudId: cloudId,
287
- openKudosDrawer: openKudosDrawer,
288
- isTriggeredUsingKeyboard: isTriggeredUsingKeyboard,
289
- disabledAriaAttributes: disabledAriaAttributes
290
- });
291
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_popup.default, {
292
- isOpen: !!visible,
293
- onClose: function onClose(event) {
294
- hideProfilecard();
295
- handleKeyboardClose(event);
296
- },
297
- placement: position,
298
- content: function content() {
299
- return /*#__PURE__*/_react.default.createElement("div", wrapperProps, showLoading ? /*#__PURE__*/_react.default.createElement(LoadingView, {
300
- fireAnalytics: fireAnalytics
301
- }) : visible && /*#__PURE__*/_react.default.createElement(_react.Suspense, {
241
+ }, {
242
+ key: "filterActions",
243
+ value: function filterActions() {
244
+ return (0, _filterActions2.default)(this.props.actions, this.state.data);
245
+ }
246
+ }, {
247
+ key: "renderProfileCard",
248
+ value: function renderProfileCard() {
249
+ var _this$state$data;
250
+ var newProps = _objectSpread(_objectSpread({
251
+ userId: this.props.userId,
252
+ isCurrentUser: (_this$state$data = this.state.data) === null || _this$state$data === void 0 ? void 0 : _this$state$data.isCurrentUser,
253
+ clientFetchProfile: this.clientFetchProfile
254
+ }, this.state.data), {}, {
255
+ reportingLines: this.state.reportingLinesData,
256
+ onReportingLinesClick: this.props.onReportingLinesClick,
257
+ isKudosEnabled: this.state.shouldShowGiveKudos,
258
+ teamCentralBaseUrl: this.state.teamCentralBaseUrl,
259
+ cloudId: this.props.cloudId,
260
+ openKudosDrawer: this.openKudosDrawer
261
+ });
262
+ var wrapperProps = this.props.trigger === 'hover' ? {
263
+ onMouseEnter: this.onMouseEnter,
264
+ onMouseLeave: this.hideProfilecard,
265
+ onFocus: this.onFocus
266
+ } : {};
267
+ return /*#__PURE__*/_react.default.createElement("div", wrapperProps, this.state.visible && /*#__PURE__*/_react.default.createElement(_react.Suspense, {
302
268
  fallback: null
303
- }, /*#__PURE__*/_react.default.createElement(_lazyProfileCard.ProfileCardLazy, (0, _extends2.default)({}, profilecardProps, {
304
- actions: filterActions(),
305
- hasError: hasError,
306
- errorType: error,
269
+ }, /*#__PURE__*/_react.default.createElement(_lazyProfileCard.ProfileCardLazy, (0, _extends2.default)({}, newProps, {
270
+ actions: this.filterActions(),
271
+ hasError: this.state.hasError,
272
+ errorType: this.state.error,
307
273
  withoutElevation: true
308
274
  }))));
309
- },
310
- trigger: function trigger(triggerProps) {
311
- var callbackRef = triggerProps.ref,
312
- innerProps = (0, _objectWithoutProperties2.default)(triggerProps, _excluded);
313
- var ref = function ref(element) {
314
- triggerRef.current = element;
315
- if (typeof callbackRef === 'function') {
316
- callbackRef(element);
317
- }
318
- };
319
- var _ = innerProps['aria-expanded'],
320
- __ = innerProps['aria-haspopup'],
321
- restInnerProps = (0, _objectWithoutProperties2.default)(innerProps, _excluded2);
322
- return /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({}, disabledAriaAttributes ? restInnerProps : triggerProps, containerListeners, {
323
- ref: ref,
324
- "data-testid": testId,
325
- "aria-labelledby": ariaLabelledBy
326
- }, disabledAriaAttributes ? {} : {
327
- role: 'button',
328
- tabIndex: 0,
329
- 'aria-label': (0, _getLabelMessage.default)(ariaLabel, profilecardProps.fullName, formatMessage)
330
- }), children);
331
- },
332
- zIndex: _constants.layers.modal(),
333
- shouldUseCaptureOnOutsideClick: true,
334
- autoFocus: trigger === 'click'
335
- }), shouldShowGiveKudos && /*#__PURE__*/_react.default.createElement(_react.Suspense, {
336
- fallback: null
337
- }, /*#__PURE__*/_react.default.createElement(_giveKudos.GiveKudosLauncherLazy, {
338
- isOpen: kudosDrawerOpen,
339
- recipient: {
340
- type: _giveKudos.KudosType.INDIVIDUAL,
341
- recipientId: userId
342
- },
343
- analyticsSource: "profile-card",
344
- teamCentralBaseUrl: teamCentralBaseUrl,
345
- cloudId: cloudId,
346
- addFlag: addFlag,
347
- onClose: closeKudosDrawer
348
- })));
349
- }
350
- var LoadingView = function LoadingView(_ref3) {
351
- var fireAnalytics = _ref3.fireAnalytics;
352
- return /*#__PURE__*/_react.default.createElement(_Card.CardWrapper, {
353
- "data-testId": "profilecard.profilecardtrigger.loading"
354
- }, /*#__PURE__*/_react.default.createElement(_UserLoadingState.default, {
355
- fireAnalytics: fireAnalytics
356
- }));
357
- };
275
+ }
276
+ }, {
277
+ key: "renderWithTrigger",
278
+ value: function renderWithTrigger() {
279
+ var _this3 = this;
280
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_popup.default, {
281
+ isOpen: !!this.state.visible,
282
+ onClose: this.hideProfilecard,
283
+ placement: this.props.position,
284
+ content: this.renderCard,
285
+ trigger: function trigger(triggerProps) {
286
+ var ref = triggerProps.ref,
287
+ innerProps = (0, _objectWithoutProperties2.default)(triggerProps, _excluded);
288
+ return /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({}, innerProps, _this3.containerListeners, {
289
+ ref: ref,
290
+ "data-testid": _this3.props.testId,
291
+ role: "button",
292
+ tabIndex: 0
293
+ }), _this3.props.children);
294
+ },
295
+ zIndex: _constants.layers.modal(),
296
+ shouldUseCaptureOnOutsideClick: true,
297
+ autoFocus: this.props.trigger === 'click'
298
+ }), this.state.shouldShowGiveKudos && /*#__PURE__*/_react.default.createElement(_react.Suspense, {
299
+ fallback: null
300
+ }, /*#__PURE__*/_react.default.createElement(_giveKudos.GiveKudosLauncherLazy, {
301
+ isOpen: this.state.kudosDrawerOpen,
302
+ recipient: {
303
+ type: _giveKudos.KudosType.INDIVIDUAL,
304
+ recipientId: this.props.userId
305
+ },
306
+ analyticsSource: "profile-card",
307
+ teamCentralBaseUrl: this.state.teamCentralBaseUrl,
308
+ cloudId: this.props.cloudId,
309
+ addFlag: this.props.addFlag,
310
+ onClose: this.closeKudosDrawer
311
+ })));
312
+ }
313
+ }, {
314
+ key: "render",
315
+ value: function render() {
316
+ if (this.props.children) {
317
+ return this.renderWithTrigger();
318
+ } else {
319
+ throw new Error('Component "ProfileCardTrigger" must have "children" property');
320
+ }
321
+ }
322
+ }]);
323
+ return ProfilecardTrigger;
324
+ }(_react.default.PureComponent);
325
+ (0, _defineProperty2.default)(ProfilecardTrigger, "defaultProps", {
326
+ actions: [],
327
+ trigger: 'hover',
328
+ position: 'bottom-start'
329
+ });
330
+ var ProfilecardTriggerLegacy = (0, _analyticsNext.withAnalyticsEvents)()(ProfilecardTrigger);
331
+ function ProfilecardTriggerSwitch(props) {
332
+ return (0, _platformFeatureFlags.getBooleanFF)('platform.profile-card-trigger-next') ? /*#__PURE__*/_react.default.createElement(_ProfileCardTriggerNext.default, (0, _extends2.default)({}, props, {
333
+ onVisibilityChange: function onVisibilityChange(isVisible) {
334
+ if (props.onVisibilityChange) {
335
+ props.onVisibilityChange(isVisible);
336
+ }
337
+ }
338
+ })) : /*#__PURE__*/_react.default.createElement(ProfilecardTriggerLegacy, props);
339
+ }