@atlaskit/profilecard 23.4.0 → 23.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/afm-cc/tsconfig.json +3 -0
  3. package/afm-jira/tsconfig.json +3 -0
  4. package/afm-post-office/tsconfig.json +3 -0
  5. package/dist/cjs/client/getOrgIdForCloudIdFromAGG.js +1 -1
  6. package/dist/cjs/client/getTeamFromAGG.js +1 -1
  7. package/dist/cjs/components/Team/TeamProfileCard.js +43 -4
  8. package/dist/cjs/components/Team/TeamProfileCardTrigger.js +30 -4
  9. package/dist/cjs/components/team-profile-card/main.compiled.css +6 -7
  10. package/dist/cjs/components/team-profile-card/main.js +30 -40
  11. package/dist/cjs/messages.js +5 -0
  12. package/dist/cjs/util/analytics.js +1 -1
  13. package/dist/es2019/client/getOrgIdForCloudIdFromAGG.js +1 -1
  14. package/dist/es2019/client/getTeamFromAGG.js +1 -1
  15. package/dist/es2019/components/Team/TeamProfileCard.js +41 -4
  16. package/dist/es2019/components/Team/TeamProfileCardTrigger.js +31 -5
  17. package/dist/es2019/components/team-profile-card/main.compiled.css +6 -7
  18. package/dist/es2019/components/team-profile-card/main.js +19 -28
  19. package/dist/es2019/messages.js +5 -0
  20. package/dist/es2019/util/analytics.js +1 -1
  21. package/dist/esm/client/getOrgIdForCloudIdFromAGG.js +1 -1
  22. package/dist/esm/client/getTeamFromAGG.js +1 -1
  23. package/dist/esm/components/Team/TeamProfileCard.js +43 -4
  24. package/dist/esm/components/Team/TeamProfileCardTrigger.js +31 -5
  25. package/dist/esm/components/team-profile-card/main.compiled.css +6 -7
  26. package/dist/esm/components/team-profile-card/main.js +29 -39
  27. package/dist/esm/messages.js +5 -0
  28. package/dist/esm/util/analytics.js +1 -1
  29. package/dist/types/components/Team/TeamProfileCardTrigger.d.ts +6 -19
  30. package/dist/types/messages.d.ts +5 -0
  31. package/dist/types/types.d.ts +12 -4
  32. package/dist/types-ts4.5/components/Team/TeamProfileCardTrigger.d.ts +6 -19
  33. package/dist/types-ts4.5/messages.d.ts +5 -0
  34. package/dist/types-ts4.5/types.d.ts +12 -4
  35. package/package.json +10 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/profilecard
2
2
 
3
+ ## 23.4.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#130443](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/130443)
8
+ [`85df6ddb8d6de`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/85df6ddb8d6de) -
9
+ [ux] few UI update for the team profile card
10
+
11
+ ## 23.4.1
12
+
13
+ ### Patch Changes
14
+
15
+ - [#128871](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/128871)
16
+ [`a4f35151d2de5`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a4f35151d2de5) -
17
+ Fix a11y issue on team profile card toggletip
18
+
3
19
  ## 23.4.0
4
20
 
5
21
  ### Minor Changes
@@ -83,6 +83,9 @@
83
83
  {
84
84
  "path": "../../../design-system/spinner/afm-cc/tsconfig.json"
85
85
  },
86
+ {
87
+ "path": "../../teams-avatar/afm-cc/tsconfig.json"
88
+ },
86
89
  {
87
90
  "path": "../../../design-system/theme/afm-cc/tsconfig.json"
88
91
  },
@@ -83,6 +83,9 @@
83
83
  {
84
84
  "path": "../../../design-system/spinner/afm-jira/tsconfig.json"
85
85
  },
86
+ {
87
+ "path": "../../teams-avatar/afm-jira/tsconfig.json"
88
+ },
86
89
  {
87
90
  "path": "../../../design-system/theme/afm-jira/tsconfig.json"
88
91
  },
@@ -83,6 +83,9 @@
83
83
  {
84
84
  "path": "../../../design-system/spinner/afm-post-office/tsconfig.json"
85
85
  },
86
+ {
87
+ "path": "../../teams-avatar/afm-post-office/tsconfig.json"
88
+ },
86
89
  {
87
90
  "path": "../../../design-system/theme/afm-post-office/tsconfig.json"
88
91
  },
@@ -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.2");
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.2");
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));
@@ -6,27 +6,26 @@
6
6
  ._1dqonqa1{border-style:solid}
