@atlaskit/smart-card 21.0.2 → 21.1.0

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 (55) 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/block/index.js +1 -1
  12. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/index.js +13 -4
  13. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +16 -3
  14. package/dist/cjs/view/FlexibleCard/components/utils.js +7 -2
  15. package/dist/es2019/version.json +1 -1
  16. package/dist/es2019/view/FlexibleCard/components/actions/action/action-button/index.js +88 -0
  17. package/dist/es2019/view/FlexibleCard/components/actions/action/action-button/types.js +1 -0
  18. package/dist/es2019/view/FlexibleCard/components/actions/action/action-dropdown-item/index.js +18 -0
  19. package/dist/es2019/view/FlexibleCard/components/actions/action/action-dropdown-item/types.js +1 -0
  20. package/dist/es2019/view/FlexibleCard/components/actions/action/action-icon/index.js +35 -0
  21. package/dist/es2019/view/FlexibleCard/components/actions/action/action-icon/types.js +1 -0
  22. package/dist/es2019/view/FlexibleCard/components/actions/action/index.js +26 -110
  23. package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +31 -12
  24. package/dist/es2019/view/FlexibleCard/components/blocks/block/index.js +2 -1
  25. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/index.js +12 -2
  26. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +23 -2
  27. package/dist/es2019/view/FlexibleCard/components/utils.js +6 -0
  28. package/dist/esm/version.json +1 -1
  29. package/dist/esm/view/FlexibleCard/components/actions/action/action-button/index.js +67 -0
  30. package/dist/esm/view/FlexibleCard/components/actions/action/action-button/types.js +1 -0
  31. package/dist/esm/view/FlexibleCard/components/actions/action/action-dropdown-item/index.js +19 -0
  32. package/dist/esm/view/FlexibleCard/components/actions/action/action-dropdown-item/types.js +1 -0
  33. package/dist/esm/view/FlexibleCard/components/actions/action/action-icon/index.js +39 -0
  34. package/dist/esm/view/FlexibleCard/components/actions/action/action-icon/types.js +1 -0
  35. package/dist/esm/view/FlexibleCard/components/actions/action/index.js +41 -99
  36. package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +44 -16
  37. package/dist/esm/view/FlexibleCard/components/blocks/block/index.js +2 -2
  38. package/dist/esm/view/FlexibleCard/components/blocks/title-block/index.js +13 -5
  39. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +14 -2
  40. package/dist/esm/view/FlexibleCard/components/utils.js +3 -1
  41. package/dist/types/index.d.ts +1 -1
  42. package/dist/types/view/FlexibleCard/components/actions/action/action-button/index.d.ts +5 -0
  43. package/dist/types/view/FlexibleCard/components/actions/action/action-button/types.d.ts +8 -0
  44. package/dist/types/view/FlexibleCard/components/actions/action/action-dropdown-item/index.d.ts +4 -0
  45. package/dist/types/view/FlexibleCard/components/actions/action/action-dropdown-item/types.d.ts +8 -0
  46. package/dist/types/view/FlexibleCard/components/actions/action/action-icon/index.d.ts +5 -0
  47. package/dist/types/view/FlexibleCard/components/actions/action/action-icon/types.d.ts +7 -0
  48. package/dist/types/view/FlexibleCard/components/actions/action/index.d.ts +0 -3
  49. package/dist/types/view/FlexibleCard/components/actions/action/types.d.ts +0 -16
  50. package/dist/types/view/FlexibleCard/components/blocks/title-block/types.d.ts +6 -1
  51. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +3 -0
  52. package/dist/types/view/FlexibleCard/components/blocks/utils.d.ts +2 -1
  53. package/dist/types/view/FlexibleCard/components/utils.d.ts +2 -0
  54. package/package.json +8 -5
  55. package/report.api.md +41 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 21.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`fa7f42de6c0`](https://bitbucket.org/atlassian/atlassian-frontend/commits/fa7f42de6c0) - Flexible UI: Add onActionMenuOpenChange on TitleBlock to detect action dropdown menu open/close
8
+
9
+ ## 21.0.4
10
+
11
+ ### Patch Changes
12
+
13
+ - [`4347099f4ba`](https://bitbucket.org/atlassian/atlassian-frontend/commits/4347099f4ba) - [ux] Blue highlight is removed for when a user right-clicks on a Flex UI Smart Link
14
+
15
+ ## 21.0.3
16
+
17
+ ### Patch Changes
18
+
19
+ - [`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
20
+
3
21
  ## 21.0.2
4
22
 
5
23
  ### Patch Changes
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "21.0.2",
3
+ "version": "21.1.0",
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;
@@ -20,7 +20,7 @@ var _utils = require("../utils");
20
20
  var _templateObject;
21
21
 
22
22
  var getBlockStyles = function getBlockStyles(direction, size) {
23
- return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n ", "\n justify-content: flex-start;\n [data-separator] + [data-separator]:before {\n content: '\u2022';\n margin-right: ", "rem;\n }\n // Pull request elements: source branch \u2192 target branch\n [data-smart-element='", "']\n + [data-smart-element='", "']:before {\n content: '\u2192';\n }\n // Pull request elements: target branch \u2190 source branch\n [data-smart-element='", "']\n + [data-smart-element='", "']:before {\n content: '\u2190';\n }\n"])), (0, _utils.getBaseStyles)(direction, size), (0, _utils.getGapSize)(size), _constants.ElementName.SourceBranch, _constants.ElementName.TargetBranch, _constants.ElementName.TargetBranch, _constants.ElementName.SourceBranch);
23
+ return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n ", "\n ", "\n justify-content: flex-start;\n [data-separator] + [data-separator]:before {\n content: '\u2022';\n margin-right: ", "rem;\n }\n // Pull request elements: source branch \u2192 target branch\n [data-smart-element='", "']\n + [data-smart-element='", "']:before {\n content: '\u2192';\n }\n // Pull request elements: target branch \u2190 source branch\n [data-smart-element='", "']\n + [data-smart-element='", "']:before {\n content: '\u2190';\n }\n"])), (0, _utils.getBaseStyles)(direction, size), _utils.highlightRemoveStyles, (0, _utils.getGapSize)(size), _constants.ElementName.SourceBranch, _constants.ElementName.TargetBranch, _constants.ElementName.TargetBranch, _constants.ElementName.SourceBranch);
24
24
  };
25
25
  /**
26
26
  * A block represents a collection of elements and actions that are arranged
@@ -33,7 +33,7 @@ var _actionGroup = _interopRequireDefault(require("../action-group"));
33
33
 
34
34
  var _elements = require("../../elements");
35
35
 
36
- var _excluded = ["actions", "anchorTarget", "hideTitleTooltip", "maxLines", "onClick", "overrideCss", "status", "showActionOnHover", "testId", "text", "theme"];
36
+ var _excluded = ["actions", "anchorTarget", "hideTitleTooltip", "maxLines", "onActionMenuOpenChange", "onClick", "overrideCss", "status", "showActionOnHover", "testId", "text", "theme"];
37
37
 
38
38
  var _templateObject, _templateObject2;
39
39
 
@@ -85,6 +85,7 @@ var TitleBlock = function TitleBlock(_ref) {
85
85
  anchorTarget = _ref.anchorTarget,
86
86
  hideTitleTooltip = _ref.hideTitleTooltip,
87
87
  maxLines = _ref.maxLines,
88
+ onActionMenuOpenChange = _ref.onActionMenuOpenChange,
88
89
  onClick = _ref.onClick,
89
90
  overrideCss = _ref.overrideCss,
90
91
  _ref$status = _ref.status,
@@ -101,12 +102,20 @@ var TitleBlock = function TitleBlock(_ref) {
101
102
  actionDropdownOpen = _useState2[0],
102
103
  setActionDropdownOpen = _useState2[1];
103
104
 
105
+ var onDropdownOpenChange = (0, _react.useCallback)(function (isOpen) {
106
+ setActionDropdownOpen(isOpen);
107
+
108
+ if (onActionMenuOpenChange) {
109
+ onActionMenuOpenChange({
110
+ isOpen: isOpen
111
+ });
112
+ }
113
+ }, [onActionMenuOpenChange]);
114
+
104
115
  var actionGroup = actions.length > 0 && /*#__PURE__*/_react.default.createElement(_actionGroup.default, {
105
116
  items: actions,
106
117
  visibleButtonsNum: showActionOnHover ? 1 : 2,
107
- onDropdownOpenChange: function onDropdownOpenChange(isOpen) {
108
- return setActionDropdownOpen(isOpen);
109
- }
118
+ onDropdownOpenChange: onDropdownOpenChange
110
119
  });
111
120
 
112
121
  var actionStyles = getActionStyles(showActionOnHover, actionDropdownOpen);
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.renderElementItems = exports.renderChildren = exports.renderActionItems = exports.getGapSize = exports.getBaseStyles = exports.ElementDisplaySchema = void 0;
10
+ exports.renderElementItems = exports.renderChildren = exports.renderActionItems = exports.highlightRemoveStyles = exports.getGapSize = exports.getBaseStyles = exports.ElementDisplaySchema = void 0;
11
11
 
12
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
13
 
@@ -38,7 +38,7 @@ var _elementGroup = _interopRequireDefault(require("./element-group"));
38
38
  var _excluded = ["name"],
39
39
  _excluded2 = ["name", "hideContent", "hideIcon", "onClick"];
40
40
 
41
- var _ElementDisplaySchema, _templateObject, _templateObject2, _templateObject3;
41
+ var _ElementDisplaySchema, _templateObject, _templateObject2, _templateObject3, _templateObject4;
42
42
 
43
43
  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); }
44
44
 
@@ -86,6 +86,8 @@ var getBaseStyles = function getBaseStyles(direction, size) {
86
86
  };
87
87
 
88
88
  exports.getBaseStyles = getBaseStyles;
89
+ var highlightRemoveStyles = (0, _core.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n outline: none !important;\n outline-color: inherit;\n color: inherit;\n -webkit-tap-highlight-color: transparent;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n"])));
90
+ exports.highlightRemoveStyles = highlightRemoveStyles;
89
91
 
90
92
  var isActionGroup = function isActionGroup(node) {
91
93
  return /*#__PURE__*/_react.default.isValidElement(node) && node.type === _actionGroup.default;
@@ -155,6 +157,7 @@ var renderActionItems = function renderActionItems() {
155
157
  var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.SmartLinkSize.Medium;
156
158
  var appearance = arguments.length > 2 ? arguments[2] : undefined;
157
159
  var asDropDownItems = arguments.length > 3 ? arguments[3] : undefined;
160
+ var onActionItemClick = arguments.length > 4 ? arguments[4] : undefined;
158
161
  var actions = items.reduce(function (acc, curr, idx) {
159
162
  var name = curr.name,
160
163
  hideContent = curr.hideContent,
@@ -174,12 +177,22 @@ var renderActionItems = function renderActionItems() {
174
177
  }
175
178
 
176
179
  if (Action) {
180
+ var handleOnClick = function handleOnClick() {
181
+ if (onActionItemClick) {
182
+ onActionItemClick();
183
+ }
184
+
185
+ if (onClick) {
186
+ onClick();
187
+ }
188
+ };
189
+
177
190
  return [].concat((0, _toConsumableArray2.default)(acc), [/*#__PURE__*/_react.default.createElement(Action, (0, _extends2.default)({
178
191
  asDropDownItem: asDropDownItems,
179
192
  size: size,
180
193
  key: idx,
181
194
  appearance: appearance,
182
- onClick: onClick
195
+ onClick: handleOnClick
183
196
  }, actionProps))]);
184
197
  }
185
198
 
@@ -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) {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "21.0.2",
3
+ "version": "21.1.0",
4
4
  "sideEffects": false
5
5
  }