@atlaskit/smart-card 21.0.0 → 21.0.3

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 (49) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/version.json +1 -1
  3. package/dist/cjs/view/FlexibleCard/components/actions/action/action-button/index.js +87 -0
  4. package/dist/cjs/view/FlexibleCard/components/actions/action/action-button/types.js +5 -0
  5. package/dist/cjs/view/FlexibleCard/components/actions/action/action-dropdown-item/index.js +31 -0
  6. package/dist/cjs/view/FlexibleCard/components/actions/action/action-dropdown-item/types.js +5 -0
  7. package/dist/cjs/view/FlexibleCard/components/actions/action/action-icon/index.js +52 -0
  8. package/dist/cjs/view/FlexibleCard/components/actions/action/action-icon/types.js +5 -0
  9. package/dist/cjs/view/FlexibleCard/components/actions/action/index.js +42 -104
  10. package/dist/cjs/view/FlexibleCard/components/blocks/action-group/index.js +44 -15
  11. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +12 -1
  12. package/dist/cjs/view/FlexibleCard/components/utils.js +7 -2
  13. package/dist/cjs/view/HoverCard/components/HoverCardComponent.js +21 -20
  14. package/dist/es2019/version.json +1 -1
  15. package/dist/es2019/view/FlexibleCard/components/actions/action/action-button/index.js +88 -0
  16. package/dist/es2019/view/FlexibleCard/components/actions/action/action-button/types.js +1 -0
  17. package/dist/es2019/view/FlexibleCard/components/actions/action/action-dropdown-item/index.js +18 -0
  18. package/dist/es2019/view/FlexibleCard/components/actions/action/action-dropdown-item/types.js +1 -0
  19. package/dist/es2019/view/FlexibleCard/components/actions/action/action-icon/index.js +35 -0
  20. package/dist/es2019/view/FlexibleCard/components/actions/action/action-icon/types.js +1 -0
  21. package/dist/es2019/view/FlexibleCard/components/actions/action/index.js +26 -110
  22. package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +31 -12
  23. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +12 -2
  24. package/dist/es2019/view/FlexibleCard/components/utils.js +6 -0
  25. package/dist/es2019/view/HoverCard/components/HoverCardComponent.js +21 -20
  26. package/dist/esm/version.json +1 -1
  27. package/dist/esm/view/FlexibleCard/components/actions/action/action-button/index.js +67 -0
  28. package/dist/esm/view/FlexibleCard/components/actions/action/action-button/types.js +1 -0
  29. package/dist/esm/view/FlexibleCard/components/actions/action/action-dropdown-item/index.js +19 -0
  30. package/dist/esm/view/FlexibleCard/components/actions/action/action-dropdown-item/types.js +1 -0
  31. package/dist/esm/view/FlexibleCard/components/actions/action/action-icon/index.js +39 -0
  32. package/dist/esm/view/FlexibleCard/components/actions/action/action-icon/types.js +1 -0
  33. package/dist/esm/view/FlexibleCard/components/actions/action/index.js +41 -99
  34. package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +44 -16
  35. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +12 -1
  36. package/dist/esm/view/FlexibleCard/components/utils.js +3 -1
  37. package/dist/esm/view/HoverCard/components/HoverCardComponent.js +21 -20
  38. package/dist/types/view/FlexibleCard/components/actions/action/action-button/index.d.ts +5 -0
  39. package/dist/types/view/FlexibleCard/components/actions/action/action-button/types.d.ts +8 -0
  40. package/dist/types/view/FlexibleCard/components/actions/action/action-dropdown-item/index.d.ts +4 -0
  41. package/dist/types/view/FlexibleCard/components/actions/action/action-dropdown-item/types.d.ts +8 -0
  42. package/dist/types/view/FlexibleCard/components/actions/action/action-icon/index.d.ts +5 -0
  43. package/dist/types/view/FlexibleCard/components/actions/action/action-icon/types.d.ts +7 -0
  44. package/dist/types/view/FlexibleCard/components/actions/action/index.d.ts +0 -3
  45. package/dist/types/view/FlexibleCard/components/actions/action/types.d.ts +0 -16
  46. package/dist/types/view/FlexibleCard/components/blocks/utils.d.ts +1 -1
  47. package/dist/types/view/FlexibleCard/components/utils.d.ts +2 -0
  48. package/package.json +8 -5
  49. package/report.api.md +32 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 21.0.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`a657fbfe5e1`](https://bitbucket.org/atlassian/atlassian-frontend/commits/a657fbfe5e1) - [ux] Flexible UI: Fix action menu and its tooltip not disappear after an action is clicked
8
+
9
+ ## 21.0.2
10
+
11
+ ### Patch Changes
12
+
13
+ - [`0a08e95af20`](https://bitbucket.org/atlassian/atlassian-frontend/commits/0a08e95af20) - fix bug where scrolling onto an inline link opens hover card in unexpected locations
14
+
15
+ ## 21.0.1
16
+
17
+ ### Patch Changes
18
+
19
+ - [`919a3124eb8`](https://bitbucket.org/atlassian/atlassian-frontend/commits/919a3124eb8) - turn off autofocus for hover card
20
+
3
21
  ## 21.0.0
4
22
 
5
23
  ### Patch Changes
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "21.0.0",
3
+ "version": "21.0.3",
4
4
  "sideEffects": false
5
5
  }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _core = require("@emotion/core");
17
+
18
+ var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
19
+
20
+ var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
21
+
22
+ var _constants = require("../../../../../../constants");
23
+
24
+ var _utils = require("../../../utils");
25
+
26
+ var _templateObject, _templateObject2;
27
+
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+
30
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
+
32
+ var getButtonStyle = function getButtonStyle(size, iconOnly) {
33
+ switch (size) {
34
+ case _constants.SmartLinkSize.Large:
35
+ return iconOnly ? (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n button,\n button:hover,\n button:focus,\n button:active {\n padding: 0;\n > span {\n margin: 0;\n }\n }\n "]))) : '';
36
+
37
+ case _constants.SmartLinkSize.Small:
38
+ return (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n font-size: 0.75rem;\n font-weight: 500;\n line-height: 1rem;\n button,\n button:hover,\n button:focus,\n button:active {\n line-height: 1rem;\n ", "\n }\n "])), iconOnly ? "\n padding: 0.125rem;\n " : "\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n ");
39
+
40
+ case _constants.SmartLinkSize.XLarge:
41
+ case _constants.SmartLinkSize.Medium:
42
+ default:
43
+ return '';
44
+ }
45
+ };
46
+
47
+ var ActionButton = function ActionButton(_ref) {
48
+ var appearance = _ref.appearance,
49
+ content = _ref.content,
50
+ iconAfter = _ref.iconAfter,
51
+ iconBefore = _ref.iconBefore,
52
+ onClick = _ref.onClick,
53
+ overrideCss = _ref.overrideCss,
54
+ size = _ref.size,
55
+ testId = _ref.testId,
56
+ tooltipMessage = _ref.tooltipMessage;
57
+ var iconOnly = !content;
58
+ var onButtonClick = (0, _react.useCallback)(function (handler) {
59
+ return function (e) {
60
+ e.preventDefault();
61
+ handler();
62
+ };
63
+ }, []);
64
+ var onContainerClick = (0, _react.useCallback)(function (e) {
65
+ // Stop button on click event from propagate into parent container.
66
+ e.stopPropagation();
67
+ }, []);
68
+ return (0, _core.jsx)("div", {
69
+ css: [getButtonStyle(size, iconOnly), overrideCss],
70
+ "data-testid": "".concat(testId, "-button-wrapper"),
71
+ onClick: onContainerClick
72
+ }, (0, _core.jsx)(_tooltip.default, {
73
+ content: tooltipMessage,
74
+ hideTooltipOnClick: true,
75
+ testId: "".concat(testId, "-tooltip")
76
+ }, (0, _core.jsx)(_customThemeButton.default, {
77
+ appearance: appearance,
78
+ iconAfter: iconAfter,
79
+ iconBefore: iconBefore,
80
+ onClick: onButtonClick(onClick),
81
+ spacing: _utils.sizeToButtonSpacing[size],
82
+ testId: testId
83
+ }, content)));
84
+ };
85
+
86
+ var _default = ActionButton;
87
+ exports.default = _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _dropdownMenu = require("@atlaskit/dropdown-menu");
13
+
14
+ var _utils = require("../../../../../../utils");
15
+
16
+ var ActionDropdownItem = function ActionDropdownItem(_ref) {
17
+ var content = _ref.content,
18
+ iconAfter = _ref.iconAfter,
19
+ iconBefore = _ref.iconBefore,
20
+ onClick = _ref.onClick,
21
+ testId = _ref.testId;
22
+ return /*#__PURE__*/_react.default.createElement(_dropdownMenu.DropdownItem, {
23
+ elemAfter: iconAfter,
24
+ elemBefore: iconBefore,
25
+ onClick: (0, _utils.handleOnClick)(onClick),
26
+ testId: testId
27
+ }, content);
28
+ };
29
+
30
+ var _default = ActionDropdownItem;
31
+ exports.default = _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+
12
+ var _react = _interopRequireDefault(require("react"));
13
+
14
+ var _core = require("@emotion/core");
15
+
16
+ var _constants = require("../../../../../../constants");
17
+
18
+ var _token = require("../../../../../../utils/token");
19
+
20
+ var _utils = require("../../../utils");
21
+
22
+ var _templateObject;
23
+
24
+ var getIconWidth = function getIconWidth(size) {
25
+ switch (size) {
26
+ case _constants.SmartLinkSize.XLarge:
27
+ case _constants.SmartLinkSize.Large:
28
+ return '1.5rem';
29
+
30
+ case _constants.SmartLinkSize.Medium:
31
+ case _constants.SmartLinkSize.Small:
32
+ default:
33
+ return '1rem';
34
+ }
35
+ };
36
+
37
+ var getIconStyles = function getIconStyles(size) {
38
+ return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n ", ";\n"])), _token.tokens.actionIcon, (0, _utils.getIconSizeStyles)(getIconWidth(size)));
39
+ };
40
+
41
+ var ActionIcon = function ActionIcon(_ref) {
42
+ var size = _ref.size,
43
+ testId = _ref.testId,
44
+ icon = _ref.icon;
45
+ return (0, _core.jsx)("span", {
46
+ css: getIconStyles(size),
47
+ "data-testid": "".concat(testId, "-icon")
48
+ }, icon);
49
+ };
50
+
51
+ var _default = ActionIcon;
52
+ exports.default = _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -5,75 +5,22 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.sizeToSpacing = exports.default = void 0;
9
-
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
-
12
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
8
+ exports.default = void 0;
13
9
 
14
10
  var _react = _interopRequireDefault(require("react"));
15
11
 
16
12
  var _core = require("@emotion/core");
17
13
 
18
- var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
19
-
20
14
  var _constants = require("../../../../../constants");
21
15
 
22
- var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
23
-
24
- var _dropdownMenu = require("@atlaskit/dropdown-menu");
25
-
26
- var _utils = require("../../utils");
27
-
28
- var _token = require("../../../../../utils/token");
29
-
30
- var _utils2 = require("../../../../../utils");
16
+ var _actionButton = _interopRequireDefault(require("./action-button"));
31
17
 
32
- var _templateObject, _templateObject2, _templateObject3, _sizeToSpacing;
33
-
34
- var getIconWidth = function getIconWidth(size) {
35
- switch (size) {
36
- case _constants.SmartLinkSize.XLarge:
37
- case _constants.SmartLinkSize.Large:
38
- return '1.5rem';
39
-
40
- case _constants.SmartLinkSize.Medium:
41
- case _constants.SmartLinkSize.Small:
42
- default:
43
- return '1rem';
44
- }
45
- };
46
-
47
- var getIconStyles = function getIconStyles(size) {
48
- return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n ", ";\n"])), _token.tokens.actionIcon, (0, _utils.getIconSizeStyles)(getIconWidth(size)));
49
- };
18
+ var _actionDropdownItem = _interopRequireDefault(require("./action-dropdown-item"));
50
19
 
51
- var getButtonStyle = function getButtonStyle(size, iconOnly) {
52
- switch (size) {
53
- case _constants.SmartLinkSize.Large:
54
- return iconOnly ? (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n button,\n button:hover,\n button:focus,\n button:active {\n padding: 0;\n > span {\n margin: 0;\n }\n }\n "]))) : '';
20
+ var _actionIcon = _interopRequireDefault(require("./action-icon"));
55
21
 
56
- case _constants.SmartLinkSize.Small:
57
- return (0, _core.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n font-size: 0.75rem;\n font-weight: 500;\n line-height: 1rem;\n button,\n button:hover,\n button:focus,\n button:active {\n line-height: 1rem;\n ", "\n }\n "])), iconOnly ? "\n padding: 0.125rem;\n " : "\n padding-left: 0.25rem;\n padding-right: 0.25rem;\n ");
22
+ /** @jsx jsx */
58
23
 
59
- case _constants.SmartLinkSize.XLarge:
60
- case _constants.SmartLinkSize.Medium:
61
- default:
62
- return '';
63
- }
64
- };
65
-
66
- var ActionIcon = function ActionIcon(_ref) {
67
- var size = _ref.size,
68
- testId = _ref.testId,
69
- icon = _ref.icon;
70
- return (0, _core.jsx)("span", {
71
- css: getIconStyles(size),
72
- "data-testid": "".concat(testId, "-icon")
73
- }, icon);
74
- };
75
-
76
- var sizeToSpacing = (_sizeToSpacing = {}, (0, _defineProperty2.default)(_sizeToSpacing, _constants.SmartLinkSize.Small, 'none'), (0, _defineProperty2.default)(_sizeToSpacing, _constants.SmartLinkSize.Medium, 'compact'), (0, _defineProperty2.default)(_sizeToSpacing, _constants.SmartLinkSize.Large, 'compact'), (0, _defineProperty2.default)(_sizeToSpacing, _constants.SmartLinkSize.XLarge, 'default'), _sizeToSpacing);
77
24
  /**
78
25
  * A base action that can be triggered with an on click.
79
26
  * @internal
@@ -82,63 +29,54 @@ var sizeToSpacing = (_sizeToSpacing = {}, (0, _defineProperty2.default)(_sizeToS
82
29
  * @see EditAction
83
30
  * @see CustomAction
84
31
  */
85
-
86
- exports.sizeToSpacing = sizeToSpacing;
87
-
88
- var Action = function Action(_ref2) {
89
- var _ref2$appearance = _ref2.appearance,
90
- appearance = _ref2$appearance === void 0 ? 'subtle' : _ref2$appearance,
91
- content = _ref2.content,
92
- onClick = _ref2.onClick,
93
- _ref2$size = _ref2.size,
94
- size = _ref2$size === void 0 ? _constants.SmartLinkSize.Medium : _ref2$size,
95
- _ref2$testId = _ref2.testId,
96
- testId = _ref2$testId === void 0 ? 'smart-action' : _ref2$testId,
97
- icon = _ref2.icon,
98
- _ref2$iconPosition = _ref2.iconPosition,
99
- iconPosition = _ref2$iconPosition === void 0 ? 'before' : _ref2$iconPosition,
100
- tooltipMessage = _ref2.tooltipMessage,
101
- asDropDownItem = _ref2.asDropDownItem,
102
- overrideCss = _ref2.overrideCss;
32
+ var Action = function Action(_ref) {
33
+ var _ref$appearance = _ref.appearance,
34
+ appearance = _ref$appearance === void 0 ? 'subtle' : _ref$appearance,
35
+ content = _ref.content,
36
+ onClick = _ref.onClick,
37
+ _ref$size = _ref.size,
38
+ size = _ref$size === void 0 ? _constants.SmartLinkSize.Medium : _ref$size,
39
+ _ref$testId = _ref.testId,
40
+ testId = _ref$testId === void 0 ? 'smart-action' : _ref$testId,
41
+ icon = _ref.icon,
42
+ _ref$iconPosition = _ref.iconPosition,
43
+ iconPosition = _ref$iconPosition === void 0 ? 'before' : _ref$iconPosition,
44
+ tooltipMessage = _ref.tooltipMessage,
45
+ asDropDownItem = _ref.asDropDownItem,
46
+ overrideCss = _ref.overrideCss;
103
47
 
104
48
  if (!onClick) {
105
49
  return null;
106
50
  }
107
51
 
108
- var iconBefore = icon && iconPosition === 'before' ? (0, _core.jsx)(ActionIcon, {
109
- size: size,
110
- testId: testId,
111
- icon: icon
112
- }) : undefined;
113
- var iconAfter = icon && iconPosition === 'after' ? (0, _core.jsx)(ActionIcon, {
52
+ var actionIcon = icon && (0, _core.jsx)(_actionIcon.default, {
53
+ icon: icon,
114
54
  size: size,
115
- testId: testId,
116
- icon: icon
117
- }) : undefined;
118
- var iconOnly = !content;
55
+ testId: testId
56
+ });
57
+ var iconBefore = icon && iconPosition === 'before' ? actionIcon : undefined;
58
+ var iconAfter = icon && iconPosition === 'after' ? actionIcon : undefined;
119
59
 
120
60
  if (asDropDownItem) {
121
- return (0, _core.jsx)(_dropdownMenu.DropdownItem, {
122
- elemBefore: iconBefore,
123
- elemAfter: iconAfter,
124
- testId: testId,
125
- onClick: (0, _utils2.handleOnClick)(onClick)
126
- }, content);
61
+ return (0, _core.jsx)(_actionDropdownItem.default, {
62
+ content: content,
63
+ iconAfter: iconAfter,
64
+ iconBefore: iconBefore,
65
+ onClick: onClick,
66
+ testId: testId
67
+ });
127
68
  } else {
128
- return (0, _core.jsx)(_tooltip.default, {
129
- content: tooltipMessage,
130
- testId: "".concat(testId, "-tooltip")
131
- }, (0, _core.jsx)("div", {
132
- css: [getButtonStyle(size, iconOnly), overrideCss],
133
- "data-testid": "".concat(testId, "-button-wrapper")
134
- }, (0, _core.jsx)(_customThemeButton.default, {
135
- spacing: sizeToSpacing[size],
69
+ return (0, _core.jsx)(_actionButton.default, {
136
70
  appearance: appearance,
137
- testId: testId,
138
- onClick: (0, _utils2.handleOnClick)(onClick),
71
+ content: content,
72
+ iconAfter: iconAfter,
139
73
  iconBefore: iconBefore,
140
- iconAfter: iconAfter
141
- }, content)));
74
+ onClick: onClick,
75
+ overrideCss: overrideCss,
76
+ size: size,
77
+ testId: testId,
78
+ tooltipMessage: tooltipMessage
79
+ });
142
80
  }
143
81
  };
144
82
 
@@ -11,6 +11,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
 
12
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
13
 
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
14
16
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
15
17
 
16
18
  var _react = require("react");
@@ -33,7 +35,7 @@ var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-
33
35
 
34
36
  var _more = _interopRequireDefault(require("@atlaskit/icon/glyph/more"));
35
37
 
36
- var _action = require("../../actions/action");
38
+ var _utils2 = require("../../utils");
37
39
 
38
40
  var _token = require("../../../../../utils/token");
39
41
 
@@ -62,39 +64,66 @@ var ActionGroup = function ActionGroup(_ref) {
62
64
  visibleButtonsNum = _ref$visibleButtonsNu === void 0 ? 2 : _ref$visibleButtonsNu,
63
65
  onDropdownOpenChange = _ref.onDropdownOpenChange,
64
66
  testId = _ref.testId;
65
- var isMoreThenTwoItems = items.length > visibleButtonsNum;
66
- var firstActions = isMoreThenTwoItems ? items.slice(0, visibleButtonsNum - 1) : items;
67
- var restActions = isMoreThenTwoItems ? items.slice(visibleButtonsNum - 1) : []; // Stop AK dropdown menu to propagate event on click.
67
+
68
+ var _useState = (0, _react.useState)(false),
69
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
70
+ isOpen = _useState2[0],
71
+ setIsOpen = _useState2[1];
72
+
73
+ var _useMemo = (0, _react.useMemo)(function () {
74
+ var isMoreThenTwoItems = items.length > visibleButtonsNum;
75
+ var buttons = isMoreThenTwoItems ? items.slice(0, visibleButtonsNum - 1) : items;
76
+ var dropdownItems = isMoreThenTwoItems ? items.slice(visibleButtonsNum - 1) : [];
77
+ return [buttons, dropdownItems];
78
+ }, [items, visibleButtonsNum]),
79
+ _useMemo2 = (0, _slicedToArray2.default)(_useMemo, 2),
80
+ buttonActions = _useMemo2[0],
81
+ dropdownItemActions = _useMemo2[1]; // Stop AK dropdown menu to propagate event on click.
82
+
68
83
 
69
84
  var onClick = (0, _react.useCallback)(function (e) {
70
85
  return e.stopPropagation();
71
86
  }, []);
87
+ var onOpenChange = (0, _react.useCallback)(function (attrs) {
88
+ setIsOpen(attrs.isOpen);
89
+
90
+ if (onDropdownOpenChange) {
91
+ onDropdownOpenChange(attrs.isOpen);
92
+ }
93
+ }, [onDropdownOpenChange]);
94
+ var onActionClick = (0, _react.useCallback)(function () {
95
+ if (isOpen) {
96
+ onOpenChange({
97
+ isOpen: false
98
+ });
99
+ }
100
+ }, [isOpen, onOpenChange]);
72
101
  return (0, _core.jsx)("div", {
73
102
  css: styles,
74
103
  className: "actions-button-group",
75
104
  onClick: onClick
76
- }, (0, _core.jsx)(_buttonGroup.default, null, (0, _utils.renderActionItems)(firstActions, size, appearance), restActions.length > 0 ? (0, _core.jsx)(_dropdownMenu.default, {
77
- onOpenChange: function onOpenChange(_ref2) {
78
- var isOpen = _ref2.isOpen;
79
- return onDropdownOpenChange && onDropdownOpenChange(isOpen);
80
- },
81
- trigger: function trigger(_ref3) {
82
- var triggerRef = _ref3.triggerRef,
83
- props = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
105
+ }, (0, _core.jsx)(_buttonGroup.default, null, (0, _utils.renderActionItems)(buttonActions, size, appearance, false, onActionClick), dropdownItemActions.length > 0 ? (0, _core.jsx)(_dropdownMenu.default, {
106
+ isOpen: isOpen,
107
+ onOpenChange: onOpenChange,
108
+ trigger: function trigger(_ref2) {
109
+ var triggerRef = _ref2.triggerRef,
110
+ props = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
84
111
  return (0, _core.jsx)(_tooltip.default, {
85
112
  content: (0, _core.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.more_actions),
113
+ hideTooltipOnClick: true,
86
114
  testId: "action-group-more-button-tooltip",
87
115
  tag: "span"
88
116
  }, (0, _core.jsx)(_standardButton.default, (0, _extends2.default)({}, props, {
89
- spacing: _action.sizeToSpacing[size],
117
+ spacing: _utils2.sizeToButtonSpacing[size],
90
118
  testId: "action-group-more-button",
91
119
  iconBefore: (0, _core.jsx)(_more.default, {
92
120
  label: "more"
93
121
  }),
94
122
  ref: triggerRef
95
123
  })));
96
- }
97
- }, (0, _utils.renderActionItems)(restActions, size, appearance, true)) : null));
124
+ },
125
+ testId: "action-group-dropdown"
126
+ }, (0, _utils.renderActionItems)(dropdownItemActions, size, appearance, true, onActionClick)) : null));
98
127
  };
99
128
 
100
129
  var _default = ActionGroup;
@@ -155,6 +155,7 @@ var renderActionItems = function renderActionItems() {
155
155
  var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.SmartLinkSize.Medium;
156
156
  var appearance = arguments.length > 2 ? arguments[2] : undefined;
157
157
  var asDropDownItems = arguments.length > 3 ? arguments[3] : undefined;
158
+ var onActionItemClick = arguments.length > 4 ? arguments[4] : undefined;
158
159
  var actions = items.reduce(function (acc, curr, idx) {
159
160
  var name = curr.name,
160
161
  hideContent = curr.hideContent,
@@ -174,12 +175,22 @@ var renderActionItems = function renderActionItems() {
174
175
  }
175
176
 
176
177
  if (Action) {
178
+ var handleOnClick = function handleOnClick() {
179
+ if (onActionItemClick) {
180
+ onActionItemClick();
181
+ }
182
+
183
+ if (onClick) {
184
+ onClick();
185
+ }
186
+ };
187
+
177
188
  return [].concat((0, _toConsumableArray2.default)(acc), [/*#__PURE__*/_react.default.createElement(Action, (0, _extends2.default)({
178
189
  asDropDownItem: asDropDownItems,
179
190
  size: size,
180
191
  key: idx,
181
192
  appearance: appearance,
182
- onClick: onClick
193
+ onClick: handleOnClick
183
194
  }, actionProps))]);
184
195
  }
185
196
 
@@ -5,12 +5,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.hasWhiteSpace = exports.getTruncateStyles = exports.getMaxLines = exports.getMaxLineHeight = exports.getLinkSizeStyles = exports.getLinkLineHeight = exports.getIconWidth = exports.getIconSizeStyles = exports.getFormattedMessage = void 0;
8
+ exports.sizeToButtonSpacing = exports.hasWhiteSpace = exports.getTruncateStyles = exports.getMaxLines = exports.getMaxLineHeight = exports.getLinkSizeStyles = exports.getLinkLineHeight = exports.getIconWidth = exports.getIconSizeStyles = exports.getFormattedMessage = void 0;
9
9
 
10
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
14
16
  var _react = _interopRequireDefault(require("react"));
15
17
 
16
18
  var _core = require("@emotion/core");
@@ -19,7 +21,10 @@ var _reactIntlNext = require("react-intl-next");
19
21
 
20
22
  var _constants = require("../../../constants");
21
23
 
22
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
24
+ var _sizeToButtonSpacing, _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
25
+
26
+ var sizeToButtonSpacing = (_sizeToButtonSpacing = {}, (0, _defineProperty2.default)(_sizeToButtonSpacing, _constants.SmartLinkSize.Small, 'none'), (0, _defineProperty2.default)(_sizeToButtonSpacing, _constants.SmartLinkSize.Medium, 'compact'), (0, _defineProperty2.default)(_sizeToButtonSpacing, _constants.SmartLinkSize.Large, 'compact'), (0, _defineProperty2.default)(_sizeToButtonSpacing, _constants.SmartLinkSize.XLarge, 'default'), _sizeToButtonSpacing);
27
+ exports.sizeToButtonSpacing = sizeToButtonSpacing;
23
28
 
24
29
  var getFormattedMessage = function getFormattedMessage(message) {
25
30
  if (message) {
@@ -54,16 +54,23 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
54
54
  var fadeOutTimeoutId = (0, _react.useRef)();
55
55
  var fadeInTimeoutId = (0, _react.useRef)();
56
56
  var cardOpenTime = (0, _react.useRef)();
57
- var mousePos = (0, _react.useRef)({
58
- x: 0,
59
- y: 0
60
- });
57
+ var mousePos = (0, _react.useRef)();
61
58
  var popupOffset = (0, _react.useRef)();
62
59
  var parentSpan = (0, _react.useRef)(null);
63
60
  var renderers = (0, _renderers.useSmartLinkRenderers)();
64
61
  var linkState = (0, _store.useSmartCardState)(url);
65
62
  var hoverDisplay = 'card';
66
63
  var invokeMethod = 'mouse_hover';
64
+ var setMousePosition = (0, _react.useCallback)(function (event) {
65
+ if (isOpen) {
66
+ return;
67
+ }
68
+
69
+ mousePos.current = {
70
+ x: event.clientX,
71
+ y: event.clientY
72
+ };
73
+ }, [isOpen]);
67
74
  var hideCard = (0, _react.useCallback)(function () {
68
75
  //Check its previously open to avoid firing events when moving between the child and hover card components
69
76
  if (isOpen === true && cardOpenTime.current) {
@@ -82,19 +89,22 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
82
89
  return hideCard();
83
90
  }, delay);
84
91
  }, [hideCard]);
85
- var initShowCard = (0, _react.useCallback)(function () {
92
+ var initShowCard = (0, _react.useCallback)(function (event) {
86
93
  if (fadeOutTimeoutId.current) {
87
94
  clearTimeout(fadeOutTimeoutId.current);
88
- }
95
+ } //Set mouse position in the case it's not already set by onMouseMove, as in the case of scrolling
96
+
89
97
 
98
+ setMousePosition(event);
90
99
  fadeInTimeoutId.current = setTimeout(function () {
91
100
  //Check if its previously closed to avoid firing events when moving between the child and hover card components
92
101
  if (isOpen === false) {
93
102
  cardOpenTime.current = Date.now();
94
103
  analytics.ui.hoverCardViewedEvent(hoverDisplay, invokeMethod);
95
- }
104
+ } //If these are undefined then popupOffset is undefined and we fallback to default bottom-start placement
105
+
96
106
 
97
- if (parentSpan.current) {
107
+ if (parentSpan.current && mousePos.current) {
98
108
  var _parentSpan$current$g = parentSpan.current.getBoundingClientRect(),
99
109
  bottom = _parentSpan$current$g.bottom,
100
110
  left = _parentSpan$current$g.left;
@@ -104,7 +114,7 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
104
114
 
105
115
  setIsOpen(true);
106
116
  }, delay);
107
- }, [delay, isOpen, analytics.ui]);
117
+ }, [isOpen, setMousePosition, analytics.ui]);
108
118
  var linkActions = (0, _useSmartLinkActions.useSmartLinkActions)({
109
119
  url: url,
110
120
  appearance: _utils.SMART_CARD_ANALYTICS_DISPLAY,
@@ -114,17 +124,7 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
114
124
  if (actionId === 'preview-content') {
115
125
  hideCard();
116
126
  }
117
- }, [hideCard]);
118
- var setMousePosition = (0, _react.useCallback)(function (event) {
119
- if (isOpen) {
120
- return;
121
- }
122
-
123
- mousePos.current = {
124
- x: event.clientX,
125
- y: event.clientY
126
- };
127
- }, [isOpen]); // Stop hover preview content to propagate event to parent.
127
+ }, [hideCard]); // Stop hover preview content to propagate event to parent.
128
128
 
129
129
  var onClick = (0, _react.useCallback)(function (e) {
130
130
  return e.stopPropagation();
@@ -135,6 +135,7 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
135
135
  onClose: hideCard,
136
136
  placement: "bottom-start",
137
137
  offset: popupOffset.current,
138
+ autoFocus: false,
138
139
  content: function content(_ref2) {
139
140
  var update = _ref2.update;
140
141
  return (0, _core.jsx)("div", {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "21.0.0",
3
+ "version": "21.0.3",
4
4
  "sideEffects": false
5
5
  }