@atlaskit/profilecard 19.5.5 → 19.5.7

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,18 @@
1
1
  # @atlaskit/profilecard
2
2
 
3
+ ## 19.5.7
4
+
5
+ ### Patch Changes
6
+
7
+ - [`834a98bdc7b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/834a98bdc7b) - [ECA11Y-13] Make focus ring visible for 'Give kudos' button
8
+ - Updated dependencies
9
+
10
+ ## 19.5.6
11
+
12
+ ### Patch Changes
13
+
14
+ - [`3ef90d5fc2f`](https://bitbucket.org/atlassian/atlassian-frontend/commits/3ef90d5fc2f) - Cleanup the references to version.json
15
+
3
16
  ## 19.5.5
4
17
 
5
18
  ### Patch Changes
@@ -66,7 +66,7 @@ var 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', "19.5.5");
69
+ headers.append('atl-client-version', "19.5.7");
70
70
  return headers;
71
71
  };
72
72
  exports.addHeaders = addHeaders;
@@ -15,6 +15,7 @@ var _reactIntlNext = require("react-intl-next");
15
15
  var _avatarGroup = _interopRequireDefault(require("@atlaskit/avatar-group"));
16
16
  var _loadingButton = _interopRequireDefault(require("@atlaskit/button/loading-button"));
17
17
  var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
18
+ var _focusRing = _interopRequireDefault(require("@atlaskit/focus-ring"));
18
19
  var _more = _interopRequireDefault(require("@atlaskit/icon/glyph/more"));
19
20
  var _menu = require("@atlaskit/menu");
20
21
  var _popup = _interopRequireDefault(require("@atlaskit/popup"));
@@ -122,12 +123,14 @@ var ActionButton = function ActionButton(_ref2) {
122
123
  analytics = _ref2.analytics,
123
124
  index = _ref2.index;
124
125
  var isGiveKudosActionButton = action.id === GIVE_KUDOS_ACTION_ID;
125
- var actionButton = /*#__PURE__*/_react.default.createElement(_standardButton.default, {
126
+ var actionButton = /*#__PURE__*/_react.default.createElement(_focusRing.default, {
127
+ isInset: true
128
+ }, /*#__PURE__*/_react.default.createElement(_standardButton.default, {
126
129
  key: action.id || index,
127
130
  onClick: onActionClick(action, analytics, index),
128
131
  href: action.link,
129
132
  shouldFitContainer: true
130
- }, action.label, isGiveKudosActionButton && /*#__PURE__*/_react.default.createElement(_Card.KudosBlobAnimation, null));
133
+ }, action.label, isGiveKudosActionButton && /*#__PURE__*/_react.default.createElement(_Card.AnimationWrapper, null, /*#__PURE__*/_react.default.createElement(_Card.KudosBlobAnimation, null))));
131
134
  if (isGiveKudosActionButton) {
132
135
  return /*#__PURE__*/_react.default.createElement(_Card.AnimatedKudosButton, null, actionButton);
133
136
  }
@@ -14,6 +14,7 @@ var _reactIntlNext = require("react-intl-next");
14
14
  var _analyticsNext = require("@atlaskit/analytics-next");
15
15
  var _avatar = _interopRequireDefault(require("@atlaskit/avatar"));
16
16
  var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
17
+ var _focusRing = _interopRequireDefault(require("@atlaskit/focus-ring"));
17
18
  var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
18
19
  var _colors = require("@atlaskit/theme/colors");
19
20
  var _messages = _interopRequireDefault(require("../../messages"));
@@ -161,7 +162,9 @@ var Actions = function Actions(_ref) {
161
162
  "data-testid": "profilecard-actions"
162
163
  }, regularActions.map(function (action, index) {
163
164
  var isKudos = action.id === GIVE_KUDOS_ACTION_ID;
164
- var button = /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
165
+ var button = /*#__PURE__*/_react.default.createElement(_focusRing.default, {
166
+ isInset: true
167
+ }, /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
165
168
  appearance: "default",
166
169
  key: action.id || index,
167
170
  onClick: function onClick(event) {
@@ -171,7 +174,7 @@ var Actions = function Actions(_ref) {
171
174
  return onActionClick(action, args, event, index);
172
175
  },
173
176
  href: action.link
174
- }, action.label, isKudos && /*#__PURE__*/_react.default.createElement(_Card.KudosBlobAnimation, null));
177
+ }, action.label, isKudos && /*#__PURE__*/_react.default.createElement(_Card.AnimationWrapper, null, /*#__PURE__*/_react.default.createElement(_Card.KudosBlobAnimation, null))));
175
178
  if (isKudos) {
176
179
  return /*#__PURE__*/_react.default.createElement(_Card.AnimatedKudosButton, null, button);
177
180
  }
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.SpinnerContainer = exports.ProfileImage = exports.OverflowActionButtonsWrapper = exports.LozengeWrapper = exports.KudosBlobAnimationStyle = exports.KudosBlobAnimation = exports.JobTitleLabel = exports.FullNameLabel = exports.DisabledInfo = exports.DetailsLabelText = exports.DetailsLabelIcon = exports.DetailsLabel = exports.DetailsGroup = exports.CustomLozengeContainer = exports.CardWrapper = exports.CardContent = exports.CardContainerEmpty = exports.CardContainer = exports.AppTitleLabel = exports.AnimatedKudosButton = exports.ActionsFlexSpacer = exports.ActionButtonGroup = void 0;
7
+ exports.SpinnerContainer = exports.ProfileImage = exports.OverflowActionButtonsWrapper = exports.LozengeWrapper = exports.KudosBlobAnimationStyle = exports.KudosBlobAnimation = exports.JobTitleLabel = exports.FullNameLabel = exports.DisabledInfo = exports.DetailsLabelText = exports.DetailsLabelIcon = exports.DetailsLabel = exports.DetailsGroup = exports.CustomLozengeContainer = exports.CardWrapper = exports.CardContent = exports.CardContainer = exports.AppTitleLabel = exports.AnimationWrapper = exports.AnimatedKudosButton = exports.ActionsFlexSpacer = exports.ActionButtonGroup = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
10
  var _react = _interopRequireDefault(require("react"));
@@ -17,16 +17,14 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
17
17
  var getFullNameMargin = function getFullNameMargin(props) {
18
18
  return props.noMeta ? "".concat((0, _constants.gridSize)() * 4.5, "px 0 ").concat((0, _constants.gridSize)() * 1.5, "px 0") : "".concat((0, _constants.gridSize)() * 1.5, "px 0 0 0");
19
19
  };
20
- var CardContainerEmpty = _styled.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)([""])));
21
- exports.CardContainerEmpty = CardContainerEmpty;
22
- var CardWrapper = _styled.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n background-color: ", ";\n border-radius: ", "px;\n width: ", "px;\n"])), _constants2.bgColor, _constants.borderRadius, (0, _constants.gridSize)() * 45);
20
+ var CardWrapper = _styled.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n background-color: ", ";\n border-radius: ", "px;\n width: ", "px;\n"])), _constants2.bgColor, _constants.borderRadius, (0, _constants.gridSize)() * 45);
23
21
  exports.CardWrapper = CardWrapper;
24
- var ProfileImage = _styled.default.div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n position: absolute;\n top: ", ";\n left: ", ";\n"])), "var(--ds-space-300, 24px)", "var(--ds-space-300, 24px)");
22
+ var ProfileImage = _styled.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n position: absolute;\n top: ", ";\n left: ", ";\n"])), "var(--ds-space-300, 24px)", "var(--ds-space-300, 24px)");
25
23
  exports.ProfileImage = ProfileImage;
26
- var ActionsFlexSpacer = _styled.default.div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n flex: 1 0 auto;\n"])));
24
+ var ActionsFlexSpacer = _styled.default.div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n flex: 1 0 auto;\n"])));
27
25
  exports.ActionsFlexSpacer = ActionsFlexSpacer;
28
- var kudosButtonAnimationTransformation = (0, _react2.keyframes)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["{\n 0% { transform: translate(-80px, -50px); }\n 100% { transform: translate(90px, -70px); }\n}"])));
29
- var KudosBlobAnimationStyle = _styled.default.div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n display: none;\n height: 150px;\n width: 150px;\n z-index: -1;\n position: absolute;\n animation-name: ", ";\n animation-iteration-count: 1;\n animation-duration: 3s;\n background-image: radial-gradient(\n circle,\n ", " 0%,\n ", " 25%,\n transparent 50%\n );\n overflow: hidden;\n"])), kudosButtonAnimationTransformation, "var(--ds-background-information-pressed, #85B8FF)", "var(--ds-background-discovery-pressed, #B8ACF6)");
26
+ var kudosButtonAnimationTransformation = (0, _react2.keyframes)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n 0% { transform: translate(-80px, -50px); }\n 100% { transform: translate(90px, -70px); }\n"])));
27
+ var KudosBlobAnimationStyle = _styled.default.div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n display: none;\n height: 150px;\n width: 150px;\n z-index: -1;\n position: absolute;\n top: ", "em;\n animation-name: ", ";\n animation-iteration-count: 1;\n animation-duration: 3s;\n background-image: radial-gradient(\n circle,\n ", " 0%,\n ", " 25%,\n transparent 50%\n );\n overflow: hidden;\n"])), (0, _constants.gridSize)() * 4 / (0, _constants.fontSize)(), kudosButtonAnimationTransformation, "var(--ds-background-information-pressed, #85B8FF)", "var(--ds-background-discovery-pressed, #B8ACF6)");
30
28
  exports.KudosBlobAnimationStyle = KudosBlobAnimationStyle;
31
29
  var KudosBlobAnimation = function KudosBlobAnimation(props) {
32
30
  return /*#__PURE__*/_react.default.createElement(KudosBlobAnimationStyle, (0, _extends2.default)({
@@ -34,11 +32,13 @@ var KudosBlobAnimation = function KudosBlobAnimation(props) {
34
32
  }, props));
35
33
  };
36
34
  exports.KudosBlobAnimation = KudosBlobAnimation;
37
- var AnimatedKudosButton = _styled.default.div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["\n margin-left: ", ";\n\n /* Need babel-plugin-emotion to use component selector */\n /* Previously with styled-components: &:hover {KudosBlobAnimation} { */\n &:hover .kudos-blob-animation {\n display: block;\n }\n\n button,\n a {\n clip-path: inset(0px 0px 0px 0px round ", "px);\n }\n overflow: hidden;\n"])), "var(--ds-space-100, 8px)", _constants.borderRadius);
35
+ var AnimationWrapper = _styled.default.div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n clip-path: inset(0px 0px 0px 0px round ", "px);\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n"])), _constants.borderRadius);
36
+ exports.AnimationWrapper = AnimationWrapper;
37
+ var AnimatedKudosButton = _styled.default.div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["\n margin-left: ", ";\n\n /* Need babel-plugin-emotion to use component selector */\n /* Previously with styled-components: &:hover {KudosBlobAnimation} { */\n &:focus-within .kudos-blob-animation,\n &:focus .kudos-blob-animation,\n &:hover .kudos-blob-animation {\n display: block;\n }\n"])), "var(--ds-space-100, 8px)");
38
38
  exports.AnimatedKudosButton = AnimatedKudosButton;
39
- var ActionButtonGroup = _styled.default.div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["\n user-select: none;\n margin: ", " 0 0 0;\n text-align: right;\n display: flex;\n justify-content: flex-end;\n\n button,\n a,\n span {\n margin-left: ", ";\n\n &:first-child {\n margin-left: 0;\n }\n }\n"])), "var(--ds-space-200, 16px)", "var(--ds-space-100, 8px)");
39
+ var ActionButtonGroup = _styled.default.div(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["\n user-select: none;\n margin: ", " 0 0 0;\n text-align: right;\n display: flex;\n justify-content: flex-end;\n\n button,\n a {\n position: relative;\n }\n\n button,\n a,\n span {\n margin-left: ", ";\n\n &:first-child {\n margin-left: 0;\n }\n }\n\n a,\n button {\n &:focus {\n outline-color: ", ";\n outline-offset: ", ";\n outline-style: solid;\n outline-width: ", ";\n }\n }\n"])), "var(--ds-space-200, 16px)", "var(--ds-space-100, 8px)", "var(--ds-border-focused, ".concat(_colors.B200, ")"), "var(--ds-border-width, 2px)", "var(--ds-border-width, 2px)");
40
40
  exports.ActionButtonGroup = ActionButtonGroup;
41
- var OverflowActionButtonsWrapper = _styled.default.div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["\n display: inline-block;\n width: 32px;\n height: 32px;\n margin-left: ", ";\n"])), "var(--ds-space-100, 8px)");
41
+ var OverflowActionButtonsWrapper = _styled.default.div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["\n display: inline-block;\n width: 32px;\n height: 32px;\n margin-left: ", ";\n\n button {\n &:focus {\n outline-color: ", ";\n outline-offset: ", ";\n outline-style: solid;\n outline-width: ", ";\n }\n }\n"])), "var(--ds-space-100, 8px)", "var(--ds-border-focused, ".concat(_colors.B200, ")"), "var(--ds-border-width, 2px)", "var(--ds-border-width, 2px)");
42
42
  exports.OverflowActionButtonsWrapper = OverflowActionButtonsWrapper;
43
43
  var CardContent = _styled.default.div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: column;\n min-height: ", "px;\n"])), (0, _constants.gridSize)() * 17);
44
44
 
@@ -44,7 +44,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
44
44
  actionSubjectId: actionSubjectId,
45
45
  attributes: _objectSpread(_objectSpread({
46
46
  packageName: "@atlaskit/profilecard",
47
- packageVersion: "19.5.5"
47
+ packageVersion: "19.5.7"
48
48
  }, attributes), {}, {
49
49
  firedAt: Math.round((0, _performance.getPageTime)())
50
50
  })
@@ -77,7 +77,7 @@ export const addHeaders = headers => {
77
77
  headers.append('X-ExperimentalApi', 'teams-beta');
78
78
  headers.append('X-ExperimentalApi', 'team-members-beta');
79
79
  headers.append('atl-client-name', "@atlaskit/profilecard");
80
- headers.append('atl-client-version', "19.5.5");
80
+ headers.append('atl-client-version', "19.5.7");
81
81
  return headers;
82
82
  };
83
83
  export async function getTeamFromAGG(url, teamId, siteId) {
@@ -4,12 +4,13 @@ import { FormattedMessage } from 'react-intl-next';
4
4
  import AvatarGroup from '@atlaskit/avatar-group';
5
5
  import LoadingButton from '@atlaskit/button/loading-button';
6
6
  import Button from '@atlaskit/button/standard-button';
7
+ import FocusRing from '@atlaskit/focus-ring';
7
8
  import MoreIcon from '@atlaskit/icon/glyph/more';
8
9
  import { LinkItem, MenuGroup } from '@atlaskit/menu';
9
10
  import Popup from '@atlaskit/popup';
10
11
  import { layers } from '@atlaskit/theme/constants';
11
12
  import messages from '../../messages';
12
- import { AnimatedKudosButton, KudosBlobAnimation } from '../../styled/Card';
13
+ import { AnimatedKudosButton, AnimationWrapper, KudosBlobAnimation } from '../../styled/Card';
13
14
  import { ErrorWrapper, TeamErrorText, TeamErrorTitle } from '../../styled/Error';
14
15
  import { ActionButtons, AvatarSection, CardContent, CardHeader, CardWrapper, Description, DescriptionWrapper, MemberCount, MoreButton, TeamName, WrappedButton } from '../../styled/TeamCard';
15
16
  import { actionClicked, errorRetryClicked, moreActionsClicked, moreMembersClicked, profileCardRendered, teamAvatarClicked } from '../../util/analytics';
@@ -102,12 +103,14 @@ const ActionButton = ({
102
103
  index
103
104
  }) => {
104
105
  const isGiveKudosActionButton = action.id === GIVE_KUDOS_ACTION_ID;
105
- const actionButton = /*#__PURE__*/React.createElement(Button, {
106
+ const actionButton = /*#__PURE__*/React.createElement(FocusRing, {
107
+ isInset: true
108
+ }, /*#__PURE__*/React.createElement(Button, {
106
109
  key: action.id || index,
107
110
  onClick: onActionClick(action, analytics, index),
108
111
  href: action.link,
109
112
  shouldFitContainer: true
110
- }, action.label, isGiveKudosActionButton && /*#__PURE__*/React.createElement(KudosBlobAnimation, null));
113
+ }, action.label, isGiveKudosActionButton && /*#__PURE__*/React.createElement(AnimationWrapper, null, /*#__PURE__*/React.createElement(KudosBlobAnimation, null))));
111
114
  if (isGiveKudosActionButton) {
112
115
  return /*#__PURE__*/React.createElement(AnimatedKudosButton, null, actionButton);
113
116
  }
@@ -4,10 +4,11 @@ import { FormattedMessage } from 'react-intl-next';
4
4
  import { withAnalyticsEvents } from '@atlaskit/analytics-next';
5
5
  import Avatar from '@atlaskit/avatar';
6
6
  import Button from '@atlaskit/button/custom-theme-button';
7
+ import FocusRing from '@atlaskit/focus-ring';
7
8
  import Spinner from '@atlaskit/spinner';
8
9
  import { N0 } from '@atlaskit/theme/colors';
9
10
  import messages from '../../messages';
10
- import { ActionButtonGroup, ActionsFlexSpacer, AnimatedKudosButton, CardContainer, CardContent, CardWrapper, KudosBlobAnimation, ProfileImage, SpinnerContainer } from '../../styled/Card';
11
+ import { ActionButtonGroup, ActionsFlexSpacer, AnimatedKudosButton, AnimationWrapper, CardContainer, CardContent, CardWrapper, KudosBlobAnimation, ProfileImage, SpinnerContainer } from '../../styled/Card';
11
12
  import { actionClicked, fireEvent, profileCardRendered } from '../../util/analytics';
12
13
  import { isBasicClick } from '../../util/click';
13
14
  import { getPageTime } from '../../util/performance';
@@ -146,12 +147,14 @@ const Actions = ({
146
147
  "data-testid": "profilecard-actions"
147
148
  }, regularActions.map((action, index) => {
148
149
  const isKudos = action.id === GIVE_KUDOS_ACTION_ID;
149
- const button = /*#__PURE__*/React.createElement(Button, {
150
+ const button = /*#__PURE__*/React.createElement(FocusRing, {
151
+ isInset: true
152
+ }, /*#__PURE__*/React.createElement(Button, {
150
153
  appearance: "default",
151
154
  key: action.id || index,
152
155
  onClick: (event, ...args) => onActionClick(action, args, event, index),
153
156
  href: action.link
154
- }, action.label, isKudos && /*#__PURE__*/React.createElement(KudosBlobAnimation, null));
157
+ }, action.label, isKudos && /*#__PURE__*/React.createElement(AnimationWrapper, null, /*#__PURE__*/React.createElement(KudosBlobAnimation, null))));
155
158
  if (isKudos) {
156
159
  return /*#__PURE__*/React.createElement(AnimatedKudosButton, null, button);
157
160
  }
@@ -2,11 +2,10 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import React from 'react';
3
3
  import { keyframes } from '@emotion/react';
4
4
  import styled from '@emotion/styled';
5
- import { N50A, N60A } from '@atlaskit/theme/colors';
6
- import { borderRadius, fontSizeSmall, gridSize } from '@atlaskit/theme/constants';
5
+ import { B200, N50A, N60A } from '@atlaskit/theme/colors';
6
+ import { borderRadius, fontSize, fontSizeSmall, gridSize } from '@atlaskit/theme/constants';
7
7
  import { appLabelBgColor, appLabelTextColor, bgColor, headerBgColor, headerBgColorDisabledUser, headerTextColor, headerTextColorInactive, labelIconColor, labelTextColor } from './constants';
8
8
  const getFullNameMargin = props => props.noMeta ? `${gridSize() * 4.5}px 0 ${gridSize() * 1.5}px 0` : `${gridSize() * 1.5}px 0 0 0`;
9
- export const CardContainerEmpty = styled.div``;
10
9
  export const CardWrapper = styled.div`
11
10
  background-color: ${bgColor};
12
11
  border-radius: ${borderRadius}px;
@@ -20,16 +19,17 @@ export const ProfileImage = styled.div`
20
19
  export const ActionsFlexSpacer = styled.div`
21
20
  flex: 1 0 auto;
22
21
  `;
23
- const kudosButtonAnimationTransformation = keyframes`{
22
+ const kudosButtonAnimationTransformation = keyframes`
24
23
  0% { transform: translate(-80px, -50px); }
25
24
  100% { transform: translate(90px, -70px); }
26
- }`;
25
+ `;
27
26
  export const KudosBlobAnimationStyle = styled.div`
28
27
  display: none;
29
28
  height: 150px;
30
29
  width: 150px;
31
30
  z-index: -1;
32
31
  position: absolute;
32
+ top: ${gridSize() * 4 / fontSize()}em;
33
33
  animation-name: ${kudosButtonAnimationTransformation};
34
34
  animation-iteration-count: 1;
35
35
  animation-duration: 3s;
@@ -44,20 +44,24 @@ export const KudosBlobAnimationStyle = styled.div`
44
44
  export const KudosBlobAnimation = props => /*#__PURE__*/React.createElement(KudosBlobAnimationStyle, _extends({
45
45
  className: "kudos-blob-animation"
46
46
  }, props));
47
+ export const AnimationWrapper = styled.div`
48
+ clip-path: inset(0px 0px 0px 0px round ${borderRadius}px);
49
+ position: absolute;
50
+ top: 0;
51
+ left: 0;
52
+ bottom: 0;
53
+ right: 0;
54
+ `;
47
55
  export const AnimatedKudosButton = styled.div`
48
56
  margin-left: ${"var(--ds-space-100, 8px)"};
49
57
 
50
58
  /* Need babel-plugin-emotion to use component selector */
51
59
  /* Previously with styled-components: &:hover {KudosBlobAnimation} { */
60
+ &:focus-within .kudos-blob-animation,
61
+ &:focus .kudos-blob-animation,
52
62
  &:hover .kudos-blob-animation {
53
63
  display: block;
54
64
  }
55
-
56
- button,
57
- a {
58
- clip-path: inset(0px 0px 0px 0px round ${borderRadius}px);
59
- }
60
- overflow: hidden;
61
65
  `;
62
66
  export const ActionButtonGroup = styled.div`
63
67
  user-select: none;
@@ -66,6 +70,11 @@ export const ActionButtonGroup = styled.div`
66
70
  display: flex;
67
71
  justify-content: flex-end;
68
72
 
73
+ button,
74
+ a {
75
+ position: relative;
76
+ }
77
+
69
78
  button,
70
79
  a,
71
80
  span {
@@ -75,12 +84,31 @@ export const ActionButtonGroup = styled.div`
75
84
  margin-left: 0;
76
85
  }
77
86
  }