7
7
  ._1h6dmuej{border-color:var(--ds-border,#091e4224)}._15a5nqa1{border-top-style:solid}
8
8
  ._18m915vq{overflow-y:hidden}
9
- ._18u0utpp{margin-left:var(--ds-space-150,9pt)}
9
+ ._18u01ejb{margin-left:var(--ds-space-300,24px)}
10
+ ._19bv1ejb{padding-left:var(--ds-space-300,24px)}
10
11
  ._19pkpxbi{margin-top:var(--ds-space-200,1pc)}
11
- ._19pkxy5q{margin-top:var(--ds-space-400,2pc)}
12
+ ._19pku2gc{margin-top:var(--ds-space-100,8px)}
12
13
  ._1bsb1osq{width:100%}
13
- ._1bsb1w8u{width:80%}
14
14
  ._1bsb5x59{width:340px}
15
- ._1bsbvbgk{width:4pc}
16
15
  ._1e0c1txw{display:flex}
17
16
  ._1i53muej{border-top-color:var(--ds-border,#091e4224)}
18
17
  ._1reo15vq{overflow-x:hidden}
19
18
  ._1ul95x59{min-width:340px}
20
- ._2hwxutpp{margin-right:var(--ds-space-150,9pt)}
19
+ ._2hwx1ejb{margin-right:var(--ds-space-300,24px)}
21
20
  ._2lx21bp4{flex-direction:column}
22
21
  ._4cvr1h6o{align-items:center}
23
22
  ._4t3i1ul9{height:30px}
24
23
  ._4t3i1wug{height:auto}
25
- ._4t3ivbgk{height:4pc}
24
+ ._4t3i53f4{height:75pt}
26
25
  ._5ral1dfr{object-fit:cover}
27
26
  ._bfhksm61{background-color:var(--ds-background-neutral-subtle,#00000000)}
28
- ._c71l53f4{max-height:75pt}
29
27
  ._kqswstnw{position:absolute}
30
28
  ._otyrpxbi{margin-bottom:var(--ds-space-200,1pc)}
31
29
  ._s7n4jp4b{vertical-align:top}
30
+ ._u5f31ejb{padding-right:var(--ds-space-300,24px)}
32
31
  ._uwhke4h9{border-top-width:var(--ds-border-width,1px)}
@@ -14,15 +14,15 @@ var _avatarGroup = _interopRequireDefault(require("@atlaskit/avatar-group"));
14
14
  var _heading = _interopRequireDefault(require("@atlaskit/heading"));
15
15
  var _verifiedTeamIcon = require("@atlaskit/people-teams-ui-public/verified-team-icon");
16
16
  var _compiled = require("@atlaskit/primitives/compiled");
17
+ var _teamsAvatar = _interopRequireDefault(require("@atlaskit/teams-avatar"));
17
18
  var styles = {
18
19
  wrapperStyles: "_2rkopd34 _v564nm7n _1reo15vq _18m915vq _189ee4h9 _1dqonqa1 _1h6dmuej _1e0c1txw _2lx21bp4 _1bsb5x59 _1ul95x59 _4t3i1wug",
19
20
  containerStyles: "_otyrpxbi",
20
- avatarImageContainerStyles: "_kqswstnw _18u0utpp",
21
- avatarImageStyles: "_2rkoiti9 _kqswstnw _18u0utpp _4t3ivbgk _1bsbvbgk",
22
- headerImageStyles: "_5ral1dfr _s7n4jp4b _c71l53f4 _1bsb1osq",
23
- teamInformationStyles: "_18u0utpp _19pkxy5q _2hwxutpp",
24
- viewProfileContainerStyles: "_4cvr1h6o _uwhke4h9 _15a5nqa1 _1i53muej",
25
- viewProfileButtonStyles: "_2rkoiti9 _189ee4h9 _1dqonqa1 _1h6dmuej _bfhksm61 _1bsb1w8u _4t3i1ul9 _19pkpxbi"
21
+ avatarImageStyles: "_kqswstnw _18u01ejb",
22
+ headerImageStyles: "_5ral1dfr _s7n4jp4b _4t3i53f4 _1bsb1osq",
23
+ teamInformationStyles: "_18u01ejb _19pku2gc _2hwx1ejb",
24
+ viewProfileContainerStyles: "_4cvr1h6o _uwhke4h9 _15a5nqa1 _1i53muej _19bv1ejb _u5f31ejb",
25
+ viewProfileButtonStyles: "_2rkoiti9 _189ee4h9 _1dqonqa1 _1h6dmuej _bfhksm61 _1bsb1osq _4t3i1ul9 _19pkpxbi"
26
26
  };
27
27
  var TeamCardWrapper = function TeamCardWrapper(_ref) {
28
28
  var id = _ref.id,
@@ -42,50 +42,42 @@ var HeaderImage = function HeaderImage(_ref2) {
42
42
  alt: "team-header-image"
43
43
  });
44
44
  };
45
- var TeamAvatar = function TeamAvatar(_ref3) {
46
- var avatarUrl = _ref3.avatarUrl;
47
- return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
48
- as: "img",
49
- src: avatarUrl,
50
- xcss: styles.avatarImageStyles,
51
- alt: "team-avatar-image"
52
- });
53
- };
54
- var TeamProfileCard = exports.TeamProfileCard = function TeamProfileCard(_ref4) {
55
- var teamId = _ref4.teamId,
56
- displayName = _ref4.displayName,
57
- description = _ref4.description,
58
- avatarImageUrl = _ref4.avatarImageUrl,
59
- headerImageUrl = _ref4.headerImageUrl,
60
- memberAvatars = _ref4.memberAvatars,
61
- memberCount = _ref4.memberCount,
62
- isVerified = _ref4.isVerified,
63
- teamProfileUrl = _ref4.teamProfileUrl;
45
+ var TeamProfileCard = exports.TeamProfileCard = function TeamProfileCard(_ref3) {
46
+ var teamId = _ref3.teamId,
47
+ displayName = _ref3.displayName,
48
+ description = _ref3.description,
49
+ avatarImageUrl = _ref3.avatarImageUrl,
50
+ headerImageUrl = _ref3.headerImageUrl,
51
+ memberAvatars = _ref3.memberAvatars,
52
+ memberCount = _ref3.memberCount,
53
+ isVerified = _ref3.isVerified,
54
+ teamProfileUrl = _ref3.teamProfileUrl;
64
55
  return /*#__PURE__*/_react.default.createElement(TeamCardWrapper, {
65
56
  id: teamId
66
57
  }, /*#__PURE__*/_react.default.createElement(HeaderImage, {
67
58
  srcUrl: headerImageUrl
68
59
  }), /*#__PURE__*/_react.default.createElement(_compiled.Stack, {
69
- space: "space.150",
60
+ space: "space.200",
70
61
  xcss: styles.containerStyles
71
62
  }, /*#__PURE__*/_react.default.createElement(_compiled.Inline, {
72
63
  spread: "space-between",
73
64
  alignBlock: "center"
74
- }, /*#__PURE__*/_react.default.createElement(TeamAvatar, {
75
- avatarUrl: avatarImageUrl
76
- })), /*#__PURE__*/_react.default.createElement(_compiled.Stack, {
65
+ }, /*#__PURE__*/_react.default.createElement(_compiled.Box, {
66
+ xcss: styles.avatarImageStyles
67
+ }, /*#__PURE__*/_react.default.createElement(_teamsAvatar.default, {
68
+ size: "medium",
69
+ src: avatarImageUrl
70
+ }))), /*#__PURE__*/_react.default.createElement(_compiled.Stack, {
77
71
  xcss: styles.teamInformationStyles,
78
- space: "space.150"
79
- }, /*#__PURE__*/_react.default.createElement(_compiled.Stack, {
80
- space: "space.150"
81
- }, /*#__PURE__*/_react.default.createElement(_compiled.Inline, {
72
+ space: "space.200"
73
+ }, /*#__PURE__*/_react.default.createElement(_compiled.Stack, null, /*#__PURE__*/_react.default.createElement(_compiled.Inline, {
82
74
  alignBlock: "center"
83
75
  }, /*#__PURE__*/_react.default.createElement(_heading.default, {
84
- size: "small"
76
+ size: "medium"
85
77
  }, displayName), isVerified && /*#__PURE__*/_react.default.createElement(_verifiedTeamIcon.VerifiedTeamIcon, {
86
78
  showTooltip: true
87
79
  })), /*#__PURE__*/_react.default.createElement(_compiled.Text, {
88
- color: "color.text.subtle"
80
+ color: "color.text.subtlest"
89
81
  }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, {
90
82
  defaultMessage: "Contributing team \u2022 {count, plural, one {# member} other {# members}}",
91
83
  values: {
@@ -95,12 +87,10 @@ var TeamProfileCard = exports.TeamProfileCard = function TeamProfileCard(_ref4)
95
87
  }))), /*#__PURE__*/_react.default.createElement(_compiled.Inline, null, /*#__PURE__*/_react.default.createElement(_avatarGroup.default, {
96
88
  appearance: "stack",
97
89
  data: memberAvatars
98
- })), /*#__PURE__*/_react.default.createElement(_compiled.Stack, {
99
- space: "space.050"
100
- }, /*#__PURE__*/_react.default.createElement(_compiled.Text, {
101
- color: "color.text.subtle",
90
+ })), description && /*#__PURE__*/_react.default.createElement(_compiled.Text, {
91
+ color: "color.text",
102
92
  maxLines: 3
103
- }, description))), teamProfileUrl && /*#__PURE__*/_react.default.createElement(_compiled.Stack, {
93
+ }, description)), teamProfileUrl && /*#__PURE__*/_react.default.createElement(_compiled.Stack, {
104
94
  xcss: styles.viewProfileContainerStyles
105
95
  }, /*#__PURE__*/_react.default.createElement(_compiled.Pressable, {
106
96
  onClick: function onClick() {
@@ -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.2"
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.2");
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.2");
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));
@@ -6,27 +6,26 @@
6
6
  ._1dqonqa1{border-style:solid}
7
7
  ._1h6dmuej{border-color:var(--ds-border,#091e4224)}._15a5nqa1{border-top-style:solid}
8
8
  ._18m915vq{overflow-y:hidden}
9
- ._18u0utpp{margin-left:var(--ds-space-150,9pt)}
9
+ ._18u01ejb{margin-left:var(--ds-space-300,24px)}
10
+ ._19bv1ejb{padding-left:var(--ds-space-300,24px)}
10
11
  ._19pkpxbi{margin-top:var(--ds-space-200,1pc)}
11
- ._19pkxy5q{margin-top:var(--ds-space-400,2pc)}
12
+ ._19pku2gc{margin-top:var(--ds-space-100,8px)}
12
13
  ._1bsb1osq{width:100%}
13
- ._1bsb1w8u{width:80%}
14
14
  ._1bsb5x59{width:340px}
15
- ._1bsbvbgk{width:4pc}
16
15
  ._1e0c1txw{display:flex}
17
16
  ._1i53muej{border-top-color:var(--ds-border,#091e4224)}
18
17
  ._1reo15vq{overflow-x:hidden}
19
18
  ._1ul95x59{min-width:340px}
20
- ._2hwxutpp{margin-right:var(--ds-space-150,9pt)}
19
+ ._2hwx1ejb{margin-right:var(--ds-space-300,24px)}
21
20
  ._2lx21bp4{flex-direction:column}
22
21
  ._4cvr1h6o{align-items:center}
23
22
  ._4t3i1ul9{height:30px}
24
23
  ._4t3i1wug{height:auto}
25
- ._4t3ivbgk{height:4pc}
24
+ ._4t3i53f4{height:75pt}
26
25
  ._5ral1dfr{object-fit:cover}
27
26
  ._bfhksm61{background-color:var(--ds-background-neutral-subtle,#00000000)}
28
- ._c71l53f4{max-height:75pt}
29
27
  ._kqswstnw{position:absolute}
30
28
  ._otyrpxbi{margin-bottom:var(--ds-space-200,1pc)}
31
29
  ._s7n4jp4b{vertical-align:top}
30
+ ._u5f31ejb{padding-right:var(--ds-space-300,24px)}
32
31
  ._uwhke4h9{border-top-width:var(--ds-border-width,1px)}