@atlaskit/profilecard 23.4.0 → 23.4.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.
- package/CHANGELOG.md +8 -0
- package/dist/cjs/client/getOrgIdForCloudIdFromAGG.js +1 -1
- package/dist/cjs/client/getTeamFromAGG.js +1 -1
- package/dist/cjs/components/Team/TeamProfileCard.js +43 -4
- package/dist/cjs/components/Team/TeamProfileCardTrigger.js +30 -4
- package/dist/cjs/messages.js +5 -0
- package/dist/cjs/util/analytics.js +1 -1
- package/dist/es2019/client/getOrgIdForCloudIdFromAGG.js +1 -1
- package/dist/es2019/client/getTeamFromAGG.js +1 -1
- package/dist/es2019/components/Team/TeamProfileCard.js +41 -4
- package/dist/es2019/components/Team/TeamProfileCardTrigger.js +31 -5
- package/dist/es2019/messages.js +5 -0
- package/dist/es2019/util/analytics.js +1 -1
- package/dist/esm/client/getOrgIdForCloudIdFromAGG.js +1 -1
- package/dist/esm/client/getTeamFromAGG.js +1 -1
- package/dist/esm/components/Team/TeamProfileCard.js +43 -4
- package/dist/esm/components/Team/TeamProfileCardTrigger.js +31 -5
- package/dist/esm/messages.js +5 -0
- package/dist/esm/util/analytics.js +1 -1
- package/dist/types/components/Team/TeamProfileCardTrigger.d.ts +6 -19
- package/dist/types/messages.d.ts +5 -0
- package/dist/types/types.d.ts +12 -4
- package/dist/types-ts4.5/components/Team/TeamProfileCardTrigger.d.ts +6 -19
- package/dist/types-ts4.5/messages.d.ts +5 -0
- package/dist/types-ts4.5/types.d.ts +12 -4
- package/package.json +9 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlaskit/profilecard
|
|
2
2
|
|
|
3
|
+
## 23.4.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#128871](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/128871)
|
|
8
|
+
[`a4f35151d2de5`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a4f35151d2de5) -
|
|
9
|
+
Fix a11y issue on team profile card toggletip
|
|
10
|
+
|
|
3
11
|
## 23.4.0
|
|
4
12
|
|
|
5
13
|
### Minor Changes
|
|
@@ -11,7 +11,7 @@ var _graphqlUtils = require("./graphqlUtils");
|
|
|
11
11
|
var ORG_ID_FROM_CLOUD_ID_QUERY = "query OrgIdFromCloudId($cloudId: ID!) {\n\ttenantContexts(cloudIds: [$cloudId]) {\n\t\torgId\n\t}\n}";
|
|
12
12
|
var addHeaders = function addHeaders(headers) {
|
|
13
13
|
headers.append('atl-client-name', "@atlaskit/profilecard");
|
|
14
|
-
headers.append('atl-client-version', "23.4.
|
|
14
|
+
headers.append('atl-client-version', "23.4.1");
|
|
15
15
|
return headers;
|
|
16
16
|
};
|
|
17
17
|
function getOrgIdForCloudIdFromAGG(_x, _x2) {
|
|
@@ -66,7 +66,7 @@ var addHeaders = exports.addHeaders = function addHeaders(headers) {
|
|
|
66
66
|
headers.append('X-ExperimentalApi', 'teams-beta');
|
|
67
67
|
headers.append('X-ExperimentalApi', 'team-members-beta');
|
|
68
68
|
headers.append('atl-client-name', "@atlaskit/profilecard");
|
|
69
|
-
headers.append('atl-client-version', "23.4.
|
|
69
|
+
headers.append('atl-client-version', "23.4.1");
|
|
70
70
|
return headers;
|
|
71
71
|
};
|
|
72
72
|
function getTeamFromAGG(_x, _x2, _x3) {
|
|
@@ -12,6 +12,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
12
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _reactIntlNext = require("react-intl-next");
|
|
15
|
+
var _avatar = _interopRequireDefault(require("@atlaskit/avatar"));
|
|
15
16
|
var _avatarGroup = _interopRequireDefault(require("@atlaskit/avatar-group"));
|
|
16
17
|
var _loadingButton = _interopRequireDefault(require("@atlaskit/button/loading-button"));
|
|
17
18
|
var _new = _interopRequireWildcard(require("@atlaskit/button/new"));
|
|
@@ -61,7 +62,8 @@ var TeamMembers = function TeamMembers(_ref) {
|
|
|
61
62
|
generateUserLink = _ref.generateUserLink,
|
|
62
63
|
members = _ref.members,
|
|
63
64
|
onUserClick = _ref.onUserClick,
|
|
64
|
-
includingYou = _ref.includingYou
|
|
65
|
+
includingYou = _ref.includingYou,
|
|
66
|
+
isTriggeredByKeyboard = _ref.isTriggeredByKeyboard;
|
|
65
67
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
66
68
|
formatMessage = _useIntl.formatMessage;
|
|
67
69
|
var count = members ? members.length : 0;
|
|
@@ -70,6 +72,14 @@ var TeamMembers = function TeamMembers(_ref) {
|
|
|
70
72
|
// Use a ref to track whether this is currently open, so we can fire events
|
|
71
73
|
// iff the more section is being opened (not closed).
|
|
72
74
|
var isMoreMembersOpen = (0, _react.useRef)(false);
|
|
75
|
+
var avatarRef = (0, _react.useRef)(null);
|
|
76
|
+
var ref = function ref(element) {
|
|
77
|
+
if (isTriggeredByKeyboard) {
|
|
78
|
+
var _avatarRef$current;
|
|
79
|
+
avatarRef.current = element;
|
|
80
|
+
(_avatarRef$current = avatarRef.current) === null || _avatarRef$current === void 0 || _avatarRef$current.focus();
|
|
81
|
+
}
|
|
82
|
+
};
|
|
73
83
|
var onMoreClick = (0, _react.useCallback)(function () {
|
|
74
84
|
var isOpen = isMoreMembersOpen.current;
|
|
75
85
|
if (!isOpen) {
|
|
@@ -93,7 +103,34 @@ var TeamMembers = function TeamMembers(_ref) {
|
|
|
93
103
|
values: {
|
|
94
104
|
count: count
|
|
95
105
|
}
|
|
96
|
-
}))), members && members.length > 0 && /*#__PURE__*/_react.default.createElement(_TeamCard.AvatarSection, null, /*#__PURE__*/_react.default.createElement(_avatarGroup.default, {
|
|
106
|
+
}))), members && members.length > 0 && /*#__PURE__*/_react.default.createElement(_TeamCard.AvatarSection, null, (0, _platformFeatureFlags.fg)('enable_team_profilecard_toggletip_a11y_fix') ? /*#__PURE__*/_react.default.createElement(_avatarGroup.default, {
|
|
107
|
+
appearance: "stack",
|
|
108
|
+
data: members.map(function (member, index) {
|
|
109
|
+
var href = generateUserLink === null || generateUserLink === void 0 ? void 0 : generateUserLink(member.id);
|
|
110
|
+
var onClick = onMemberClick(onUserClick, member.id, analytics, index, !!generateUserLink);
|
|
111
|
+
return {
|
|
112
|
+
key: member.id,
|
|
113
|
+
name: member.fullName,
|
|
114
|
+
src: member.avatarUrl,
|
|
115
|
+
href: href,
|
|
116
|
+
onClick: onClick
|
|
117
|
+
};
|
|
118
|
+
}),
|
|
119
|
+
maxCount: avatarGroupMaxCount,
|
|
120
|
+
showMoreButtonProps: showMoreButtonProps,
|
|
121
|
+
testId: "profilecard-avatar-group",
|
|
122
|
+
overrides: {
|
|
123
|
+
Avatar: {
|
|
124
|
+
render: function render(Component, props, index) {
|
|
125
|
+
return index === 0 ? /*#__PURE__*/_react.default.createElement(_avatar.default, (0, _extends2.default)({
|
|
126
|
+
ref: ref
|
|
127
|
+
}, props, {
|
|
128
|
+
testId: "first-member"
|
|
129
|
+
})) : /*#__PURE__*/_react.default.createElement(Component, props);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}) : /*#__PURE__*/_react.default.createElement(_avatarGroup.default, {
|
|
97
134
|
appearance: "stack",
|
|
98
135
|
data: members.map(function (member, index) {
|
|
99
136
|
var href = generateUserLink === null || generateUserLink === void 0 ? void 0 : generateUserLink(member.id);
|
|
@@ -248,7 +285,8 @@ var TeamProfilecardContent = function TeamProfilecardContent(_ref5) {
|
|
|
248
285
|
generateUserLink = _ref5.generateUserLink,
|
|
249
286
|
onUserClick = _ref5.onUserClick,
|
|
250
287
|
viewProfileLink = _ref5.viewProfileLink,
|
|
251
|
-
viewProfileOnClick = _ref5.viewProfileOnClick
|
|
288
|
+
viewProfileOnClick = _ref5.viewProfileOnClick,
|
|
289
|
+
isTriggeredByKeyboard = _ref5.isTriggeredByKeyboard;
|
|
252
290
|
var allActions = [{
|
|
253
291
|
label: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.default.teamViewProfile),
|
|
254
292
|
link: viewProfileLink,
|
|
@@ -284,7 +322,8 @@ var TeamProfilecardContent = function TeamProfilecardContent(_ref5) {
|
|
|
284
322
|
members: team.members,
|
|
285
323
|
generateUserLink: generateUserLink,
|
|
286
324
|
includingYou: includingYou,
|
|
287
|
-
onUserClick: onUserClick
|
|
325
|
+
onUserClick: onUserClick,
|
|
326
|
+
isTriggeredByKeyboard: isTriggeredByKeyboard
|
|
288
327
|
}), team.description.trim() && /*#__PURE__*/_react.default.createElement(_TeamCard.DescriptionWrapper, null, /*#__PURE__*/_react.default.createElement(_TeamCard.Description, null, team.description)), /*#__PURE__*/_react.default.createElement(ButtonSection, {
|
|
289
328
|
actions: allActions,
|
|
290
329
|
analytics: analytics
|
|
@@ -20,6 +20,7 @@ var _analyticsNext = require("@atlaskit/analytics-next");
|
|
|
20
20
|
var _giveKudos = require("@atlaskit/give-kudos");
|
|
21
21
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
22
22
|
var _popup = _interopRequireDefault(require("@atlaskit/popup"));
|
|
23
|
+
var _primitives = require("@atlaskit/primitives");
|
|
23
24
|
var _constants = require("@atlaskit/theme/constants");
|
|
24
25
|
var _filterActions2 = _interopRequireDefault(require("../../internal/filterActions"));
|
|
25
26
|
var _messages = _interopRequireDefault(require("../../messages"));
|
|
@@ -123,8 +124,23 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
123
124
|
_this.hideProfilecard(_config.DELAY_MS_HIDE);
|
|
124
125
|
}
|
|
125
126
|
});
|
|
127
|
+
(0, _defineProperty2.default)(_this, "onKeyPress", function (event) {
|
|
128
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
129
|
+
event.preventDefault();
|
|
130
|
+
_this.setState({
|
|
131
|
+
isTriggeredByKeyboard: true
|
|
132
|
+
});
|
|
133
|
+
_this.showProfilecard(0);
|
|
134
|
+
if (!_this.state.visible) {
|
|
135
|
+
_this.fireAnalytics((0, _analytics.cardTriggered)('team', 'click'));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
});
|
|
126
139
|
(0, _defineProperty2.default)(_this, "onClose", function () {
|
|
127
140
|
_this.hideProfilecard();
|
|
141
|
+
_this.setState({
|
|
142
|
+
isTriggeredByKeyboard: false
|
|
143
|
+
});
|
|
128
144
|
});
|
|
129
145
|
(0, _defineProperty2.default)(_this, "openKudosDrawer", function () {
|
|
130
146
|
_this.hideProfilecard(_config.DELAY_MS_HIDE);
|
|
@@ -165,7 +181,8 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
165
181
|
data: null,
|
|
166
182
|
shouldShowGiveKudos: false,
|
|
167
183
|
teamCentralBaseUrl: undefined,
|
|
168
|
-
kudosDrawerOpen: false
|
|
184
|
+
kudosDrawerOpen: false,
|
|
185
|
+
isTriggeredByKeyboard: false
|
|
169
186
|
});
|
|
170
187
|
(0, _defineProperty2.default)(_this, "clientFetchProfile", function () {
|
|
171
188
|
var _this$props = _this.props,
|
|
@@ -235,7 +252,8 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
235
252
|
}, /*#__PURE__*/_react.default.createElement(_lazyTeamProfileCard.TeamProfileCardLazy, (0, _extends2.default)({}, newProps, {
|
|
236
253
|
isLoading: isLoading,
|
|
237
254
|
hasError: hasError,
|
|
238
|
-
errorType: error
|
|
255
|
+
errorType: error,
|
|
256
|
+
isTriggeredByKeyboard: _this.state.isTriggeredByKeyboard
|
|
239
257
|
}))));
|
|
240
258
|
});
|
|
241
259
|
(0, _defineProperty2.default)(_this, "renderKudosLauncher", function () {
|
|
@@ -257,10 +275,18 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
257
275
|
(0, _defineProperty2.default)(_this, "renderTrigger", function (triggerProps) {
|
|
258
276
|
var _this$props3 = _this.props,
|
|
259
277
|
children = _this$props3.children,
|
|
278
|
+
intl = _this$props3.intl,
|
|
260
279
|
triggerLinkType = _this$props3.triggerLinkType,
|
|
261
280
|
viewProfileLink = _this$props3.viewProfileLink;
|
|
262
281
|
if (triggerLinkType === 'none') {
|
|
263
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, _this.renderKudosLauncher(), /*#__PURE__*/_react.default.createElement(
|
|
282
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, _this.renderKudosLauncher(), (0, _platformFeatureFlags.fg)('enable_team_profilecard_toggletip_a11y_fix') ? /*#__PURE__*/_react.default.createElement(_primitives.Box, (0, _extends2.default)({
|
|
283
|
+
as: "span",
|
|
284
|
+
role: "button",
|
|
285
|
+
testId: "team-profilecard-trigger-wrapper",
|
|
286
|
+
tabIndex: 0,
|
|
287
|
+
"aria-label": intl.formatMessage(_messages.default.teamProfileCardAriaLabel),
|
|
288
|
+
onKeyUp: _this.onKeyPress
|
|
289
|
+
}, triggerProps, _this.triggerListeners), children) : /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({
|
|
264
290
|
"data-testid": "team-profilecard-trigger-wrapper"
|
|
265
291
|
}, triggerProps, _this.triggerListeners), children));
|
|
266
292
|
}
|
|
@@ -393,4 +419,4 @@ var TeamProfileCardTriggerInternal = exports.TeamProfileCardTriggerInternal = /*
|
|
|
393
419
|
triggerLinkType: 'link',
|
|
394
420
|
shouldRenderToParent: true
|
|
395
421
|
});
|
|
396
|
-
var _default = exports.default = (0, _analyticsNext.withAnalyticsEvents)()(TeamProfileCardTriggerInternal);
|
|
422
|
+
var _default = exports.default = (0, _analyticsNext.withAnalyticsEvents)()((0, _reactIntlNext.injectIntl)(TeamProfileCardTriggerInternal));
|
package/dist/cjs/messages.js
CHANGED
|
@@ -156,6 +156,11 @@ var messages = (0, _reactIntlNext.defineMessages)({
|
|
|
156
156
|
defaultMessage: 'Direct reports',
|
|
157
157
|
description: "Title for a section on the profile card that show the user's direct reports"
|
|
158
158
|
},
|
|
159
|
+
teamProfileCardAriaLabel: {
|
|
160
|
+
id: 'pt.team-profile-card.aria-label',
|
|
161
|
+
defaultMessage: 'More information about this team',
|
|
162
|
+
description: 'Aria label for the team profile card'
|
|
163
|
+
},
|
|
159
164
|
giveKudosButton: {
|
|
160
165
|
id: 'pt.profile-card.give-kudos',
|
|
161
166
|
defaultMessage: 'Give kudos',
|
|
@@ -45,7 +45,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
|
|
|
45
45
|
actionSubjectId: actionSubjectId,
|
|
46
46
|
attributes: _objectSpread(_objectSpread({
|
|
47
47
|
packageName: "@atlaskit/profilecard",
|
|
48
|
-
packageVersion: "23.4.
|
|
48
|
+
packageVersion: "23.4.1"
|
|
49
49
|
}, attributes), {}, {
|
|
50
50
|
firedAt: Math.round((0, _performance.getPageTime)())
|
|
51
51
|
})
|
|
@@ -6,7 +6,7 @@ const ORG_ID_FROM_CLOUD_ID_QUERY = `query OrgIdFromCloudId($cloudId: ID!) {
|
|
|
6
6
|
}`;
|
|
7
7
|
const addHeaders = headers => {
|
|
8
8
|
headers.append('atl-client-name', "@atlaskit/profilecard");
|
|
9
|
-
headers.append('atl-client-version', "23.4.
|
|
9
|
+
headers.append('atl-client-version', "23.4.1");
|
|
10
10
|
return headers;
|
|
11
11
|
};
|
|
12
12
|
export async function getOrgIdForCloudIdFromAGG(url, cloudId) {
|
|
@@ -75,7 +75,7 @@ export const addHeaders = headers => {
|
|
|
75
75
|
headers.append('X-ExperimentalApi', 'teams-beta');
|
|
76
76
|
headers.append('X-ExperimentalApi', 'team-members-beta');
|
|
77
77
|
headers.append('atl-client-name', "@atlaskit/profilecard");
|
|
78
|
-
headers.append('atl-client-version', "23.4.
|
|
78
|
+
headers.append('atl-client-version', "23.4.1");
|
|
79
79
|
return headers;
|
|
80
80
|
};
|
|
81
81
|
export async function getTeamFromAGG(url, teamId, siteId) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { FormattedMessage, useIntl } from 'react-intl-next';
|
|
4
|
+
import Avatar from '@atlaskit/avatar';
|
|
4
5
|
import AvatarGroup from '@atlaskit/avatar-group';
|
|
5
6
|
import LoadingButton from '@atlaskit/button/loading-button';
|
|
6
7
|
import Button, { IconButton, LinkButton } from '@atlaskit/button/new';
|
|
@@ -44,7 +45,8 @@ const TeamMembers = ({
|
|
|
44
45
|
generateUserLink,
|
|
45
46
|
members,
|
|
46
47
|
onUserClick,
|
|
47
|
-
includingYou
|
|
48
|
+
includingYou,
|
|
49
|
+
isTriggeredByKeyboard
|
|
48
50
|
}) => {
|
|
49
51
|
const {
|
|
50
52
|
formatMessage
|
|
@@ -55,6 +57,14 @@ const TeamMembers = ({
|
|
|
55
57
|
// Use a ref to track whether this is currently open, so we can fire events
|
|
56
58
|
// iff the more section is being opened (not closed).
|
|
57
59
|
const isMoreMembersOpen = useRef(false);
|
|
60
|
+
const avatarRef = useRef(null);
|
|
61
|
+
const ref = element => {
|
|
62
|
+
if (isTriggeredByKeyboard) {
|
|
63
|
+
var _avatarRef$current;
|
|
64
|
+
avatarRef.current = element;
|
|
65
|
+
(_avatarRef$current = avatarRef.current) === null || _avatarRef$current === void 0 ? void 0 : _avatarRef$current.focus();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
58
68
|
const onMoreClick = useCallback(() => {
|
|
59
69
|
const {
|
|
60
70
|
current: isOpen
|
|
@@ -79,7 +89,32 @@ const TeamMembers = ({
|
|
|
79
89
|
values: {
|
|
80
90
|
count
|
|
81
91
|
}
|
|
82
|
-
}))), members && members.length > 0 && /*#__PURE__*/React.createElement(AvatarSection, null, /*#__PURE__*/React.createElement(AvatarGroup, {
|
|
92
|
+
}))), members && members.length > 0 && /*#__PURE__*/React.createElement(AvatarSection, null, fg('enable_team_profilecard_toggletip_a11y_fix') ? /*#__PURE__*/React.createElement(AvatarGroup, {
|
|
93
|
+
appearance: "stack",
|
|
94
|
+
data: members.map((member, index) => {
|
|
95
|
+
const href = generateUserLink === null || generateUserLink === void 0 ? void 0 : generateUserLink(member.id);
|
|
96
|
+
const onClick = onMemberClick(onUserClick, member.id, analytics, index, !!generateUserLink);
|
|
97
|
+
return {
|
|
98
|
+
key: member.id,
|
|
99
|
+
name: member.fullName,
|
|
100
|
+
src: member.avatarUrl,
|
|
101
|
+
href,
|
|
102
|
+
onClick
|
|
103
|
+
};
|
|
104
|
+
}),
|
|
105
|
+
maxCount: avatarGroupMaxCount,
|
|
106
|
+
showMoreButtonProps: showMoreButtonProps,
|
|
107
|
+
testId: "profilecard-avatar-group",
|
|
108
|
+
overrides: {
|
|
109
|
+
Avatar: {
|
|
110
|
+
render: (Component, props, index) => index === 0 ? /*#__PURE__*/React.createElement(Avatar, _extends({
|
|
111
|
+
ref: ref
|
|
112
|
+
}, props, {
|
|
113
|
+
testId: "first-member"
|
|
114
|
+
})) : /*#__PURE__*/React.createElement(Component, props)
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}) : /*#__PURE__*/React.createElement(AvatarGroup, {
|
|
83
118
|
appearance: "stack",
|
|
84
119
|
data: members.map((member, index) => {
|
|
85
120
|
const href = generateUserLink === null || generateUserLink === void 0 ? void 0 : generateUserLink(member.id);
|
|
@@ -215,7 +250,8 @@ const TeamProfilecardContent = ({
|
|
|
215
250
|
generateUserLink,
|
|
216
251
|
onUserClick,
|
|
217
252
|
viewProfileLink,
|
|
218
|
-
viewProfileOnClick
|
|
253
|
+
viewProfileOnClick,
|
|
254
|
+
isTriggeredByKeyboard
|
|
219
255
|
}) => {
|
|
220
256
|
const allActions = [{
|
|
221
257
|
label: /*#__PURE__*/React.createElement(FormattedMessage, messages.teamViewProfile),
|
|
@@ -250,7 +286,8 @@ const TeamProfilecardContent = ({
|
|
|
250
286
|
members: team.members,
|
|
251
287
|
generateUserLink: generateUserLink,
|
|
252
288
|
includingYou: includingYou,
|
|
253
|
-
onUserClick: onUserClick
|
|
289
|
+
onUserClick: onUserClick,
|
|
290
|
+
isTriggeredByKeyboard: isTriggeredByKeyboard
|
|
254
291
|
}), team.description.trim() && /*#__PURE__*/React.createElement(DescriptionWrapper, null, /*#__PURE__*/React.createElement(Description, null, team.description)), /*#__PURE__*/React.createElement(ButtonSection, {
|
|
255
292
|
actions: allActions,
|
|
256
293
|
analytics: analytics
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
3
|
import React, { Suspense } from 'react';
|
|
4
|
-
import { FormattedMessage } from 'react-intl-next';
|
|
4
|
+
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
5
5
|
import { withAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
6
6
|
import { GiveKudosLauncherLazy, KudosType } from '@atlaskit/give-kudos';
|
|
7
7
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
8
8
|
import Popup from '@atlaskit/popup';
|
|
9
|
+
import { Box } from '@atlaskit/primitives';
|
|
9
10
|
import { layers } from '@atlaskit/theme/constants';
|
|
10
11
|
import filterActions from '../../internal/filterActions';
|
|
11
12
|
import messages from '../../messages';
|
|
@@ -98,8 +99,23 @@ export class TeamProfileCardTriggerInternal extends React.PureComponent {
|
|
|
98
99
|
this.hideProfilecard(DELAY_MS_HIDE);
|
|
99
100
|
}
|
|
100
101
|
});
|
|
102
|
+
_defineProperty(this, "onKeyPress", event => {
|
|
103
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
104
|
+
event.preventDefault();
|
|
105
|
+
this.setState({
|
|
106
|
+
isTriggeredByKeyboard: true
|
|
107
|
+
});
|
|
108
|
+
this.showProfilecard(0);
|
|
109
|
+
if (!this.state.visible) {
|
|
110
|
+
this.fireAnalytics(cardTriggered('team', 'click'));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
});
|
|
101
114
|
_defineProperty(this, "onClose", () => {
|
|
102
115
|
this.hideProfilecard();
|
|
116
|
+
this.setState({
|
|
117
|
+
isTriggeredByKeyboard: false
|
|
118
|
+
});
|
|
103
119
|
});
|
|
104
120
|
_defineProperty(this, "openKudosDrawer", () => {
|
|
105
121
|
this.hideProfilecard(DELAY_MS_HIDE);
|
|
@@ -140,7 +156,8 @@ export class TeamProfileCardTriggerInternal extends React.PureComponent {
|
|
|
140
156
|
data: null,
|
|
141
157
|
shouldShowGiveKudos: false,
|
|
142
158
|
teamCentralBaseUrl: undefined,
|
|
143
|
-
kudosDrawerOpen: false
|
|
159
|
+
kudosDrawerOpen: false,
|
|
160
|
+
isTriggeredByKeyboard: false
|
|
144
161
|
});
|
|
145
162
|
_defineProperty(this, "clientFetchProfile", () => {
|
|
146
163
|
const {
|
|
@@ -208,7 +225,8 @@ export class TeamProfileCardTriggerInternal extends React.PureComponent {
|
|
|
208
225
|
}, /*#__PURE__*/React.createElement(TeamProfileCardLazy, _extends({}, newProps, {
|
|
209
226
|
isLoading: isLoading,
|
|
210
227
|
hasError: hasError,
|
|
211
|
-
errorType: error
|
|
228
|
+
errorType: error,
|
|
229
|
+
isTriggeredByKeyboard: this.state.isTriggeredByKeyboard
|
|
212
230
|
}))));
|
|
213
231
|
});
|
|
214
232
|
_defineProperty(this, "renderKudosLauncher", () => {
|
|
@@ -230,11 +248,19 @@ export class TeamProfileCardTriggerInternal extends React.PureComponent {
|
|
|
230
248
|
_defineProperty(this, "renderTrigger", triggerProps => {
|
|
231
249
|
const {
|
|
232
250
|
children,
|
|
251
|
+
intl,
|
|
233
252
|
triggerLinkType,
|
|
234
253
|
viewProfileLink
|
|
235
254
|
} = this.props;
|
|
236
255
|
if (triggerLinkType === 'none') {
|
|
237
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, this.renderKudosLauncher(), /*#__PURE__*/React.createElement(
|
|
256
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, this.renderKudosLauncher(), fg('enable_team_profilecard_toggletip_a11y_fix') ? /*#__PURE__*/React.createElement(Box, _extends({
|
|
257
|
+
as: "span",
|
|
258
|
+
role: "button",
|
|
259
|
+
testId: "team-profilecard-trigger-wrapper",
|
|
260
|
+
tabIndex: 0,
|
|
261
|
+
"aria-label": intl.formatMessage(messages.teamProfileCardAriaLabel),
|
|
262
|
+
onKeyUp: this.onKeyPress
|
|
263
|
+
}, triggerProps, this.triggerListeners), children) : /*#__PURE__*/React.createElement("span", _extends({
|
|
238
264
|
"data-testid": "team-profilecard-trigger-wrapper"
|
|
239
265
|
}, triggerProps, this.triggerListeners), children));
|
|
240
266
|
}
|
|
@@ -347,4 +373,4 @@ _defineProperty(TeamProfileCardTriggerInternal, "defaultProps", {
|
|
|
347
373
|
triggerLinkType: 'link',
|
|
348
374
|
shouldRenderToParent: true
|
|
349
375
|
});
|
|
350
|
-
export default withAnalyticsEvents()(TeamProfileCardTriggerInternal);
|
|
376
|
+
export default withAnalyticsEvents()(injectIntl(TeamProfileCardTriggerInternal));
|
package/dist/es2019/messages.js
CHANGED
|
@@ -150,6 +150,11 @@ const messages = defineMessages({
|
|
|
150
150
|
defaultMessage: 'Direct reports',
|
|
151
151
|
description: "Title for a section on the profile card that show the user's direct reports"
|
|
152
152
|
},
|
|
153
|
+
teamProfileCardAriaLabel: {
|
|
154
|
+
id: 'pt.team-profile-card.aria-label',
|
|
155
|
+
defaultMessage: 'More information about this team',
|
|
156
|
+
description: 'Aria label for the team profile card'
|
|
157
|
+
},
|
|
153
158
|
giveKudosButton: {
|
|
154
159
|
id: 'pt.profile-card.give-kudos',
|
|
155
160
|
defaultMessage: 'Give kudos',
|
|
@@ -32,7 +32,7 @@ const createEvent = (eventType, action, actionSubject, actionSubjectId, attribut
|
|
|
32
32
|
actionSubjectId,
|
|
33
33
|
attributes: {
|
|
34
34
|
packageName: "@atlaskit/profilecard",
|
|
35
|
-
packageVersion: "23.4.
|
|
35
|
+
packageVersion: "23.4.1",
|
|
36
36
|
...attributes,
|
|
37
37
|
firedAt: Math.round(getPageTime())
|
|
38
38
|
}
|
|
@@ -4,7 +4,7 @@ import { AGGQuery } from './graphqlUtils';
|
|
|
4
4
|
var ORG_ID_FROM_CLOUD_ID_QUERY = "query OrgIdFromCloudId($cloudId: ID!) {\n\ttenantContexts(cloudIds: [$cloudId]) {\n\t\torgId\n\t}\n}";
|
|
5
5
|
var addHeaders = function addHeaders(headers) {
|
|
6
6
|
headers.append('atl-client-name', "@atlaskit/profilecard");
|
|
7
|
-
headers.append('atl-client-version', "23.4.
|
|
7
|
+
headers.append('atl-client-version', "23.4.1");
|
|
8
8
|
return headers;
|
|
9
9
|
};
|
|
10
10
|
export function getOrgIdForCloudIdFromAGG(_x, _x2) {
|
|
@@ -57,7 +57,7 @@ export var addHeaders = function addHeaders(headers) {
|
|
|
57
57
|
headers.append('X-ExperimentalApi', 'teams-beta');
|
|
58
58
|
headers.append('X-ExperimentalApi', 'team-members-beta');
|
|
59
59
|
headers.append('atl-client-name', "@atlaskit/profilecard");
|
|
60
|
-
headers.append('atl-client-version', "23.4.
|
|
60
|
+
headers.append('atl-client-version', "23.4.1");
|
|
61
61
|
return headers;
|
|
62
62
|
};
|
|
63
63
|
export function getTeamFromAGG(_x, _x2, _x3) {
|
|
@@ -6,6 +6,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
6
6
|
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) { _defineProperty(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; }
|
|
7
7
|
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
8
8
|
import { FormattedMessage, useIntl } from 'react-intl-next';
|
|
9
|
+
import Avatar from '@atlaskit/avatar';
|
|
9
10
|
import AvatarGroup from '@atlaskit/avatar-group';
|
|
10
11
|
import LoadingButton from '@atlaskit/button/loading-button';
|
|
11
12
|
import Button, { IconButton, LinkButton } from '@atlaskit/button/new';
|
|
@@ -51,7 +52,8 @@ var TeamMembers = function TeamMembers(_ref) {
|
|
|
51
52
|
generateUserLink = _ref.generateUserLink,
|
|
52
53
|
members = _ref.members,
|
|
53
54
|
onUserClick = _ref.onUserClick,
|
|
54
|
-
includingYou = _ref.includingYou
|
|
55
|
+
includingYou = _ref.includingYou,
|
|
56
|
+
isTriggeredByKeyboard = _ref.isTriggeredByKeyboard;
|
|
55
57
|
var _useIntl = useIntl(),
|
|
56
58
|
formatMessage = _useIntl.formatMessage;
|
|
57
59
|
var count = members ? members.length : 0;
|
|
@@ -60,6 +62,14 @@ var TeamMembers = function TeamMembers(_ref) {
|
|
|
60
62
|
// Use a ref to track whether this is currently open, so we can fire events
|
|
61
63
|
// iff the more section is being opened (not closed).
|
|
62
64
|
var isMoreMembersOpen = useRef(false);
|
|
65
|
+
var avatarRef = useRef(null);
|
|
66
|
+
var ref = function ref(element) {
|
|
67
|
+
if (isTriggeredByKeyboard) {
|
|
68
|
+
var _avatarRef$current;
|
|
69
|
+
avatarRef.current = element;
|
|
70
|
+
(_avatarRef$current = avatarRef.current) === null || _avatarRef$current === void 0 || _avatarRef$current.focus();
|
|
71
|
+
}
|
|
72
|
+
};
|
|
63
73
|
var onMoreClick = useCallback(function () {
|
|
64
74
|
var isOpen = isMoreMembersOpen.current;
|
|
65
75
|
if (!isOpen) {
|
|
@@ -83,7 +93,34 @@ var TeamMembers = function TeamMembers(_ref) {
|
|
|
83
93
|
values: {
|
|
84
94
|
count: count
|
|
85
95
|
}
|
|
86
|
-
}))), members && members.length > 0 && /*#__PURE__*/React.createElement(AvatarSection, null, /*#__PURE__*/React.createElement(AvatarGroup, {
|
|
96
|
+
}))), members && members.length > 0 && /*#__PURE__*/React.createElement(AvatarSection, null, fg('enable_team_profilecard_toggletip_a11y_fix') ? /*#__PURE__*/React.createElement(AvatarGroup, {
|
|
97
|
+
appearance: "stack",
|
|
98
|
+
data: members.map(function (member, index) {
|
|
99
|
+
var href = generateUserLink === null || generateUserLink === void 0 ? void 0 : generateUserLink(member.id);
|
|
100
|
+
var onClick = onMemberClick(onUserClick, member.id, analytics, index, !!generateUserLink);
|
|
101
|
+
return {
|
|
102
|
+
key: member.id,
|
|
103
|
+
name: member.fullName,
|
|
104
|
+
src: member.avatarUrl,
|
|
105
|
+
href: href,
|
|
106
|
+
onClick: onClick
|
|
107
|
+
};
|
|
108
|
+
}),
|
|
109
|
+
maxCount: avatarGroupMaxCount,
|
|
110
|
+
showMoreButtonProps: showMoreButtonProps,
|
|
111
|
+
testId: "profilecard-avatar-group",
|
|
112
|
+
overrides: {
|
|
113
|
+
Avatar: {
|
|
114
|
+
render: function render(Component, props, index) {
|
|
115
|
+
return index === 0 ? /*#__PURE__*/React.createElement(Avatar, _extends({
|
|
116
|
+
ref: ref
|
|
117
|
+
}, props, {
|
|
118
|
+
testId: "first-member"
|
|
119
|
+
})) : /*#__PURE__*/React.createElement(Component, props);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}) : /*#__PURE__*/React.createElement(AvatarGroup, {
|
|
87
124
|
appearance: "stack",
|
|
88
125
|
data: members.map(function (member, index) {
|
|
89
126
|
var href = generateUserLink === null || generateUserLink === void 0 ? void 0 : generateUserLink(member.id);
|
|
@@ -238,7 +275,8 @@ var TeamProfilecardContent = function TeamProfilecardContent(_ref5) {
|
|
|
238
275
|
generateUserLink = _ref5.generateUserLink,
|
|
239
276
|
onUserClick = _ref5.onUserClick,
|
|
240
277
|
viewProfileLink = _ref5.viewProfileLink,
|
|
241
|
-
viewProfileOnClick = _ref5.viewProfileOnClick
|
|
278
|
+
viewProfileOnClick = _ref5.viewProfileOnClick,
|
|
279
|
+
isTriggeredByKeyboard = _ref5.isTriggeredByKeyboard;
|
|
242
280
|
var allActions = [{
|
|
243
281
|
label: /*#__PURE__*/React.createElement(FormattedMessage, messages.teamViewProfile),
|
|
244
282
|
link: viewProfileLink,
|
|
@@ -274,7 +312,8 @@ var TeamProfilecardContent = function TeamProfilecardContent(_ref5) {
|
|
|
274
312
|
members: team.members,
|
|
275
313
|
generateUserLink: generateUserLink,
|
|
276
314
|
includingYou: includingYou,
|
|
277
|
-
onUserClick: onUserClick
|
|
315
|
+
onUserClick: onUserClick,
|
|
316
|
+
isTriggeredByKeyboard: isTriggeredByKeyboard
|
|
278
317
|
}), team.description.trim() && /*#__PURE__*/React.createElement(DescriptionWrapper, null, /*#__PURE__*/React.createElement(Description, null, team.description)), /*#__PURE__*/React.createElement(ButtonSection, {
|
|
279
318
|
actions: allActions,
|
|
280
319
|
analytics: analytics
|
|
@@ -9,11 +9,12 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
9
9
|
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
|
|
10
10
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
11
11
|
import React, { Suspense } from 'react';
|
|
12
|
-
import { FormattedMessage } from 'react-intl-next';
|
|
12
|
+
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
13
13
|
import { withAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
14
14
|
import { GiveKudosLauncherLazy, KudosType } from '@atlaskit/give-kudos';
|
|
15
15
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
16
16
|
import Popup from '@atlaskit/popup';
|
|
17
|
+
import { Box } from '@atlaskit/primitives';
|
|
17
18
|
import { layers } from '@atlaskit/theme/constants';
|
|
18
19
|
import _filterActions from '../../internal/filterActions';
|
|
19
20
|
import messages from '../../messages';
|
|
@@ -113,8 +114,23 @@ export var TeamProfileCardTriggerInternal = /*#__PURE__*/function (_React$PureCo
|
|
|
113
114
|
_this.hideProfilecard(DELAY_MS_HIDE);
|
|
114
115
|
}
|
|
115
116
|
});
|
|
117
|
+
_defineProperty(_this, "onKeyPress", function (event) {
|
|
118
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
119
|
+
event.preventDefault();
|
|
120
|
+
_this.setState({
|
|
121
|
+
isTriggeredByKeyboard: true
|
|
122
|
+
});
|
|
123
|
+
_this.showProfilecard(0);
|
|
124
|
+
if (!_this.state.visible) {
|
|
125
|
+
_this.fireAnalytics(cardTriggered('team', 'click'));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
116
129
|
_defineProperty(_this, "onClose", function () {
|
|
117
130
|
_this.hideProfilecard();
|
|
131
|
+
_this.setState({
|
|
132
|
+
isTriggeredByKeyboard: false
|
|
133
|
+
});
|
|
118
134
|
});
|
|
119
135
|
_defineProperty(_this, "openKudosDrawer", function () {
|
|
120
136
|
_this.hideProfilecard(DELAY_MS_HIDE);
|
|
@@ -155,7 +171,8 @@ export var TeamProfileCardTriggerInternal = /*#__PURE__*/function (_React$PureCo
|
|
|
155
171
|
data: null,
|
|
156
172
|
shouldShowGiveKudos: false,
|
|
157
173
|
teamCentralBaseUrl: undefined,
|
|
158
|
-
kudosDrawerOpen: false
|
|
174
|
+
kudosDrawerOpen: false,
|
|
175
|
+
isTriggeredByKeyboard: false
|
|
159
176
|
});
|
|
160
177
|
_defineProperty(_this, "clientFetchProfile", function () {
|
|
161
178
|
var _this$props = _this.props,
|
|
@@ -225,7 +242,8 @@ export var TeamProfileCardTriggerInternal = /*#__PURE__*/function (_React$PureCo
|
|
|
225
242
|
}, /*#__PURE__*/React.createElement(TeamProfileCardLazy, _extends({}, newProps, {
|
|
226
243
|
isLoading: isLoading,
|
|
227
244
|
hasError: hasError,
|
|
228
|
-
errorType: error
|
|
245
|
+
errorType: error,
|
|
246
|
+
isTriggeredByKeyboard: _this.state.isTriggeredByKeyboard
|
|
229
247
|
}))));
|
|
230
248
|
});
|
|
231
249
|
_defineProperty(_this, "renderKudosLauncher", function () {
|
|
@@ -247,10 +265,18 @@ export var TeamProfileCardTriggerInternal = /*#__PURE__*/function (_React$PureCo
|
|
|
247
265
|
_defineProperty(_this, "renderTrigger", function (triggerProps) {
|
|
248
266
|
var _this$props3 = _this.props,
|
|
249
267
|
children = _this$props3.children,
|
|
268
|
+
intl = _this$props3.intl,
|
|
250
269
|
triggerLinkType = _this$props3.triggerLinkType,
|
|
251
270
|
viewProfileLink = _this$props3.viewProfileLink;
|
|
252
271
|
if (triggerLinkType === 'none') {
|
|
253
|
-
return /*#__PURE__*/React.createElement(React.Fragment, null, _this.renderKudosLauncher(), /*#__PURE__*/React.createElement(
|
|
272
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, _this.renderKudosLauncher(), fg('enable_team_profilecard_toggletip_a11y_fix') ? /*#__PURE__*/React.createElement(Box, _extends({
|
|
273
|
+
as: "span",
|
|
274
|
+
role: "button",
|
|
275
|
+
testId: "team-profilecard-trigger-wrapper",
|
|
276
|
+
tabIndex: 0,
|
|
277
|
+
"aria-label": intl.formatMessage(messages.teamProfileCardAriaLabel),
|
|
278
|
+
onKeyUp: _this.onKeyPress
|
|
279
|
+
}, triggerProps, _this.triggerListeners), children) : /*#__PURE__*/React.createElement("span", _extends({
|
|
254
280
|
"data-testid": "team-profilecard-trigger-wrapper"
|
|
255
281
|
}, triggerProps, _this.triggerListeners), children));
|
|
256
282
|
}
|
|
@@ -383,4 +409,4 @@ _defineProperty(TeamProfileCardTriggerInternal, "defaultProps", {
|
|
|
383
409
|
triggerLinkType: 'link',
|
|
384
410
|
shouldRenderToParent: true
|
|
385
411
|
});
|
|
386
|
-
export default withAnalyticsEvents()(TeamProfileCardTriggerInternal);
|
|
412
|
+
export default withAnalyticsEvents()(injectIntl(TeamProfileCardTriggerInternal));
|
package/dist/esm/messages.js
CHANGED
|
@@ -150,6 +150,11 @@ var messages = defineMessages({
|
|
|
150
150
|
defaultMessage: 'Direct reports',
|
|
151
151
|
description: "Title for a section on the profile card that show the user's direct reports"
|
|
152
152
|
},
|
|
153
|
+
teamProfileCardAriaLabel: {
|
|
154
|
+
id: 'pt.team-profile-card.aria-label',
|
|
155
|
+
defaultMessage: 'More information about this team',
|
|
156
|
+
description: 'Aria label for the team profile card'
|
|
157
|
+
},
|
|
153
158
|
giveKudosButton: {
|
|
154
159
|
id: 'pt.profile-card.give-kudos',
|
|
155
160
|
defaultMessage: 'Give kudos',
|
|
@@ -39,7 +39,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
|
|
|
39
39
|
actionSubjectId: actionSubjectId,
|
|
40
40
|
attributes: _objectSpread(_objectSpread({
|
|
41
41
|
packageName: "@atlaskit/profilecard",
|
|
42
|
-
packageVersion: "23.4.
|
|
42
|
+
packageVersion: "23.4.1"
|
|
43
43
|
}, attributes), {}, {
|
|
44
44
|
firedAt: Math.round(getPageTime())
|
|
45
45
|
})
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { type WrappedComponentProps } from 'react-intl-next';
|
|
2
3
|
import { type AnalyticsEventPayload } from '@atlaskit/analytics-next';
|
|
3
4
|
import { type TriggerProps } from '@atlaskit/popup/types';
|
|
4
5
|
import type { AnalyticsFromDuration, AnalyticsProps, ProfileCardAction, Team, TeamProfileCardTriggerProps, TeamProfileCardTriggerState } from '../../types';
|
|
5
|
-
export declare class TeamProfileCardTriggerInternal extends React.PureComponent<TeamProfileCardTriggerProps & AnalyticsProps, TeamProfileCardTriggerState> {
|
|
6
|
+
export declare class TeamProfileCardTriggerInternal extends React.PureComponent<TeamProfileCardTriggerProps & AnalyticsProps & WrappedComponentProps, TeamProfileCardTriggerState> {
|
|
6
7
|
static defaultProps: Partial<TeamProfileCardTriggerProps>;
|
|
7
8
|
_isMounted: boolean;
|
|
8
9
|
showTimer: number;
|
|
@@ -16,6 +17,7 @@ export declare class TeamProfileCardTriggerInternal extends React.PureComponent<
|
|
|
16
17
|
onClick: (event: React.MouseEvent<HTMLElement>) => void;
|
|
17
18
|
onMouseEnter: () => void;
|
|
18
19
|
onMouseLeave: () => void;
|
|
20
|
+
onKeyPress: (event: React.KeyboardEvent) => void;
|
|
19
21
|
onClose: () => void;
|
|
20
22
|
openKudosDrawer: () => void;
|
|
21
23
|
closeKudosDrawer: () => void;
|
|
@@ -46,22 +48,7 @@ export declare class TeamProfileCardTriggerInternal extends React.PureComponent<
|
|
|
46
48
|
renderPopup(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
|
|
47
49
|
render(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
|
|
48
50
|
}
|
|
49
|
-
declare const _default: React.ForwardRefExoticComponent<
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
teamId?: string | undefined;
|
|
53
|
-
resourceClient?: import("../../types").ProfileClient | undefined;
|
|
54
|
-
actions?: ProfileCardAction[] | undefined;
|
|
55
|
-
position?: import("../../types").ProfilecardTriggerPosition | undefined;
|
|
56
|
-
trigger?: "hover" | "click" | "hover-click" | undefined;
|
|
57
|
-
children?: React.ReactNode;
|
|
58
|
-
addFlag?: ((flag: any) => void) | undefined;
|
|
59
|
-
viewingUserId?: string | undefined;
|
|
60
|
-
generateUserLink?: ((userId: string) => string) | undefined;
|
|
61
|
-
onUserClick?: ((userId: string, event: React.MouseEvent<Element, MouseEvent>) => void) | undefined;
|
|
62
|
-
viewProfileLink?: string | undefined;
|
|
63
|
-
viewProfileOnClick?: ((event?: React.MouseEvent<Element, MouseEvent> | undefined) => void) | undefined;
|
|
64
|
-
shouldRenderToParent?: boolean | undefined;
|
|
65
|
-
triggerLinkType?: "link" | "none" | "clickable-link" | undefined;
|
|
66
|
-
} & {} & React.RefAttributes<any>>;
|
|
51
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<Omit<TeamProfileCardTriggerProps & AnalyticsProps & WrappedComponentProps, "intl"> & {
|
|
52
|
+
forwardedRef?: React.Ref<any> | undefined;
|
|
53
|
+
}, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps> & React.RefAttributes<any>>;
|
|
67
54
|
export default _default;
|
package/dist/types/messages.d.ts
CHANGED
|
@@ -149,6 +149,11 @@ declare const messages: {
|
|
|
149
149
|
defaultMessage: string;
|
|
150
150
|
description: string;
|
|
151
151
|
};
|
|
152
|
+
teamProfileCardAriaLabel: {
|
|
153
|
+
id: string;
|
|
154
|
+
defaultMessage: string;
|
|
155
|
+
description: string;
|
|
156
|
+
};
|
|
152
157
|
giveKudosButton: {
|
|
153
158
|
id: string;
|
|
154
159
|
defaultMessage: string;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -203,6 +203,7 @@ export interface TeamProfileCardTriggerState {
|
|
|
203
203
|
shouldShowGiveKudos?: boolean;
|
|
204
204
|
teamCentralBaseUrl?: string;
|
|
205
205
|
kudosDrawerOpen: boolean;
|
|
206
|
+
isTriggeredByKeyboard?: boolean;
|
|
206
207
|
}
|
|
207
208
|
export interface TeamProfilecardCoreProps {
|
|
208
209
|
/**
|
|
@@ -252,10 +253,10 @@ export interface TeamProfileCardTriggerProps extends TeamProfilecardCoreProps {
|
|
|
252
253
|
/** The id of the team. */
|
|
253
254
|
teamId: string;
|
|
254
255
|
/**
|
|
255
|
-
The id of the organization that the team belongs to.
|
|
256
|
-
|
|
256
|
+
Optional orgId. The id of the organization that the team belongs to.
|
|
257
|
+
Not in use.
|
|
257
258
|
*/
|
|
258
|
-
orgId
|
|
259
|
+
orgId?: string;
|
|
259
260
|
/** An instance of ProfileClient. */
|
|
260
261
|
resourceClient: ProfileClient;
|
|
261
262
|
/**
|
|
@@ -299,6 +300,11 @@ export interface TeamProfileCardTriggerProps extends TeamProfilecardCoreProps {
|
|
|
299
300
|
|
|
300
301
|
Look at the example on "Trigger Link Types" for more in-depth analysis, or
|
|
301
302
|
ask in #help-people-and-teams-xpc on Slack for our recommendations.
|
|
303
|
+
|
|
304
|
+
@deprecated
|
|
305
|
+
Consumers should always pass it as "none" from now on.
|
|
306
|
+
Consumers should be responsible to implement wrapper of our profilecard trigger, for example a link
|
|
307
|
+
We are keeping the original comments longer for existing exps
|
|
302
308
|
*/
|
|
303
309
|
triggerLinkType?: 'none' | 'link' | 'clickable-link';
|
|
304
310
|
/**
|
|
@@ -311,7 +317,7 @@ export interface TeamProfileCardTriggerProps extends TeamProfilecardCoreProps {
|
|
|
311
317
|
*/
|
|
312
318
|
addFlag?: (flag: any) => void;
|
|
313
319
|
/**
|
|
314
|
-
*
|
|
320
|
+
* Mandatory cloudId. Used to fetch team.
|
|
315
321
|
*/
|
|
316
322
|
cloudId?: string;
|
|
317
323
|
/**
|
|
@@ -431,6 +437,8 @@ export interface TeamProfilecardProps extends TeamProfilecardCoreProps {
|
|
|
431
437
|
clientFetchProfile?: () => void;
|
|
432
438
|
/** Details relevant to passing around analytics. */
|
|
433
439
|
analytics: AnalyticsFunction;
|
|
440
|
+
/** Set auto focus for actionable items */
|
|
441
|
+
isTriggeredByKeyboard?: boolean;
|
|
434
442
|
}
|
|
435
443
|
export interface MessageIntlProviderProps {
|
|
436
444
|
children: React.ReactNode;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { type WrappedComponentProps } from 'react-intl-next';
|
|
2
3
|
import { type AnalyticsEventPayload } from '@atlaskit/analytics-next';
|
|
3
4
|
import { type TriggerProps } from '@atlaskit/popup/types';
|
|
4
5
|
import type { AnalyticsFromDuration, AnalyticsProps, ProfileCardAction, Team, TeamProfileCardTriggerProps, TeamProfileCardTriggerState } from '../../types';
|
|
5
|
-
export declare class TeamProfileCardTriggerInternal extends React.PureComponent<TeamProfileCardTriggerProps & AnalyticsProps, TeamProfileCardTriggerState> {
|
|
6
|
+
export declare class TeamProfileCardTriggerInternal extends React.PureComponent<TeamProfileCardTriggerProps & AnalyticsProps & WrappedComponentProps, TeamProfileCardTriggerState> {
|
|
6
7
|
static defaultProps: Partial<TeamProfileCardTriggerProps>;
|
|
7
8
|
_isMounted: boolean;
|
|
8
9
|
showTimer: number;
|
|
@@ -16,6 +17,7 @@ export declare class TeamProfileCardTriggerInternal extends React.PureComponent<
|
|
|
16
17
|
onClick: (event: React.MouseEvent<HTMLElement>) => void;
|
|
17
18
|
onMouseEnter: () => void;
|
|
18
19
|
onMouseLeave: () => void;
|
|
20
|
+
onKeyPress: (event: React.KeyboardEvent) => void;
|
|
19
21
|
onClose: () => void;
|
|
20
22
|
openKudosDrawer: () => void;
|
|
21
23
|
closeKudosDrawer: () => void;
|
|
@@ -46,22 +48,7 @@ export declare class TeamProfileCardTriggerInternal extends React.PureComponent<
|
|
|
46
48
|
renderPopup(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
|
|
47
49
|
render(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
|
|
48
50
|
}
|
|
49
|
-
declare const _default: React.ForwardRefExoticComponent<
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
teamId?: string | undefined;
|
|
53
|
-
resourceClient?: import("../../types").ProfileClient | undefined;
|
|
54
|
-
actions?: ProfileCardAction[] | undefined;
|
|
55
|
-
position?: import("../../types").ProfilecardTriggerPosition | undefined;
|
|
56
|
-
trigger?: "hover" | "click" | "hover-click" | undefined;
|
|
57
|
-
children?: React.ReactNode;
|
|
58
|
-
addFlag?: ((flag: any) => void) | undefined;
|
|
59
|
-
viewingUserId?: string | undefined;
|
|
60
|
-
generateUserLink?: ((userId: string) => string) | undefined;
|
|
61
|
-
onUserClick?: ((userId: string, event: React.MouseEvent<Element, MouseEvent>) => void) | undefined;
|
|
62
|
-
viewProfileLink?: string | undefined;
|
|
63
|
-
viewProfileOnClick?: ((event?: React.MouseEvent<Element, MouseEvent> | undefined) => void) | undefined;
|
|
64
|
-
shouldRenderToParent?: boolean | undefined;
|
|
65
|
-
triggerLinkType?: "link" | "none" | "clickable-link" | undefined;
|
|
66
|
-
} & {} & React.RefAttributes<any>>;
|
|
51
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<Omit<TeamProfileCardTriggerProps & AnalyticsProps & WrappedComponentProps, "intl"> & {
|
|
52
|
+
forwardedRef?: React.Ref<any> | undefined;
|
|
53
|
+
}, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps> & React.RefAttributes<any>>;
|
|
67
54
|
export default _default;
|
|
@@ -149,6 +149,11 @@ declare const messages: {
|
|
|
149
149
|
defaultMessage: string;
|
|
150
150
|
description: string;
|
|
151
151
|
};
|
|
152
|
+
teamProfileCardAriaLabel: {
|
|
153
|
+
id: string;
|
|
154
|
+
defaultMessage: string;
|
|
155
|
+
description: string;
|
|
156
|
+
};
|
|
152
157
|
giveKudosButton: {
|
|
153
158
|
id: string;
|
|
154
159
|
defaultMessage: string;
|
|
@@ -206,6 +206,7 @@ export interface TeamProfileCardTriggerState {
|
|
|
206
206
|
shouldShowGiveKudos?: boolean;
|
|
207
207
|
teamCentralBaseUrl?: string;
|
|
208
208
|
kudosDrawerOpen: boolean;
|
|
209
|
+
isTriggeredByKeyboard?: boolean;
|
|
209
210
|
}
|
|
210
211
|
export interface TeamProfilecardCoreProps {
|
|
211
212
|
/**
|
|
@@ -255,10 +256,10 @@ export interface TeamProfileCardTriggerProps extends TeamProfilecardCoreProps {
|
|
|
255
256
|
/** The id of the team. */
|
|
256
257
|
teamId: string;
|
|
257
258
|
/**
|
|
258
|
-
The id of the organization that the team belongs to.
|
|
259
|
-
|
|
259
|
+
Optional orgId. The id of the organization that the team belongs to.
|
|
260
|
+
Not in use.
|
|
260
261
|
*/
|
|
261
|
-
orgId
|
|
262
|
+
orgId?: string;
|
|
262
263
|
/** An instance of ProfileClient. */
|
|
263
264
|
resourceClient: ProfileClient;
|
|
264
265
|
/**
|
|
@@ -302,6 +303,11 @@ export interface TeamProfileCardTriggerProps extends TeamProfilecardCoreProps {
|
|
|
302
303
|
|
|
303
304
|
Look at the example on "Trigger Link Types" for more in-depth analysis, or
|
|
304
305
|
ask in #help-people-and-teams-xpc on Slack for our recommendations.
|
|
306
|
+
|
|
307
|
+
@deprecated
|
|
308
|
+
Consumers should always pass it as "none" from now on.
|
|
309
|
+
Consumers should be responsible to implement wrapper of our profilecard trigger, for example a link
|
|
310
|
+
We are keeping the original comments longer for existing exps
|
|
305
311
|
*/
|
|
306
312
|
triggerLinkType?: 'none' | 'link' | 'clickable-link';
|
|
307
313
|
/**
|
|
@@ -314,7 +320,7 @@ export interface TeamProfileCardTriggerProps extends TeamProfilecardCoreProps {
|
|
|
314
320
|
*/
|
|
315
321
|
addFlag?: (flag: any) => void;
|
|
316
322
|
/**
|
|
317
|
-
*
|
|
323
|
+
* Mandatory cloudId. Used to fetch team.
|
|
318
324
|
*/
|
|
319
325
|
cloudId?: string;
|
|
320
326
|
/**
|
|
@@ -437,6 +443,8 @@ export interface TeamProfilecardProps extends TeamProfilecardCoreProps {
|
|
|
437
443
|
clientFetchProfile?: () => void;
|
|
438
444
|
/** Details relevant to passing around analytics. */
|
|
439
445
|
analytics: AnalyticsFunction;
|
|
446
|
+
/** Set auto focus for actionable items */
|
|
447
|
+
isTriggeredByKeyboard?: boolean;
|
|
440
448
|
}
|
|
441
449
|
export interface MessageIntlProviderProps {
|
|
442
450
|
children: React.ReactNode;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/profilecard",
|
|
3
|
-
"version": "23.4.
|
|
3
|
+
"version": "23.4.1",
|
|
4
4
|
"description": "A React component to display a card with user information.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -64,13 +64,13 @@
|
|
|
64
64
|
"@atlaskit/icon": "^25.0.0",
|
|
65
65
|
"@atlaskit/lozenge": "^12.2.0",
|
|
66
66
|
"@atlaskit/menu": "^3.1.0",
|
|
67
|
-
"@atlaskit/modal-dialog": "^13.
|
|
68
|
-
"@atlaskit/people-teams-ui-public": "^3.
|
|
67
|
+
"@atlaskit/modal-dialog": "^13.3.0",
|
|
68
|
+
"@atlaskit/people-teams-ui-public": "^3.1.0",
|
|
69
69
|
"@atlaskit/platform-feature-flags": "^1.1.0",
|
|
70
70
|
"@atlaskit/popup": "^2.0.0",
|
|
71
|
-
"@atlaskit/primitives": "^14.
|
|
72
|
-
"@atlaskit/rovo-agent-components": "^2.
|
|
73
|
-
"@atlaskit/rovo-triggers": "^2.
|
|
71
|
+
"@atlaskit/primitives": "^14.2.0",
|
|
72
|
+
"@atlaskit/rovo-agent-components": "^2.3.0",
|
|
73
|
+
"@atlaskit/rovo-triggers": "^2.4.0",
|
|
74
74
|
"@atlaskit/spinner": "^18.0.0",
|
|
75
75
|
"@atlaskit/theme": "^18.0.0",
|
|
76
76
|
"@atlaskit/tokens": "^4.5.0",
|
|
@@ -153,6 +153,9 @@
|
|
|
153
153
|
},
|
|
154
154
|
"ptc_migrate_buttons": {
|
|
155
155
|
"type": "boolean"
|
|
156
|
+
},
|
|
157
|
+
"enable_team_profilecard_toggletip_a11y_fix": {
|
|
158
|
+
"type": "boolean"
|
|
156
159
|
}
|
|
157
160
|
},
|
|
158
161
|
"sideEffects": [
|