87
+
88
+ a,
89
+ button {
90
+ &:focus {
91
+ outline-color: ${`var(--ds-border-focused, ${B200})`};
92
+ outline-offset: ${"var(--ds-border-width, 2px)"};
93
+ outline-style: solid;
94
+ outline-width: ${"var(--ds-border-width, 2px)"};
95
+ }
96
+ }
78
97
  `;
79
98
  export const OverflowActionButtonsWrapper = styled.div`
80
99
  display: inline-block;
81
100
  width: 32px;
82
101
  height: 32px;
83
102
  margin-left: ${"var(--ds-space-100, 8px)"};
103
+
104
+ button {
105
+ &:focus {
106
+ outline-color: ${`var(--ds-border-focused, ${B200})`};
107
+ outline-offset: ${"var(--ds-border-width, 2px)"};
108
+ outline-style: solid;
109
+ outline-width: ${"var(--ds-border-width, 2px)"};
110
+ }
111
+ }
84
112
  `;
85
113
  export const CardContent = styled.div`
86
114
  display: flex;
@@ -31,7 +31,7 @@ const createEvent = (eventType, action, actionSubject, actionSubjectId, attribut
31
31
  actionSubjectId,
32
32
  attributes: {
33
33
  packageName: "@atlaskit/profilecard",
34
- packageVersion: "19.5.5",
34
+ packageVersion: "19.5.7",
35
35
  ...attributes,
36
36
  firedAt: Math.round(getPageTime())
37
37
  }
@@ -51,7 +51,7 @@ export var addHeaders = function addHeaders(headers) {
51
51
  headers.append('X-ExperimentalApi', 'teams-beta');
52
52
  headers.append('X-ExperimentalApi', 'team-members-beta');
53
53
  headers.append('atl-client-name', "@atlaskit/profilecard");
54
- headers.append('atl-client-version', "19.5.5");
54
+ headers.append('atl-client-version', "19.5.7");
55
55
  return headers;
56
56
  };
57
57
  export function getTeamFromAGG(_x, _x2, _x3) {
@@ -9,12 +9,13 @@ import { FormattedMessage } from 'react-intl-next';
9
9
  import AvatarGroup from '@atlaskit/avatar-group';
10
10
  import LoadingButton from '@atlaskit/button/loading-button';
11
11
  import Button from '@atlaskit/button/standard-button';
12
+ import FocusRing from '@atlaskit/focus-ring';
12
13
  import MoreIcon from '@atlaskit/icon/glyph/more';
13
14
  import { LinkItem, MenuGroup } from '@atlaskit/menu';
14
15
  import Popup from '@atlaskit/popup';
15
16
  import { layers } from '@atlaskit/theme/constants';
16
17
  import messages from '../../messages';
17
- import { AnimatedKudosButton, KudosBlobAnimation } from '../../styled/Card';
18
+ import { AnimatedKudosButton, AnimationWrapper, KudosBlobAnimation } from '../../styled/Card';
18
19
  import { ErrorWrapper, TeamErrorText, TeamErrorTitle } from '../../styled/Error';
19
20
  import { ActionButtons, AvatarSection, CardContent, CardHeader, CardWrapper, Description, DescriptionWrapper, MemberCount, MoreButton, TeamName, WrappedButton } from '../../styled/TeamCard';
20
21
  import { actionClicked, errorRetryClicked, moreActionsClicked, moreMembersClicked, profileCardRendered, teamAvatarClicked } from '../../util/analytics';
@@ -112,12 +113,14 @@ var ActionButton = function ActionButton(_ref2) {
112
113
  analytics = _ref2.analytics,
113
114
  index = _ref2.index;
114
115
  var isGiveKudosActionButton = action.id === GIVE_KUDOS_ACTION_ID;
115
- var actionButton = /*#__PURE__*/React.createElement(Button, {
116
+ var actionButton = /*#__PURE__*/React.createElement(FocusRing, {
117
+ isInset: true
118
+ }, /*#__PURE__*/React.createElement(Button, {
116
119
  key: action.id || index,
117
120
  onClick: onActionClick(action, analytics, index),
118
121
  href: action.link,
119
122
  shouldFitContainer: true
120
- }, action.label, isGiveKudosActionButton && /*#__PURE__*/React.createElement(KudosBlobAnimation, null));
123
+ }, action.label, isGiveKudosActionButton && /*#__PURE__*/React.createElement(AnimationWrapper, null, /*#__PURE__*/React.createElement(KudosBlobAnimation, null))));
121
124
  if (isGiveKudosActionButton) {
122
125
  return /*#__PURE__*/React.createElement(AnimatedKudosButton, null, actionButton);
123
126
  }
@@ -6,10 +6,11 @@ import { FormattedMessage } from 'react-intl-next';
6
6
  import { withAnalyticsEvents } from '@atlaskit/analytics-next';
7
7
  import Avatar from '@atlaskit/avatar';
8
8
  import Button from '@atlaskit/button/custom-theme-button';
9
+ import FocusRing from '@atlaskit/focus-ring';
9
10
  import Spinner from '@atlaskit/spinner';
10
11
  import { N0 } from '@atlaskit/theme/colors';
11
12
  import messages from '../../messages';
12
- import { ActionButtonGroup, ActionsFlexSpacer, AnimatedKudosButton, CardContainer, CardContent, CardWrapper, KudosBlobAnimation, ProfileImage, SpinnerContainer } from '../../styled/Card';
13
+ import { ActionButtonGroup, ActionsFlexSpacer, AnimatedKudosButton, AnimationWrapper, CardContainer, CardContent, CardWrapper, KudosBlobAnimation, ProfileImage, SpinnerContainer } from '../../styled/Card';
13
14
  import { actionClicked, fireEvent, profileCardRendered } from '../../util/analytics';
14
15
  import { isBasicClick } from '../../util/click';
15
16
  import { getPageTime } from '../../util/performance';
@@ -150,7 +151,9 @@ var Actions = function Actions(_ref) {
150
151
  "data-testid": "profilecard-actions"
151
152
  }, regularActions.map(function (action, index) {
152
153
  var isKudos = action.id === GIVE_KUDOS_ACTION_ID;
153
- var button = /*#__PURE__*/React.createElement(Button, {
154
+ var button = /*#__PURE__*/React.createElement(FocusRing, {
155
+ isInset: true
156
+ }, /*#__PURE__*/React.createElement(Button, {
154
157
  appearance: "default",
155
158
  key: action.id || index,
156
159
  onClick: function onClick(event) {
@@ -160,7 +163,7 @@ var Actions = function Actions(_ref) {
160
163
  return onActionClick(action, args, event, index);
161
164
  },
162
165
  href: action.link
163
- }, action.label, isKudos && /*#__PURE__*/React.createElement(KudosBlobAnimation, null));
166
+ }, action.label, isKudos && /*#__PURE__*/React.createElement(AnimationWrapper, null, /*#__PURE__*/React.createElement(KudosBlobAnimation, null))));
164
167
  if (isKudos) {
165
168
  return /*#__PURE__*/React.createElement(AnimatedKudosButton, null, button);
166
169
  }
@@ -4,26 +4,26 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
4
4
  import React from 'react';
5
5
  import { keyframes } from '@emotion/react';
6
6
  import styled from '@emotion/styled';
7
- import { N50A, N60A } from '@atlaskit/theme/colors';
8
- import { borderRadius, fontSizeSmall, gridSize } from '@atlaskit/theme/constants';
7
+ import { B200, N50A, N60A } from '@atlaskit/theme/colors';
8
+ import { borderRadius, fontSize, fontSizeSmall, gridSize } from '@atlaskit/theme/constants';
9
9
  import { appLabelBgColor, appLabelTextColor, bgColor, headerBgColor, headerBgColorDisabledUser, headerTextColor, headerTextColorInactive, labelIconColor, labelTextColor } from './constants';
10
10
  var getFullNameMargin = function getFullNameMargin(props) {
11
11
  return props.noMeta ? "".concat(gridSize() * 4.5, "px 0 ").concat(gridSize() * 1.5, "px 0") : "".concat(gridSize() * 1.5, "px 0 0 0");
12
12
  };
13
- export var CardContainerEmpty = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral([""])));
14
- export var CardWrapper = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n background-color: ", ";\n border-radius: ", "px;\n width: ", "px;\n"])), bgColor, borderRadius, gridSize() * 45);
15
- export var ProfileImage = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n position: absolute;\n top: ", ";\n left: ", ";\n"])), "var(--ds-space-300, 24px)", "var(--ds-space-300, 24px)");
16
- export var ActionsFlexSpacer = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n flex: 1 0 auto;\n"])));
17
- var kudosButtonAnimationTransformation = keyframes(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["{\n 0% { transform: translate(-80px, -50px); }\n 100% { transform: translate(90px, -70px); }\n}"])));
18
- export var KudosBlobAnimationStyle = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n display: none;\n height: 150px;\n width: 150px;\n z-index: -1;\n position: absolute;\n animation-name: ", ";\n animation-iteration-count: 1;\n animation-duration: 3s;\n background-image: radial-gradient(\n circle,\n ", " 0%,\n ", " 25%,\n transparent 50%\n );\n overflow: hidden;\n"])), kudosButtonAnimationTransformation, "var(--ds-background-information-pressed, #85B8FF)", "var(--ds-background-discovery-pressed, #B8ACF6)");
13
+ export var CardWrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n background-color: ", ";\n border-radius: ", "px;\n width: ", "px;\n"])), bgColor, borderRadius, gridSize() * 45);
14
+ export var ProfileImage = styled.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n position: absolute;\n top: ", ";\n left: ", ";\n"])), "var(--ds-space-300, 24px)", "var(--ds-space-300, 24px)");
15
+ export var ActionsFlexSpacer = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n flex: 1 0 auto;\n"])));
16
+ var kudosButtonAnimationTransformation = keyframes(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n 0% { transform: translate(-80px, -50px); }\n 100% { transform: translate(90px, -70px); }\n"])));
17
+ export var KudosBlobAnimationStyle = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n display: none;\n height: 150px;\n width: 150px;\n z-index: -1;\n position: absolute;\n top: ", "em;\n animation-name: ", ";\n animation-iteration-count: 1;\n animation-duration: 3s;\n background-image: radial-gradient(\n circle,\n ", " 0%,\n ", " 25%,\n transparent 50%\n );\n overflow: hidden;\n"])), gridSize() * 4 / fontSize(), kudosButtonAnimationTransformation, "var(--ds-background-information-pressed, #85B8FF)", "var(--ds-background-discovery-pressed, #B8ACF6)");
19
18
  export var KudosBlobAnimation = function KudosBlobAnimation(props) {
20
19
  return /*#__PURE__*/React.createElement(KudosBlobAnimationStyle, _extends({
21
20
  className: "kudos-blob-animation"
22
21
  }, props));
23
22
  };
24
- export var AnimatedKudosButton = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n margin-left: ", ";\n\n /* Need babel-plugin-emotion to use component selector */\n /* Previously with styled-components: &:hover {KudosBlobAnimation} { */\n &:hover .kudos-blob-animation {\n display: block;\n }\n\n button,\n a {\n clip-path: inset(0px 0px 0px 0px round ", "px);\n }\n overflow: hidden;\n"])), "var(--ds-space-100, 8px)", borderRadius);
25
- export var ActionButtonGroup = styled.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n user-select: none;\n margin: ", " 0 0 0;\n text-align: right;\n display: flex;\n justify-content: flex-end;\n\n button,\n a,\n span {\n margin-left: ", ";\n\n &:first-child {\n margin-left: 0;\n }\n }\n"])), "var(--ds-space-200, 16px)", "var(--ds-space-100, 8px)");
26
- export var OverflowActionButtonsWrapper = styled.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: inline-block;\n width: 32px;\n height: 32px;\n margin-left: ", ";\n"])), "var(--ds-space-100, 8px)");
23
+ export var AnimationWrapper = styled.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n clip-path: inset(0px 0px 0px 0px round ", "px);\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n"])), borderRadius);
24
+ export var AnimatedKudosButton = styled.div(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n margin-left: ", ";\n\n /* Need babel-plugin-emotion to use component selector */\n /* Previously with styled-components: &:hover {KudosBlobAnimation} { */\n &:focus-within .kudos-blob-animation,\n &:focus .kudos-blob-animation,\n &:hover .kudos-blob-animation {\n display: block;\n }\n"])), "var(--ds-space-100, 8px)");
25
+ export var ActionButtonGroup = styled.div(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["\n user-select: none;\n margin: ", " 0 0 0;\n text-align: right;\n display: flex;\n justify-content: flex-end;\n\n button,\n a {\n position: relative;\n }\n\n button,\n a,\n span {\n margin-left: ", ";\n\n &:first-child {\n margin-left: 0;\n }\n }\n\n a,\n button {\n &:focus {\n outline-color: ", ";\n outline-offset: ", ";\n outline-style: solid;\n outline-width: ", ";\n }\n }\n"])), "var(--ds-space-200, 16px)", "var(--ds-space-100, 8px)", "var(--ds-border-focused, ".concat(B200, ")"), "var(--ds-border-width, 2px)", "var(--ds-border-width, 2px)");
26
+ export var OverflowActionButtonsWrapper = styled.div(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["\n display: inline-block;\n width: 32px;\n height: 32px;\n margin-left: ", ";\n\n button {\n &:focus {\n outline-color: ", ";\n outline-offset: ", ";\n outline-style: solid;\n outline-width: ", ";\n }\n }\n"])), "var(--ds-space-100, 8px)", "var(--ds-border-focused, ".concat(B200, ")"), "var(--ds-border-width, 2px)", "var(--ds-border-width, 2px)");
27
27
  export var CardContent = styled.div(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n min-height: ", "px;\n"])), gridSize() * 17);
28
28
 
29
29
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
@@ -38,7 +38,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
38
38
  actionSubjectId: actionSubjectId,
39
39
  attributes: _objectSpread(_objectSpread({
40
40
  packageName: "@atlaskit/profilecard",
41
- packageVersion: "19.5.5"
41
+ packageVersion: "19.5.7"
42
42
  }, attributes), {}, {
43
43
  firedAt: Math.round(getPageTime())
44
44
  })
@@ -3,10 +3,6 @@ interface FullNameLabelProps {
3
3
  noMeta?: boolean;
4
4
  isDisabledAccount?: boolean;
5
5
  }
6
- export declare const CardContainerEmpty: import("@emotion/styled").StyledComponent<{
7
- theme?: import("@emotion/react").Theme | undefined;
8
- as?: React.ElementType<any> | undefined;
9
- }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
10
6
  export declare const CardWrapper: import("@emotion/styled").StyledComponent<{
11
7
  theme?: import("@emotion/react").Theme | undefined;
12
8
  as?: React.ElementType<any> | undefined;
@@ -24,6 +20,10 @@ export declare const KudosBlobAnimationStyle: import("@emotion/styled").StyledCo
24
20
  as?: React.ElementType<any> | undefined;
25
21
  }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
26
22
  export declare const KudosBlobAnimation: React.FC;
23
+ export declare const AnimationWrapper: import("@emotion/styled").StyledComponent<{
24
+ theme?: import("@emotion/react").Theme | undefined;
25
+ as?: React.ElementType<any> | undefined;
26
+ }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
27
27
  export declare const AnimatedKudosButton: import("@emotion/styled").StyledComponent<{
28
28
  theme?: import("@emotion/react").Theme | undefined;
29
29
  as?: React.ElementType<any> | undefined;
@@ -3,10 +3,6 @@ interface FullNameLabelProps {
3
3
  noMeta?: boolean;
4
4
  isDisabledAccount?: boolean;
5
5
  }
6
- export declare const CardContainerEmpty: import("@emotion/styled").StyledComponent<{
7
- theme?: import("@emotion/react").Theme | undefined;
8
- as?: React.ElementType<any> | undefined;
9
- }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
10
6
  export declare const CardWrapper: import("@emotion/styled").StyledComponent<{
11
7
  theme?: import("@emotion/react").Theme | undefined;
12
8
  as?: React.ElementType<any> | undefined;
@@ -24,6 +20,10 @@ export declare const KudosBlobAnimationStyle: import("@emotion/styled").StyledCo
24
20
  as?: React.ElementType<any> | undefined;
25
21
  }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
26
22
  export declare const KudosBlobAnimation: React.FC;
23
+ export declare const AnimationWrapper: import("@emotion/styled").StyledComponent<{
24
+ theme?: import("@emotion/react").Theme | undefined;
25
+ as?: React.ElementType<any> | undefined;
26
+ }, React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
27
27
  export declare const AnimatedKudosButton: import("@emotion/styled").StyledComponent<{
28
28
  theme?: import("@emotion/react").Theme | undefined;
29
29
  as?: React.ElementType<any> | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/profilecard",
3
- "version": "19.5.5",
3
+ "version": "19.5.7",
4
4
  "description": "A React component to display a card with user information.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -42,7 +42,7 @@
42
42
  "lint": "(cd ../../.. && yarn eslint 'packages/people-and-teams/profilecard/**/*.{ts,tsx}')",
43
43
  "test": "(cd ../../.. && yarn test 'packages/people-and-teams/profilecard')",
44
44
  "test:watch": "(cd ../../.. && yarn test 'packages/people-and-teams/profilecard' --watch)",
45
- "test:coverage": "(cd ../../.. && yarn test 'packages/people-and-teams/profilecard/src' --coverage --collectCoverageFrom='[\"packages/people-and-teams/profilecard/src/**\", \"!packages/people-and-teams/profilecard/src/__tests__/**\", \"!packages/people-and-teams/profilecard/src/version.json\", \"!packages/people-and-teams/profilecard/src/i18n/**\", \"!packages/people-and-teams/profilecard/src/mocks/**\"]')",
45
+ "test:coverage": "(cd ../../.. && yarn test 'packages/people-and-teams/profilecard/src' --coverage --collectCoverageFrom='[\"packages/people-and-teams/profilecard/src/**\", \"!packages/people-and-teams/profilecard/src/__tests__/**\", \"!packages/people-and-teams/profilecard/src/i18n/**\", \"!packages/people-and-teams/profilecard/src/mocks/**\"]')",
46
46
  "typecheck": "NODE_OPTIONS=--max-old-space-size=4096 tsc --noEmit --project ./tsconfig.json"
47
47
  },
48
48
  "config": {
@@ -51,10 +51,11 @@
51
51
  "dependencies": {
52
52
  "@atlaskit/analytics-next": "^9.1.0",
53
53
  "@atlaskit/avatar": "^21.3.0",
54
- "@atlaskit/avatar-group": "^9.3.0",
54
+ "@atlaskit/avatar-group": "^9.4.0",
55
55
  "@atlaskit/button": "^16.9.0",
56
56
  "@atlaskit/dropdown-menu": "^11.11.0",
57
57
  "@atlaskit/empty-state": "^7.6.0",
58
+ "@atlaskit/focus-ring": "^1.3.4",
58
59
  "@atlaskit/give-kudos": "^2.0.0",
59
60
  "@atlaskit/icon": "^21.12.0",
60
61
  "@atlaskit/lozenge": "^11.4.0",
@@ -1,4 +0,0 @@
1
- {
2
- "name": "@atlaskit/profilecard",
3
- "version": "19.5.5"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "name": "@atlaskit/profilecard",
3
- "version": "19.5.5"
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "name": "@atlaskit/profilecard",
3
- "version": "19.5.5"
4
- }