@atlaskit/profilecard 19.16.3 → 19.17.1

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