@atlaskit/profilecard 15.8.2 → 16.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +60 -0
- package/dist/cjs/client/ProfileCardClient.js +33 -0
- package/dist/cjs/client/TeamCentralCardClient.js +162 -0
- package/dist/cjs/client/UserProfileCardClient.js +1 -1
- package/dist/cjs/client/index.js +1 -1
- package/dist/cjs/components/Team/TeamProfileCard.js +5 -5
- package/dist/cjs/components/User/ProfileCard.js +26 -9
- package/dist/cjs/components/User/ProfileCardResourced.js +16 -8
- package/dist/cjs/components/User/ProfileCardTrigger.js +15 -8
- package/dist/cjs/components/User/ReportingLinesDetails.js +90 -0
- package/dist/cjs/components/User/index.js +4 -4
- package/dist/cjs/i18n/index.js +42 -42
- package/dist/cjs/index.js +23 -23
- package/dist/cjs/internal/relative-date.js +1 -1
- package/dist/cjs/messages.js +12 -2
- package/dist/cjs/mocks/mock-profile-client.js +42 -3
- package/dist/cjs/mocks/reporting-lines-data.js +28 -0
- package/dist/cjs/mocks/simple-mock-clients.js +1 -1
- package/dist/cjs/mocks/util.js +1 -1
- package/dist/cjs/styled/Card.js +1 -1
- package/dist/cjs/styled/Error.js +1 -1
- package/dist/cjs/styled/ReportingLines.js +38 -0
- package/dist/cjs/styled/TeamCard.js +1 -1
- package/dist/cjs/styled/constants.js +1 -1
- package/dist/cjs/util/analytics.js +2 -2
- package/dist/cjs/util/config.js +1 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/client/ProfileCardClient.js +25 -0
- package/dist/es2019/client/TeamCentralCardClient.js +109 -0
- package/dist/es2019/components/Team/TeamProfileCard.js +1 -1
- package/dist/es2019/components/User/ProfileCard.js +16 -4
- package/dist/es2019/components/User/ProfileCardResourced.js +13 -6
- package/dist/es2019/components/User/ProfileCardTrigger.js +12 -6
- package/dist/es2019/components/User/ReportingLinesDetails.js +71 -0
- package/dist/es2019/messages.js +11 -1
- package/dist/es2019/mocks/mock-profile-client.js +25 -0
- package/dist/es2019/mocks/reporting-lines-data.js +14 -0
- package/dist/es2019/styled/ReportingLines.js +28 -0
- package/dist/es2019/util/analytics.js +1 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/client/ProfileCardClient.js +32 -0
- package/dist/esm/client/TeamCentralCardClient.js +147 -0
- package/dist/esm/components/Team/TeamProfileCard.js +1 -1
- package/dist/esm/components/User/ProfileCard.js +20 -4
- package/dist/esm/components/User/ProfileCardResourced.js +16 -8
- package/dist/esm/components/User/ProfileCardTrigger.js +15 -8
- package/dist/esm/components/User/ReportingLinesDetails.js +73 -0
- package/dist/esm/messages.js +11 -1
- package/dist/esm/mocks/mock-profile-client.js +42 -3
- package/dist/esm/mocks/reporting-lines-data.js +16 -0
- package/dist/esm/styled/ReportingLines.js +12 -0
- package/dist/esm/util/analytics.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/client/ProfileCardClient.d.ts +4 -1
- package/dist/types/client/TeamCentralCardClient.d.ts +22 -0
- package/dist/types/components/Error/ErrorIllustration.d.ts +1 -0
- package/dist/types/components/Team/TeamLoadingState.d.ts +1 -0
- package/dist/types/components/Team/TeamProfileCard.d.ts +1 -0
- package/dist/types/components/User/ProfileCardResourced.d.ts +2 -2
- package/dist/types/components/User/ProfileCardTrigger.d.ts +2 -2
- package/dist/types/components/User/ReportingLinesDetails.d.ts +7 -0
- package/dist/types/components/User/UserLoadingState.d.ts +1 -0
- package/dist/types/messages.d.ts +10 -0
- package/dist/types/mocks/reporting-lines-data.d.ts +2 -0
- package/dist/types/styled/ReportingLines.d.ts +6 -0
- package/dist/types/types.d.ts +32 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
# @atlaskit/profilecard
|
|
2
2
|
|
|
3
|
+
## 16.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`a5c73ccaa58`](https://bitbucket.org/atlassian/atlassian-frontend/commits/a5c73ccaa58) - Added manager and direct reports section to profile hover card"
|
|
8
|
+
|
|
9
|
+
## 16.0.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`c55c736ecea`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c55c736ecea) - Patch VULN AFP-3486 AFP-3487 AFP-3488 AFP-3489
|
|
14
|
+
|
|
15
|
+
## 16.0.1
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- [`82099b76445`](https://bitbucket.org/atlassian/atlassian-frontend/commits/82099b76445) - Add optional `testId` prop to `ProfileCardTrigger` to ease testing
|
|
20
|
+
|
|
21
|
+
## 16.0.0
|
|
22
|
+
|
|
23
|
+
### Major Changes
|
|
24
|
+
|
|
25
|
+
- [`47f58da5946`](https://bitbucket.org/atlassian/atlassian-frontend/commits/47f58da5946) - ED-13322, ED-13324, ED-13326, ED-13323, ED-13204: Upgrade and support react-intl@^5.18.1 including breaking API changes, types and tests in atlassian-frontend packages
|
|
26
|
+
|
|
27
|
+
What changed: Upgraded our react-intl support from ^2.6.0 to ^5.18.1. This means editor packages now rely on consumers installing ^5.18.1, otherwise editor usage of react-intl will mismatch with actual installed react-intl APIs.
|
|
28
|
+
Why change was made: As part of a coordinated upgrade effort across AF packages, as react-intl v2 is quite dated.
|
|
29
|
+
How consumer should update their code: Ensure react-intl ^5.18.1 is installed in consuming applications.
|
|
30
|
+
|
|
31
|
+
Upgrade guide: To consume atlassian-frontend packages that use react-intl5 setup a second provider for the new version, using an npm alias
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
"react-intl": "^2.6.0",
|
|
35
|
+
"react-intl-next": "npm:react-intl@^5.18.1",
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```js
|
|
39
|
+
import { IntlProvider } from 'react-intl';
|
|
40
|
+
import { IntlProvider as IntlNextProvider } from 'react-intl-next';
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<IntlProvider
|
|
44
|
+
key={locale}
|
|
45
|
+
data-test-language={locale}
|
|
46
|
+
locale={locale}
|
|
47
|
+
defaultLocale={DEFAULT_LOCALE}
|
|
48
|
+
messages={messages}
|
|
49
|
+
>
|
|
50
|
+
<IntlNextProvider
|
|
51
|
+
key={locale}
|
|
52
|
+
data-test-language={locale}
|
|
53
|
+
locale={locale}
|
|
54
|
+
defaultLocale={DEFAULT_LOCALE}
|
|
55
|
+
messages={messages}
|
|
56
|
+
>
|
|
57
|
+
{children}
|
|
58
|
+
</IntlNextProvider>
|
|
59
|
+
</IntlProvider>
|
|
60
|
+
);
|
|
61
|
+
```
|
|
62
|
+
|
|
3
63
|
## 15.8.2
|
|
4
64
|
|
|
5
65
|
### Patch Changes
|
|
@@ -7,26 +7,38 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
|
|
10
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
13
|
|
|
12
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
15
|
|
|
16
|
+
var _TeamCentralCardClient = _interopRequireDefault(require("./TeamCentralCardClient"));
|
|
17
|
+
|
|
14
18
|
var _TeamProfileCardClient = _interopRequireDefault(require("./TeamProfileCardClient"));
|
|
15
19
|
|
|
16
20
|
var _UserProfileCardClient = _interopRequireDefault(require("./UserProfileCardClient"));
|
|
17
21
|
|
|
22
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
23
|
+
|
|
24
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
25
|
+
|
|
18
26
|
var ProfileCardClient = /*#__PURE__*/function () {
|
|
19
27
|
function ProfileCardClient(config, clients) {
|
|
20
28
|
(0, _classCallCheck2.default)(this, ProfileCardClient);
|
|
21
29
|
this.userClient = (clients === null || clients === void 0 ? void 0 : clients.userClient) || new _UserProfileCardClient.default(config);
|
|
22
30
|
this.teamClient = (clients === null || clients === void 0 ? void 0 : clients.teamClient) || new _TeamProfileCardClient.default(config);
|
|
31
|
+
this.tcClient = maybeCreateTeamCentralClient(config, clients);
|
|
23
32
|
}
|
|
24
33
|
|
|
25
34
|
(0, _createClass2.default)(ProfileCardClient, [{
|
|
26
35
|
key: "flushCache",
|
|
27
36
|
value: function flushCache() {
|
|
37
|
+
var _this$tcClient;
|
|
38
|
+
|
|
28
39
|
this.userClient.flushCache();
|
|
29
40
|
this.teamClient.flushCache();
|
|
41
|
+
(_this$tcClient = this.tcClient) === null || _this$tcClient === void 0 ? void 0 : _this$tcClient.flushCache();
|
|
30
42
|
}
|
|
31
43
|
}, {
|
|
32
44
|
key: "getProfile",
|
|
@@ -38,9 +50,30 @@ var ProfileCardClient = /*#__PURE__*/function () {
|
|
|
38
50
|
value: function getTeamProfile(teamId, orgId, analytics) {
|
|
39
51
|
return this.teamClient.getProfile(teamId, orgId, analytics);
|
|
40
52
|
}
|
|
53
|
+
}, {
|
|
54
|
+
key: "getReportingLines",
|
|
55
|
+
value: function getReportingLines(userId) {
|
|
56
|
+
var _this$tcClient2;
|
|
57
|
+
|
|
58
|
+
return ((_this$tcClient2 = this.tcClient) === null || _this$tcClient2 === void 0 ? void 0 : _this$tcClient2.getReportingLines(userId)) || Promise.resolve({
|
|
59
|
+
managers: [],
|
|
60
|
+
reports: []
|
|
61
|
+
});
|
|
62
|
+
}
|
|
41
63
|
}]);
|
|
42
64
|
return ProfileCardClient;
|
|
43
65
|
}();
|
|
44
66
|
|
|
67
|
+
function maybeCreateTeamCentralClient(config, clients) {
|
|
68
|
+
if (clients !== null && clients !== void 0 && clients.teamCentralClient) {
|
|
69
|
+
return clients.teamCentralClient;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
var teamCentralUrl = config.teamCentralUrl;
|
|
73
|
+
return teamCentralUrl ? new _TeamCentralCardClient.default(_objectSpread(_objectSpread({}, config), {}, {
|
|
74
|
+
teamCentralUrl: teamCentralUrl
|
|
75
|
+
})) : undefined;
|
|
76
|
+
}
|
|
77
|
+
|
|
45
78
|
var _default = ProfileCardClient;
|
|
46
79
|
exports.default = _default;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
+
|
|
20
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
+
|
|
22
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
+
|
|
24
|
+
var _CachingClient2 = _interopRequireDefault(require("./CachingClient"));
|
|
25
|
+
|
|
26
|
+
var _graphqlUtils = require("./graphqlUtils");
|
|
27
|
+
|
|
28
|
+
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); }; }
|
|
29
|
+
|
|
30
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
31
|
+
|
|
32
|
+
var buildReportingLinesQuery = function buildReportingLinesQuery(aaid) {
|
|
33
|
+
return {
|
|
34
|
+
query: "\n fragment ReportingLinesUserPII on UserPII {\n name\n picture\n }\n\n fragment ReportingLinesUserFragment on ReportingLinesUser {\n accountIdentifier\n identifierType\n pii {\n ...ReportingLinesUserPII\n }\n }\n\n query ReportingLines($aaid: String) {\n reportingLines(aaidOrHash: $aaid) {\n managers {\n ...ReportingLinesUserFragment\n }\n reports {\n ...ReportingLinesUserFragment\n }\n }\n }\n ",
|
|
35
|
+
variables: {
|
|
36
|
+
aaid: aaid
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
var TeamCentralCardClient = /*#__PURE__*/function (_CachingClient) {
|
|
42
|
+
(0, _inherits2.default)(TeamCentralCardClient, _CachingClient);
|
|
43
|
+
|
|
44
|
+
var _super = _createSuper(TeamCentralCardClient);
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Simple circuit breaker to avoid making unnecessary calls to Team Central on auth failures
|
|
48
|
+
* This is to handle the case where products may have provided teamCentralUrl, but the site itself
|
|
49
|
+
* doesn't actually have any TC product.
|
|
50
|
+
*
|
|
51
|
+
* There's currently no way to reset this circuit breaker, but that's fine. This is meant to
|
|
52
|
+
* catch a pretty specific edge case.
|
|
53
|
+
*/
|
|
54
|
+
function TeamCentralCardClient(options) {
|
|
55
|
+
var _this;
|
|
56
|
+
|
|
57
|
+
(0, _classCallCheck2.default)(this, TeamCentralCardClient);
|
|
58
|
+
_this = _super.call(this, options);
|
|
59
|
+
_this.options = options;
|
|
60
|
+
_this.bypassOnFailure = false;
|
|
61
|
+
return _this;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
(0, _createClass2.default)(TeamCentralCardClient, [{
|
|
65
|
+
key: "makeRequest",
|
|
66
|
+
value: function () {
|
|
67
|
+
var _makeRequest = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(userId) {
|
|
68
|
+
var query, response;
|
|
69
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
70
|
+
while (1) {
|
|
71
|
+
switch (_context.prev = _context.next) {
|
|
72
|
+
case 0:
|
|
73
|
+
if (this.options.teamCentralUrl) {
|
|
74
|
+
_context.next = 2;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
throw new Error('options.teamCentralUrl is a required parameter for retrieving Team Central data');
|
|
79
|
+
|
|
80
|
+
case 2:
|
|
81
|
+
query = buildReportingLinesQuery(userId);
|
|
82
|
+
_context.next = 5;
|
|
83
|
+
return (0, _graphqlUtils.graphqlQuery)(this.options.teamCentralUrl, query);
|
|
84
|
+
|
|
85
|
+
case 5:
|
|
86
|
+
response = _context.sent;
|
|
87
|
+
return _context.abrupt("return", response.reportingLines);
|
|
88
|
+
|
|
89
|
+
case 7:
|
|
90
|
+
case "end":
|
|
91
|
+
return _context.stop();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}, _callee, this);
|
|
95
|
+
}));
|
|
96
|
+
|
|
97
|
+
function makeRequest(_x) {
|
|
98
|
+
return _makeRequest.apply(this, arguments);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return makeRequest;
|
|
102
|
+
}()
|
|
103
|
+
}, {
|
|
104
|
+
key: "getReportingLines",
|
|
105
|
+
value: function getReportingLines(userId) {
|
|
106
|
+
var _this2 = this;
|
|
107
|
+
|
|
108
|
+
if (!userId) {
|
|
109
|
+
return Promise.reject(new Error('userId missing'));
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
var cache = this.getCachedProfile(userId);
|
|
113
|
+
|
|
114
|
+
if (cache) {
|
|
115
|
+
return Promise.resolve(cache);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
if (this.bypassOnFailure) {
|
|
119
|
+
return Promise.resolve({});
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return new Promise(function (resolve) {
|
|
123
|
+
_this2.makeRequest(userId).then(function (data) {
|
|
124
|
+
var enhancedData = {
|
|
125
|
+
managers: _this2.filterReportingLinesUser(data === null || data === void 0 ? void 0 : data.managers),
|
|
126
|
+
reports: _this2.filterReportingLinesUser(data === null || data === void 0 ? void 0 : data.reports)
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
if (_this2.cache) {
|
|
130
|
+
_this2.setCachedProfile(userId, enhancedData);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
resolve(enhancedData);
|
|
134
|
+
}).catch(function (error) {
|
|
135
|
+
if ((error === null || error === void 0 ? void 0 : error.status) === 401 || (error === null || error === void 0 ? void 0 : error.status) === 403) {
|
|
136
|
+
// Trigger circuit breaker
|
|
137
|
+
_this2.bypassOnFailure = true;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Reporting lines aren't part of the critical path of profile card.
|
|
141
|
+
* Just resolve with empty values instead of bubbling up the error.
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
resolve({});
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}, {
|
|
150
|
+
key: "filterReportingLinesUser",
|
|
151
|
+
value: function filterReportingLinesUser() {
|
|
152
|
+
var users = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
153
|
+
return users.filter(function (user) {
|
|
154
|
+
return user.identifierType === 'ATLASSIAN_ID';
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}]);
|
|
158
|
+
return TeamCentralCardClient;
|
|
159
|
+
}(_CachingClient2.default);
|
|
160
|
+
|
|
161
|
+
var _default = TeamCentralCardClient;
|
|
162
|
+
exports.default = _default;
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.
|
|
8
|
+
exports.modifyResponse = exports.default = void 0;
|
|
9
9
|
|
|
10
10
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
11
|
|
package/dist/cjs/client/index.js
CHANGED
|
@@ -25,13 +25,13 @@ Object.defineProperty(exports, "UserProfileClient", {
|
|
|
25
25
|
return _UserProfileCardClient.default;
|
|
26
26
|
}
|
|
27
27
|
});
|
|
28
|
+
exports.default = void 0;
|
|
28
29
|
Object.defineProperty(exports, "modifyResponse", {
|
|
29
30
|
enumerable: true,
|
|
30
31
|
get: function get() {
|
|
31
32
|
return _UserProfileCardClient.modifyResponse;
|
|
32
33
|
}
|
|
33
34
|
});
|
|
34
|
-
exports.default = void 0;
|
|
35
35
|
|
|
36
36
|
var _CachingClient = _interopRequireDefault(require("./CachingClient"));
|
|
37
37
|
|
|
@@ -19,7 +19,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
19
19
|
|
|
20
20
|
var _react = _interopRequireWildcard(require("react"));
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _reactIntlNext = require("react-intl-next");
|
|
23
23
|
|
|
24
24
|
var _avatarGroup = _interopRequireDefault(require("@atlaskit/avatar-group"));
|
|
25
25
|
|
|
@@ -103,7 +103,7 @@ var TeamMembers = function TeamMembers(_ref) {
|
|
|
103
103
|
|
|
104
104
|
isMoreMembersOpen.current = !isOpen;
|
|
105
105
|
}, [analytics, count]);
|
|
106
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_TeamCard.MemberCount, null, /*#__PURE__*/_react.default.createElement(
|
|
106
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_TeamCard.MemberCount, null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, message, {
|
|
107
107
|
values: {
|
|
108
108
|
count: count
|
|
109
109
|
}
|
|
@@ -256,7 +256,7 @@ var TeamProfilecardContent = function TeamProfilecardContent(_ref5) {
|
|
|
256
256
|
viewProfileLink = _ref5.viewProfileLink,
|
|
257
257
|
viewProfileOnClick = _ref5.viewProfileOnClick;
|
|
258
258
|
var allActions = [{
|
|
259
|
-
label: /*#__PURE__*/_react.default.createElement(
|
|
259
|
+
label: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.teamViewProfile),
|
|
260
260
|
link: viewProfileLink,
|
|
261
261
|
callback: viewProfileOnClick,
|
|
262
262
|
id: 'view-profile'
|
|
@@ -320,12 +320,12 @@ var ErrorMessage = function ErrorMessage(_ref6) {
|
|
|
320
320
|
}, [analytics, clientFetchProfile]);
|
|
321
321
|
return /*#__PURE__*/_react.default.createElement(_Error.ErrorWrapper, {
|
|
322
322
|
"data-testid": "team-profilecard-error"
|
|
323
|
-
}, /*#__PURE__*/_react.default.createElement(_Error2.ErrorIllustration, null), /*#__PURE__*/_react.default.createElement(_Error.TeamErrorTitle, null, /*#__PURE__*/_react.default.createElement(
|
|
323
|
+
}, /*#__PURE__*/_react.default.createElement(_Error2.ErrorIllustration, null), /*#__PURE__*/_react.default.createElement(_Error.TeamErrorTitle, null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.teamErrorTitle)), /*#__PURE__*/_react.default.createElement(_Error.TeamErrorText, null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.teamErrorText)), clientFetchProfile && /*#__PURE__*/_react.default.createElement(_TeamCard.ActionButtons, null, /*#__PURE__*/_react.default.createElement(_TeamCard.WrappedButton, null, /*#__PURE__*/_react.default.createElement(_loadingButton.default, {
|
|
324
324
|
testId: "client-fetch-profile-button",
|
|
325
325
|
shouldFitContainer: true,
|
|
326
326
|
onClick: retry,
|
|
327
327
|
isLoading: isLoading
|
|
328
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
328
|
+
}, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.teamErrorButton)))));
|
|
329
329
|
};
|
|
330
330
|
|
|
331
331
|
var TeamProfileCard = function TeamProfileCard(props) {
|
|
@@ -27,7 +27,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
27
27
|
|
|
28
28
|
var _react = _interopRequireDefault(require("react"));
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _reactIntlNext = require("react-intl-next");
|
|
31
31
|
|
|
32
32
|
var _avatar = _interopRequireDefault(require("@atlaskit/avatar"));
|
|
33
33
|
|
|
@@ -55,6 +55,8 @@ var _Error = require("../Error");
|
|
|
55
55
|
|
|
56
56
|
var _Icon = require("../Icon");
|
|
57
57
|
|
|
58
|
+
var _ReportingLinesDetails = _interopRequireDefault(require("./ReportingLinesDetails"));
|
|
59
|
+
|
|
58
60
|
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); }; }
|
|
59
61
|
|
|
60
62
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
@@ -148,6 +150,8 @@ var Profilecard = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
148
150
|
}, {
|
|
149
151
|
key: "renderCardDetailsDefault",
|
|
150
152
|
value: function renderCardDetailsDefault() {
|
|
153
|
+
var _this4 = this;
|
|
154
|
+
|
|
151
155
|
var _this$props2 = this.props,
|
|
152
156
|
meta = _this$props2.meta,
|
|
153
157
|
location = _this$props2.location,
|
|
@@ -163,7 +167,15 @@ var Profilecard = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
163
167
|
icon: "companyName"
|
|
164
168
|
}, companyName), /*#__PURE__*/_react.default.createElement(_Icon.IconLabel, {
|
|
165
169
|
icon: "location"
|
|
166
|
-
}, location)
|
|
170
|
+
}, location), /*#__PURE__*/_react.default.createElement(_ReportingLinesDetails.default, {
|
|
171
|
+
reportingLines: this.props.reportingLines,
|
|
172
|
+
reportingLinesProfileUrl: this.props.reportingLinesProfileUrl,
|
|
173
|
+
onReportingLinesClick: this.props.onReportingLinesClick,
|
|
174
|
+
analytics: this.props.analytics,
|
|
175
|
+
getDuration: function getDuration() {
|
|
176
|
+
return _this4.durationSince(_this4.timeOpen);
|
|
177
|
+
}
|
|
178
|
+
}));
|
|
167
179
|
}
|
|
168
180
|
}, {
|
|
169
181
|
key: "renderCardDetailsForDisabledAccount",
|
|
@@ -178,7 +190,7 @@ var Profilecard = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
178
190
|
}, this.getDisabledAccountName()), hasDisabledAccountLozenge && /*#__PURE__*/_react.default.createElement(_Card.LozengeWrapper, null, /*#__PURE__*/_react.default.createElement(_lozenge.default, {
|
|
179
191
|
appearance: "default",
|
|
180
192
|
isBold: true
|
|
181
|
-
}, status === 'inactive' && /*#__PURE__*/_react.default.createElement(
|
|
193
|
+
}, status === 'inactive' && /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.inactiveAccountMsg), status === 'closed' && /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.closedAccountMsg))), /*#__PURE__*/_react.default.createElement(_Card.DisabledInfo, null, this.getDisabledAccountDesc()), status === 'inactive' && /*#__PURE__*/_react.default.createElement(_Icon.IconLabel, {
|
|
182
194
|
icon: "companyName"
|
|
183
195
|
}, companyName));
|
|
184
196
|
}
|
|
@@ -193,7 +205,7 @@ var Profilecard = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
193
205
|
if (status === 'inactive') {
|
|
194
206
|
return fullName || nickname;
|
|
195
207
|
} else if (status === 'closed') {
|
|
196
|
-
return nickname || /*#__PURE__*/_react.default.createElement(
|
|
208
|
+
return nickname || /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.disabledAccountDefaultName);
|
|
197
209
|
}
|
|
198
210
|
|
|
199
211
|
return null;
|
|
@@ -216,16 +228,16 @@ var Profilecard = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
216
228
|
var secondSentence = null;
|
|
217
229
|
|
|
218
230
|
if (relativeDateKey) {
|
|
219
|
-
secondSentence = /*#__PURE__*/_react.default.createElement(
|
|
231
|
+
secondSentence = /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage // @ts-ignore
|
|
220
232
|
, _messages.default["".concat(status, "AccountDescMsgHasDate").concat(relativeDateKey)]);
|
|
221
233
|
} else {
|
|
222
234
|
secondSentence =
|
|
223
235
|
/*#__PURE__*/
|
|
224
236
|
// @ts-ignore
|
|
225
|
-
_react.default.createElement(
|
|
237
|
+
_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default["".concat(status, "AccountDescMsgNoDate")]);
|
|
226
238
|
}
|
|
227
239
|
|
|
228
|
-
return /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement(
|
|
240
|
+
return /*#__PURE__*/_react.default.createElement("p", null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.generalDescMsgForDisabledUser), ' ', secondSentence);
|
|
229
241
|
}
|
|
230
242
|
}, {
|
|
231
243
|
key: "renderFullNameAndPublicName",
|
|
@@ -284,7 +296,8 @@ var Profilecard = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
284
296
|
var _this$props8 = this.props,
|
|
285
297
|
fullName = _this$props8.fullName,
|
|
286
298
|
status = _this$props8.status,
|
|
287
|
-
withoutElevation = _this$props8.withoutElevation
|
|
299
|
+
withoutElevation = _this$props8.withoutElevation,
|
|
300
|
+
reportingLines = _this$props8.reportingLines;
|
|
288
301
|
var cardContent = null; // @FIXME do closed users have empty fullName field?
|
|
289
302
|
|
|
290
303
|
var canRender = fullName || status === 'closed';
|
|
@@ -295,10 +308,14 @@ var Profilecard = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
295
308
|
} else if (this.props.isLoading) {
|
|
296
309
|
cardContent = /*#__PURE__*/_react.default.createElement(_Card.SpinnerContainer, null, /*#__PURE__*/_react.default.createElement(_spinner.default, null));
|
|
297
310
|
} else if (canRender) {
|
|
311
|
+
var _reportingLines$manag, _reportingLines$repor;
|
|
312
|
+
|
|
298
313
|
var isDisabledUser = status === 'inactive' || status === 'closed';
|
|
299
314
|
var actions = this.renderActionsButtons();
|
|
300
315
|
this.callAnalytics(_analytics.AnalyticsName.PROFILE_CARD_LOADED, {
|
|
301
|
-
duration: this.durationSince(this.timeOpen)
|
|
316
|
+
duration: this.durationSince(this.timeOpen),
|
|
317
|
+
managersCount: (reportingLines === null || reportingLines === void 0 ? void 0 : (_reportingLines$manag = reportingLines.managers) === null || _reportingLines$manag === void 0 ? void 0 : _reportingLines$manag.length) || 0,
|
|
318
|
+
directReportsCount: (reportingLines === null || reportingLines === void 0 ? void 0 : (_reportingLines$repor = reportingLines.reports) === null || _reportingLines$repor === void 0 ? void 0 : _reportingLines$repor.length) || 0
|
|
302
319
|
});
|
|
303
320
|
cardContent = /*#__PURE__*/_react.default.createElement(_Card.CardContainer, {
|
|
304
321
|
isDisabledUser: isDisabledUser,
|
|
@@ -66,7 +66,8 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
66
66
|
isLoading: undefined,
|
|
67
67
|
hasError: false,
|
|
68
68
|
error: null,
|
|
69
|
-
data: null
|
|
69
|
+
data: null,
|
|
70
|
+
reportingLinesData: undefined
|
|
70
71
|
});
|
|
71
72
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "callAnalytics", function (id) {
|
|
72
73
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
@@ -92,8 +93,9 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
92
93
|
hasError: false,
|
|
93
94
|
data: null
|
|
94
95
|
}, function () {
|
|
95
|
-
_this.props.resourceClient.getProfile(cloudId, userId).
|
|
96
|
-
|
|
96
|
+
var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId, userId), _this.props.resourceClient.getReportingLines(userId)]);
|
|
97
|
+
requests.then(function (res) {
|
|
98
|
+
return _this.handleClientSuccess(res[0], res[1]);
|
|
97
99
|
}, function (err) {
|
|
98
100
|
return _this.handleClientError(err);
|
|
99
101
|
}).catch(function (err) {
|
|
@@ -139,7 +141,7 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
139
141
|
}
|
|
140
142
|
}, {
|
|
141
143
|
key: "handleClientSuccess",
|
|
142
|
-
value: function handleClientSuccess(
|
|
144
|
+
value: function handleClientSuccess(profileData, reportingLinesData) {
|
|
143
145
|
if (!this._isMounted) {
|
|
144
146
|
return;
|
|
145
147
|
}
|
|
@@ -147,7 +149,8 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
147
149
|
this.setState({
|
|
148
150
|
isLoading: false,
|
|
149
151
|
hasError: false,
|
|
150
|
-
data:
|
|
152
|
+
data: profileData,
|
|
153
|
+
reportingLinesData: reportingLinesData
|
|
151
154
|
});
|
|
152
155
|
}
|
|
153
156
|
}, {
|
|
@@ -170,8 +173,11 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
170
173
|
isLoading = _this$state.isLoading,
|
|
171
174
|
hasError = _this$state.hasError,
|
|
172
175
|
error = _this$state.error,
|
|
173
|
-
data = _this$state.data
|
|
174
|
-
|
|
176
|
+
data = _this$state.data,
|
|
177
|
+
reportingLinesData = _this$state.reportingLinesData;
|
|
178
|
+
var _this$props3 = this.props,
|
|
179
|
+
analytics = _this$props3.analytics,
|
|
180
|
+
onReportingLinesClick = _this$props3.onReportingLinesClick;
|
|
175
181
|
var isFetchingOrNotStartToFetchYet = isLoading === true || isLoading === undefined;
|
|
176
182
|
|
|
177
183
|
if (isFetchingOrNotStartToFetchYet) {
|
|
@@ -187,7 +193,9 @@ var ProfileCardResourced = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
187
193
|
hasError: hasError,
|
|
188
194
|
errorType: error,
|
|
189
195
|
clientFetchProfile: this.clientFetchProfile,
|
|
190
|
-
analytics: analytics
|
|
196
|
+
analytics: analytics,
|
|
197
|
+
reportingLines: reportingLinesData,
|
|
198
|
+
onReportingLinesClick: onReportingLinesClick
|
|
191
199
|
}, data);
|
|
192
200
|
|
|
193
201
|
return /*#__PURE__*/_react.default.createElement(_Card.CardWrapper, null, /*#__PURE__*/_react.default.createElement(_ProfileCard.default, (0, _extends2.default)({}, newProps, {
|
|
@@ -106,7 +106,8 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
106
106
|
isLoading: undefined,
|
|
107
107
|
hasError: false,
|
|
108
108
|
error: null,
|
|
109
|
-
data: null
|
|
109
|
+
data: null,
|
|
110
|
+
reportingLinesData: undefined
|
|
110
111
|
});
|
|
111
112
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "clientFetchProfile", function () {
|
|
112
113
|
var _this$props = _this.props,
|
|
@@ -124,8 +125,9 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
124
125
|
hasError: false,
|
|
125
126
|
data: null
|
|
126
127
|
}, function () {
|
|
127
|
-
_this.props.resourceClient.getProfile(cloudId || '', userId).
|
|
128
|
-
|
|
128
|
+
var requests = Promise.all([_this.props.resourceClient.getProfile(cloudId || '', userId), _this.props.resourceClient.getReportingLines(userId)]);
|
|
129
|
+
requests.then(function (res) {
|
|
130
|
+
return _this.handleClientSuccess(res[0], res[1]);
|
|
129
131
|
}, function (err) {
|
|
130
132
|
return _this.handleClientError(err);
|
|
131
133
|
}).catch(function (err) {
|
|
@@ -174,7 +176,7 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
174
176
|
}
|
|
175
177
|
}, {
|
|
176
178
|
key: "handleClientSuccess",
|
|
177
|
-
value: function handleClientSuccess(
|
|
179
|
+
value: function handleClientSuccess(profileData, reportingLinesData) {
|
|
178
180
|
if (!this._isMounted) {
|
|
179
181
|
return;
|
|
180
182
|
}
|
|
@@ -182,7 +184,8 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
182
184
|
this.setState({
|
|
183
185
|
isLoading: false,
|
|
184
186
|
hasError: false,
|
|
185
|
-
data:
|
|
187
|
+
data: profileData,
|
|
188
|
+
reportingLinesData: reportingLinesData
|
|
186
189
|
});
|
|
187
190
|
}
|
|
188
191
|
}, {
|
|
@@ -206,10 +209,13 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
206
209
|
}, {
|
|
207
210
|
key: "renderProfileCard",
|
|
208
211
|
value: function renderProfileCard() {
|
|
209
|
-
var newProps = _objectSpread({
|
|
212
|
+
var newProps = _objectSpread(_objectSpread({
|
|
210
213
|
clientFetchProfile: this.clientFetchProfile,
|
|
211
214
|
analytics: this.props.analytics
|
|
212
|
-
}, this.state.data)
|
|
215
|
+
}, this.state.data), {}, {
|
|
216
|
+
reportingLines: this.state.reportingLinesData,
|
|
217
|
+
onReportingLinesClick: this.props.onReportingLinesClick
|
|
218
|
+
});
|
|
213
219
|
|
|
214
220
|
var wrapperProps = this.props.trigger === 'hover' ? {
|
|
215
221
|
onMouseEnter: this.showProfilecard,
|
|
@@ -236,7 +242,8 @@ var ProfilecardTrigger = /*#__PURE__*/function (_React$PureComponent) {
|
|
|
236
242
|
var ref = triggerProps.ref,
|
|
237
243
|
innerProps = (0, _objectWithoutProperties2.default)(triggerProps, ["ref"]);
|
|
238
244
|
return /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({}, innerProps, _this2.containerListeners, {
|
|
239
|
-
ref: ref
|
|
245
|
+
ref: ref,
|
|
246
|
+
"data-testid": _this2.props.testId
|
|
240
247
|
}), _this2.props.children);
|
|
241
248
|
},
|
|
242
249
|
zIndex: _constants.layers.modal()
|