@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 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.0");
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.0");
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("span", (0, _extends2.default)({
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));
@@ -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.0"
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.0");
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.0");
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("span", _extends({
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));
@@ -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.0",
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.0");
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.0");
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("span", _extends({
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));
@@ -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.0"
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<Pick<Omit<TeamProfileCardTriggerProps & AnalyticsProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, never> & {
50
- cloudId?: string | undefined;
51
- orgId?: string | undefined;
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;
@@ -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
- Currently this is unused, but will become necessary in the future.
256
+ Optional orgId. The id of the organization that the team belongs to.
257
+ Not in use.
257
258
  */
258
- orgId: string;
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
- * Optional cloudId. Pass this if rendering card within a sited context.
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<Pick<Omit<TeamProfileCardTriggerProps & AnalyticsProps, keyof import("@atlaskit/analytics-next").WithAnalyticsEventsProps>, never> & {
50
- cloudId?: string | undefined;
51
- orgId?: string | undefined;
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
- Currently this is unused, but will become necessary in the future.
259
+ Optional orgId. The id of the organization that the team belongs to.
260
+ Not in use.
260
261
  */
261
- orgId: string;
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
- * Optional cloudId. Pass this if rendering card within a sited context.
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.0",
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.1.0",
68
- "@atlaskit/people-teams-ui-public": "^3.0.0",
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.1.0",
72
- "@atlaskit/rovo-agent-components": "^2.2.0",
73
- "@atlaskit/rovo-triggers": "^2.3.0",
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": [