@atlaskit/smart-card 25.6.1 → 25.7.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 (62) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/cjs/state/flexible-ui-context/index.js +13 -2
  3. package/dist/cjs/version.json +1 -1
  4. package/dist/cjs/view/CardWithUrl/component.js +2 -1
  5. package/dist/cjs/view/FlexibleCard/components/blocks/action-group/index.js +4 -2
  6. package/dist/cjs/view/FlexibleCard/components/common/lozenge-action/index.js +4 -2
  7. package/dist/cjs/view/FlexibleCard/components/container/index.js +7 -3
  8. package/dist/cjs/view/FlexibleCard/components/elements/lozenge/index.js +4 -1
  9. package/dist/cjs/view/FlexibleCard/index.js +5 -2
  10. package/dist/cjs/view/HoverCard/components/HoverCardComponent.js +6 -3
  11. package/dist/cjs/view/HoverCard/components/HoverCardContent.js +3 -1
  12. package/dist/cjs/view/HoverCard/styled.js +6 -2
  13. package/dist/cjs/view/InlineCard/ResolvedView/index.js +4 -1
  14. package/dist/cjs/view/InlineCard/index.js +3 -1
  15. package/dist/es2019/state/flexible-ui-context/index.js +8 -1
  16. package/dist/es2019/version.json +1 -1
  17. package/dist/es2019/view/CardWithUrl/component.js +2 -1
  18. package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +5 -3
  19. package/dist/es2019/view/FlexibleCard/components/common/lozenge-action/index.js +4 -2
  20. package/dist/es2019/view/FlexibleCard/components/container/index.js +5 -2
  21. package/dist/es2019/view/FlexibleCard/components/elements/lozenge/index.js +4 -1
  22. package/dist/es2019/view/FlexibleCard/index.js +6 -3
  23. package/dist/es2019/view/HoverCard/components/HoverCardComponent.js +6 -4
  24. package/dist/es2019/view/HoverCard/components/HoverCardContent.js +3 -1
  25. package/dist/es2019/view/HoverCard/styled.js +4 -1
  26. package/dist/es2019/view/InlineCard/ResolvedView/index.js +3 -1
  27. package/dist/es2019/view/InlineCard/index.js +3 -1
  28. package/dist/esm/state/flexible-ui-context/index.js +9 -0
  29. package/dist/esm/version.json +1 -1
  30. package/dist/esm/view/CardWithUrl/component.js +2 -1
  31. package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +5 -3
  32. package/dist/esm/view/FlexibleCard/components/common/lozenge-action/index.js +4 -2
  33. package/dist/esm/view/FlexibleCard/components/container/index.js +7 -3
  34. package/dist/esm/view/FlexibleCard/components/elements/lozenge/index.js +4 -1
  35. package/dist/esm/view/FlexibleCard/index.js +6 -3
  36. package/dist/esm/view/HoverCard/components/HoverCardComponent.js +7 -4
  37. package/dist/esm/view/HoverCard/components/HoverCardContent.js +3 -1
  38. package/dist/esm/view/HoverCard/styled.js +4 -1
  39. package/dist/esm/view/InlineCard/ResolvedView/index.js +4 -1
  40. package/dist/esm/view/InlineCard/index.js +3 -1
  41. package/dist/types/__fixtures__/bitbucket-pull-request.d.ts +73 -0
  42. package/dist/types/__fixtures__/confluence-blog.d.ts +49 -0
  43. package/dist/types/__fixtures__/confluence-page.d.ts +49 -0
  44. package/dist/types/__fixtures__/confluence-space.d.ts +36 -0
  45. package/dist/types/__fixtures__/confluence-template.d.ts +31 -0
  46. package/dist/types/__fixtures__/figma.d.ts +43 -0
  47. package/dist/types/__fixtures__/jira-roadmap.d.ts +35 -0
  48. package/dist/types/__fixtures__/jira-task.d.ts +78 -0
  49. package/dist/types/__fixtures__/youtube-video.d.ts +44 -0
  50. package/dist/types/state/flexible-ui-context/index.d.ts +7 -0
  51. package/dist/types/view/Card/index.d.ts +1 -1
  52. package/dist/types/view/FlexibleCard/components/common/lozenge-action/types.d.ts +1 -0
  53. package/dist/types/view/FlexibleCard/components/container/types.d.ts +2 -13
  54. package/dist/types/view/FlexibleCard/types.d.ts +8 -3
  55. package/dist/types/view/HoverCard/index.d.ts +1 -1
  56. package/dist/types/view/HoverCard/styled.d.ts +1 -0
  57. package/dist/types/view/HoverCard/types.d.ts +5 -0
  58. package/dist/types/view/InlineCard/ResolvedView/index.d.ts +2 -0
  59. package/dist/types/view/InlineCard/types.d.ts +1 -0
  60. package/package.json +1 -1
  61. package/report.api.md +2 -1
  62. package/tmp/api-report-tmp.d.ts +2 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 25.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`9c49eef4c87`](https://bitbucket.org/atlassian/atlassian-frontend/commits/9c49eef4c87) - [ux]
8
+
9
+ - Add lozenge action to hover preview (wip, opt-in, feature flag)
10
+ - Fix hover preview's action dropdown menu showing behind container
11
+ - Allow setting z-index for portal component inside flexible smart links
12
+
3
13
  ## 25.6.1
4
14
 
5
15
  ### Patch Changes
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useFlexibleUiContext = exports.useFlexibleUiAnalyticsContext = exports.FlexibleUiContext = exports.FlexibleUiAnalyticsContext = void 0;
6
+ exports.useFlexibleUiOptionContext = exports.useFlexibleUiContext = exports.useFlexibleUiAnalyticsContext = exports.FlexibleUiOptionContext = exports.FlexibleUiContext = exports.FlexibleUiAnalyticsContext = void 0;
7
7
  var _react = require("react");
8
8
  /**
9
9
  * This provides the data that will be used by Smart Links Flexible UI to populate it's
@@ -25,4 +25,15 @@ exports.FlexibleUiAnalyticsContext = FlexibleUiAnalyticsContext;
25
25
  var useFlexibleUiAnalyticsContext = function useFlexibleUiAnalyticsContext() {
26
26
  return (0, _react.useContext)(FlexibleUiAnalyticsContext);
27
27
  };
28
- exports.useFlexibleUiAnalyticsContext = useFlexibleUiAnalyticsContext;
28
+
29
+ /**
30
+ * This provides the ui options that will be used by Smart Links Flexible UI
31
+ * to render its underlying elements.
32
+ */
33
+ exports.useFlexibleUiAnalyticsContext = useFlexibleUiAnalyticsContext;
34
+ var FlexibleUiOptionContext = /*#__PURE__*/(0, _react.createContext)(undefined);
35
+ exports.FlexibleUiOptionContext = FlexibleUiOptionContext;
36
+ var useFlexibleUiOptionContext = function useFlexibleUiOptionContext() {
37
+ return (0, _react.useContext)(FlexibleUiOptionContext);
38
+ };
39
+ exports.useFlexibleUiOptionContext = useFlexibleUiOptionContext;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "25.6.1",
3
+ "version": "25.7.0",
4
4
  "sideEffects": false
5
5
  }
@@ -218,7 +218,8 @@ function CardWithUrlContent(_ref) {
218
218
  testId: testId,
219
219
  inlinePreloaderStyle: inlinePreloaderStyle,
220
220
  showHoverPreview: showHoverPreview,
221
- showAuthTooltip: showAuthTooltip
221
+ showAuthTooltip: showAuthTooltip,
222
+ showServerActions: showServerActions
222
223
  });
223
224
  case 'block':
224
225
  return /*#__PURE__*/_react.default.createElement(_BlockCard.BlockCard, {
@@ -80,6 +80,7 @@ var ActionGroup = function ActionGroup(_ref) {
80
80
  onDropdownOpenChange = _ref.onDropdownOpenChange,
81
81
  testId = _ref.testId;
82
82
  var context = (0, _flexibleUiContext.useFlexibleUiContext)();
83
+ var ui = (0, _flexibleUiContext.useFlexibleUiOptionContext)();
83
84
  var _useState = (0, _react.useState)(false),
84
85
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
85
86
  isOpen = _useState2[0],
@@ -131,11 +132,12 @@ var ActionGroup = function ActionGroup(_ref) {
131
132
  ref: triggerRef
132
133
  })));
133
134
  },
134
- testId: "action-group-dropdown"
135
+ testId: "action-group-dropdown",
136
+ zIndex: ui === null || ui === void 0 ? void 0 : ui.zIndex
135
137
  }, renderActionItems(actionItems, size, appearance, true, onActionItemClick));
136
138
  }
137
139
  return null;
138
- }, [appearance, isMoreThenTwoItems, isOpen, onActionItemClick, onOpenChange, renderableActionItems, size, visibleButtonsNum]);
140
+ }, [appearance, isMoreThenTwoItems, isOpen, onActionItemClick, onOpenChange, renderableActionItems, size, ui === null || ui === void 0 ? void 0 : ui.zIndex, visibleButtonsNum]);
139
141
  return renderableActionItems.length > 0 ? (0, _react2.jsx)("div", {
140
142
  css: styles,
141
143
  className: "actions-button-group"
@@ -37,7 +37,8 @@ var LozengeAction = function LozengeAction(_ref) {
37
37
  appearance = _ref.appearance,
38
38
  _ref$testId = _ref.testId,
39
39
  testId = _ref$testId === void 0 ? 'smart-element-lozenge-action' : _ref$testId,
40
- text = _ref.text;
40
+ text = _ref.text,
41
+ zIndex = _ref.zIndex;
41
42
  var _useState = (0, _react2.useState)(false),
42
43
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
43
44
  isLoaded = _useState2[0],
@@ -189,7 +190,8 @@ var LozengeAction = function LozengeAction(_ref) {
189
190
  isOpen: isOpen,
190
191
  onOpenChange: handleOpenChange,
191
192
  testId: testId,
192
- trigger: trigger
193
+ trigger: trigger,
194
+ zIndex: zIndex
193
195
  }, dropdownItemGroup);
194
196
  };
195
197
  var _default = (0, _errorBoundary.default)(LozengeAction);
@@ -82,6 +82,7 @@ var getContainerStyles = function getContainerStyles(size, hideBackground, hideE
82
82
  exports.getContainerStyles = getContainerStyles;
83
83
  var renderChildren = function renderChildren(children, containerSize, containerTheme, status, retry, onClick, onActionMenuOpenChange) {
84
84
  return _react.default.Children.map(children, function (child) {
85
+ // TODO: EDM-6468: Use useFlexibleUiOptionContext for rendering options inside block/element instead
85
86
  if ( /*#__PURE__*/_react.default.isValidElement(child) && (0, _flexible.isFlexibleUiBlock)(child)) {
86
87
  var blockSize = child.props.size;
87
88
  var size = blockSize || containerSize;
@@ -152,10 +153,12 @@ var Container = function Container(_ref3) {
152
153
  hideHoverCardPreviewButton = _ref3$hideHoverCardPr === void 0 ? false : _ref3$hideHoverCardPr,
153
154
  _ref3$hidePadding = _ref3.hidePadding,
154
155
  hidePadding = _ref3$hidePadding === void 0 ? false : _ref3$hidePadding,
155
- _ref3$showHoverPrevie = _ref3.showHoverPreview,
156
- showHoverPreview = _ref3$showHoverPrevie === void 0 ? false : _ref3$showHoverPrevie,
157
156
  onClick = _ref3.onClick,
158
157
  retry = _ref3.retry,
158
+ _ref3$showHoverPrevie = _ref3.showHoverPreview,
159
+ showHoverPreview = _ref3$showHoverPrevie === void 0 ? false : _ref3$showHoverPrevie,
160
+ _ref3$showServerActio = _ref3.showServerActions,
161
+ showServerActions = _ref3$showServerActio === void 0 ? false : _ref3$showServerActio,
159
162
  _ref3$size = _ref3.size,
160
163
  size = _ref3$size === void 0 ? _constants.SmartLinkSize.Medium : _ref3$size,
161
164
  status = _ref3.status,
@@ -182,7 +185,8 @@ var Container = function Container(_ref3) {
182
185
  url: context === null || context === void 0 ? void 0 : context.url,
183
186
  canOpen: hoverCardCanOpen,
184
187
  closeOnChildClick: true,
185
- hidePreviewButton: hideHoverCardPreviewButton
188
+ hidePreviewButton: hideHoverCardPreviewButton,
189
+ showServerActions: showServerActions
186
190
  }, containerContent);
187
191
  }
188
192
  return containerContent;
@@ -12,6 +12,7 @@ var _react = _interopRequireWildcard(require("react"));
12
12
  var _react2 = require("@emotion/react");
13
13
  var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
14
14
  var _lozengeAction = _interopRequireDefault(require("../../common/lozenge-action"));
15
+ var _flexibleUiContext = require("../../../../../state/flexible-ui-context");
15
16
  var _templateObject, _templateObject2;
16
17
  /** @jsx jsx */
17
18
  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); }
@@ -35,6 +36,7 @@ var Lozenge = function Lozenge(_ref) {
35
36
  text = _ref.text,
36
37
  _ref$testId = _ref.testId,
37
38
  testId = _ref$testId === void 0 ? 'smart-element-lozenge' : _ref$testId;
39
+ var ui = (0, _flexibleUiContext.useFlexibleUiOptionContext)();
38
40
  var _useState = (0, _react.useState)(false),
39
41
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
40
42
  isBold = _useState2[0],
@@ -57,7 +59,8 @@ var Lozenge = function Lozenge(_ref) {
57
59
  action: action,
58
60
  appearance: appearance,
59
61
  testId: testId,
60
- text: text
62
+ text: text,
63
+ zIndex: ui === null || ui === void 0 ? void 0 : ui.zIndex
61
64
  }) : (0, _react2.jsx)(_lozenge.default, {
62
65
  appearance: appearance,
63
66
  isBold: isBold,
@@ -85,16 +85,19 @@ var FlexibleCard = function FlexibleCard(_ref) {
85
85
  }, [onError, onResolve, status, title, url]);
86
86
  return /*#__PURE__*/_react.default.createElement(_flexibleUiContext.FlexibleUiAnalyticsContext.Provider, {
87
87
  value: analytics
88
+ }, /*#__PURE__*/_react.default.createElement(_flexibleUiContext.FlexibleUiOptionContext.Provider, {
89
+ value: ui
88
90
  }, /*#__PURE__*/_react.default.createElement(_flexibleUiContext.FlexibleUiContext.Provider, {
89
91
  value: context
90
92
  }, /*#__PURE__*/_react.default.createElement(_container.default, (0, _extends2.default)({
91
93
  testId: testId
92
94
  }, ui, {
93
- showHoverPreview: showHoverPreview,
94
95
  onClick: onClick,
95
96
  retry: retry,
97
+ showHoverPreview: showHoverPreview,
98
+ showServerActions: showServerActions,
96
99
  status: status
97
- }), children)));
100
+ }), children))));
98
101
  };
99
102
  var _default = FlexibleCard;
100
103
  exports.default = _default;
@@ -31,7 +31,9 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
31
31
  _ref$closeOnChildClic = _ref.closeOnChildClick,
32
32
  closeOnChildClick = _ref$closeOnChildClic === void 0 ? false : _ref$closeOnChildClic,
33
33
  _ref$hidePreviewButto = _ref.hidePreviewButton,
34
- hidePreviewButton = _ref$hidePreviewButto === void 0 ? false : _ref$hidePreviewButto;
34
+ hidePreviewButton = _ref$hidePreviewButto === void 0 ? false : _ref$hidePreviewButto,
35
+ _ref$showServerAction = _ref.showServerActions,
36
+ showServerActions = _ref$showServerAction === void 0 ? false : _ref$showServerAction;
35
37
  var delay = 300;
36
38
  var _React$useState = _react2.default.useState(false),
37
39
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
@@ -140,9 +142,10 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
140
142
  onActionClick: onActionClick,
141
143
  onResolve: update,
142
144
  renderers: renderers,
145
+ showServerActions: showServerActions,
143
146
  url: url
144
147
  });
145
- }, [analytics, initHideCard, initShowCard, filteredActions, linkState, onActionClick, renderers, url]);
148
+ }, [analytics, initHideCard, initShowCard, filteredActions, linkState, onActionClick, renderers, showServerActions, url]);
146
149
  var trigger = (0, _react2.useCallback)(function (triggerProps) {
147
150
  return (0, _react.jsx)("span", {
148
151
  ref: parentSpan
@@ -163,7 +166,7 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
163
166
  autoFocus: false,
164
167
  content: content,
165
168
  trigger: trigger,
166
- zIndex: 511 // Temporary fix for Confluence inline comment on editor mod has z-index of 500, Jira issue view has z-index of 510
169
+ zIndex: _styled.HOVER_CARD_Z_INDEX
167
170
  });
168
171
  };
169
172
  exports.HoverCardComponent = HoverCardComponent;
@@ -100,7 +100,8 @@ var HoverCardContent = function HoverCardContent(_ref) {
100
100
  renderers = _ref.renderers,
101
101
  url = _ref.url,
102
102
  onMouseEnter = _ref.onMouseEnter,
103
- onMouseLeave = _ref.onMouseLeave;
103
+ onMouseLeave = _ref.onMouseLeave,
104
+ showServerActions = _ref.showServerActions;
104
105
  var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
105
106
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
106
107
  var extensionKey = (0, _react2.useMemo)(function () {
@@ -141,6 +142,7 @@ var HoverCardContent = function HoverCardContent(_ref) {
141
142
  onClick: onClick,
142
143
  onResolve: onResolve,
143
144
  renderers: renderers,
145
+ showServerActions: showServerActions,
144
146
  ui: _styled.flexibleUiOptions,
145
147
  url: url,
146
148
  children: {}
@@ -4,12 +4,15 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.titleBlockCss = exports.separatorCss = exports.getTransitionStyles = exports.flexibleUiOptions = exports.HoverCardContainer = exports.CARD_WIDTH_REM = exports.CARD_GAP_PX = void 0;
7
+ exports.titleBlockCss = exports.separatorCss = exports.getTransitionStyles = exports.flexibleUiOptions = exports.HoverCardContainer = exports.HOVER_CARD_Z_INDEX = exports.CARD_WIDTH_REM = exports.CARD_GAP_PX = void 0;
8
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
9
  var _react = require("@emotion/react");
10
10
  var _index = require("../../index");
11
11
  var _constants = require("../../constants");
12
12
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
13
+ // Temporary fix for Confluence inline comment on editor mod has z-index of 500, Jira issue view has z-index of 510
14
+ var HOVER_CARD_Z_INDEX = 511;
15
+ exports.HOVER_CARD_Z_INDEX = HOVER_CARD_Z_INDEX;
13
16
  var flexibleUiOptions = {
14
17
  hideBackground: true,
15
18
  hideElevation: true,
@@ -17,7 +20,8 @@ var flexibleUiOptions = {
17
20
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
18
21
  theme: _constants.SmartLinkTheme.Black,
19
22
  hidePadding: true,
20
- hideHoverCardPreviewButton: false
23
+ hideHoverCardPreviewButton: false,
24
+ zIndex: HOVER_CARD_Z_INDEX + 1
21
25
  };
22
26
  exports.flexibleUiOptions = flexibleUiOptions;
23
27
  var CARD_WIDTH_REM = 24;
@@ -54,7 +54,9 @@ var InlineCardResolvedView = /*#__PURE__*/function (_React$Component) {
54
54
  titleTextColor = _this$props.titleTextColor,
55
55
  titlePrefix = _this$props.titlePrefix,
56
56
  _this$props$showHover = _this$props.showHoverPreview,
57
- showHoverPreview = _this$props$showHover === void 0 ? false : _this$props$showHover;
57
+ showHoverPreview = _this$props$showHover === void 0 ? false : _this$props$showHover,
58
+ _this$props$showServe = _this$props.showServerActions,
59
+ showServerActions = _this$props$showServe === void 0 ? false : _this$props$showServe;
58
60
  var inlineCardResolvedView = /*#__PURE__*/_react.default.createElement(_Frame.Frame, {
59
61
  testId: testId,
60
62
  link: link,
@@ -69,6 +71,7 @@ var InlineCardResolvedView = /*#__PURE__*/function (_React$Component) {
69
71
  if (showHoverPreview && link) {
70
72
  return /*#__PURE__*/_react.default.createElement(_index.HoverCard, {
71
73
  id: id,
74
+ showServerActions: showServerActions,
72
75
  url: link
73
76
  }, inlineCardResolvedView);
74
77
  }
@@ -64,7 +64,8 @@ var InlineCard = function InlineCard(_ref) {
64
64
  testId = _ref.testId,
65
65
  inlinePreloaderStyle = _ref.inlinePreloaderStyle,
66
66
  showHoverPreview = _ref.showHoverPreview,
67
- showAuthTooltip = _ref.showAuthTooltip;
67
+ showAuthTooltip = _ref.showAuthTooltip,
68
+ showServerActions = _ref.showServerActions;
68
69
  var status = cardState.status,
69
70
  details = cardState.details;
70
71
  var cardDetails = details && details.data || (0, _jsonld.getEmptyJsonLd)();
@@ -95,6 +96,7 @@ var InlineCard = function InlineCard(_ref) {
95
96
  return /*#__PURE__*/_react.default.createElement(_ResolvedView.InlineCardResolvedView, (0, _extends2.default)({}, resolvedProps, {
96
97
  id: id,
97
98
  showHoverPreview: showHoverPreview,
99
+ showServerActions: showServerActions,
98
100
  link: url,
99
101
  isSelected: isSelected,
100
102
  onClick: handleFrameClick,
@@ -11,4 +11,11 @@ export const useFlexibleUiContext = () => useContext(FlexibleUiContext);
11
11
  * underlying elements.
12
12
  */
13
13
  export const FlexibleUiAnalyticsContext = /*#__PURE__*/createContext(undefined);
14
- export const useFlexibleUiAnalyticsContext = () => useContext(FlexibleUiAnalyticsContext);
14
+ export const useFlexibleUiAnalyticsContext = () => useContext(FlexibleUiAnalyticsContext);
15
+
16
+ /**
17
+ * This provides the ui options that will be used by Smart Links Flexible UI
18
+ * to render its underlying elements.
19
+ */
20
+ export const FlexibleUiOptionContext = /*#__PURE__*/createContext(undefined);
21
+ export const useFlexibleUiOptionContext = () => useContext(FlexibleUiOptionContext);
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "25.6.1",
3
+ "version": "25.7.0",
4
4
  "sideEffects": false
5
5
  }
@@ -205,7 +205,8 @@ export function CardWithUrlContent({
205
205
  testId: testId,
206
206
  inlinePreloaderStyle: inlinePreloaderStyle,
207
207
  showHoverPreview: showHoverPreview,
208
- showAuthTooltip: showAuthTooltip
208
+ showAuthTooltip: showAuthTooltip,
209
+ showServerActions: showServerActions
209
210
  });
210
211
  case 'block':
211
212
  return /*#__PURE__*/React.createElement(BlockCard, {
@@ -11,7 +11,7 @@ import Button from '@atlaskit/button/standard-button';
11
11
  import MoreIcon from '@atlaskit/icon/glyph/more';
12
12
  import { sizeToButtonSpacing } from '../../utils';
13
13
  import { messages } from '../../../../../messages';
14
- import { useFlexibleUiContext } from '../../../../../state/flexible-ui-context';
14
+ import { useFlexibleUiContext, useFlexibleUiOptionContext } from '../../../../../state/flexible-ui-context';
15
15
  import ActionGroupItem from './action-group-item';
16
16
  const styles = css`
17
17
  display: inline-flex;
@@ -70,6 +70,7 @@ const ActionGroup = ({
70
70
  testId
71
71
  }) => {
72
72
  const context = useFlexibleUiContext();
73
+ const ui = useFlexibleUiOptionContext();
73
74
  const [isOpen, setIsOpen] = useState(false);
74
75
  const renderableActionItems = useMemo(() => filterActionItems(items, context), [context, items]);
75
76
  const isMoreThenTwoItems = renderableActionItems.length > visibleButtonsNum;
@@ -115,11 +116,12 @@ const ActionGroup = ({
115
116
  iconBefore: moreIcon,
116
117
  ref: triggerRef
117
118
  }))),
118
- testId: "action-group-dropdown"
119
+ testId: "action-group-dropdown",
120
+ zIndex: ui === null || ui === void 0 ? void 0 : ui.zIndex
119
121
  }, renderActionItems(actionItems, size, appearance, true, onActionItemClick));
120
122
  }
121
123
  return null;
122
- }, [appearance, isMoreThenTwoItems, isOpen, onActionItemClick, onOpenChange, renderableActionItems, size, visibleButtonsNum]);
124
+ }, [appearance, isMoreThenTwoItems, isOpen, onActionItemClick, onOpenChange, renderableActionItems, size, ui === null || ui === void 0 ? void 0 : ui.zIndex, visibleButtonsNum]);
123
125
  return renderableActionItems.length > 0 ? jsx("div", {
124
126
  css: styles,
125
127
  className: "actions-button-group"
@@ -20,7 +20,8 @@ const LozengeAction = ({
20
20
  action,
21
21
  appearance,
22
22
  testId = 'smart-element-lozenge-action',
23
- text
23
+ text,
24
+ zIndex
24
25
  }) => {
25
26
  const [isLoaded, setIsLoaded] = useState(false);
26
27
  const [isLoading, setIsLoading] = useState(false);
@@ -103,7 +104,8 @@ const LozengeAction = ({
103
104
  isOpen: isOpen,
104
105
  onOpenChange: handleOpenChange,
105
106
  testId: testId,
106
- trigger: trigger
107
+ trigger: trigger,
108
+ zIndex: zIndex
107
109
  }, dropdownItemGroup);
108
110
  };
109
111
  export default withErrorBoundary(LozengeAction);
@@ -112,6 +112,7 @@ export const getContainerStyles = (size, hideBackground, hideElevation, hidePadd
112
112
  `;
113
113
  };
114
114
  const renderChildren = (children, containerSize, containerTheme, status, retry, onClick, onActionMenuOpenChange) => React.Children.map(children, child => {
115
+ // TODO: EDM-6468: Use useFlexibleUiOptionContext for rendering options inside block/element instead
115
116
  if ( /*#__PURE__*/React.isValidElement(child) && isFlexibleUiBlock(child)) {
116
117
  const {
117
118
  size: blockSize
@@ -177,9 +178,10 @@ const Container = ({
177
178
  hideElevation = false,
178
179
  hideHoverCardPreviewButton = false,
179
180
  hidePadding = false,
180
- showHoverPreview = false,
181
181
  onClick,
182
182
  retry,
183
+ showHoverPreview = false,
184
+ showServerActions = false,
183
185
  size = SmartLinkSize.Medium,
184
186
  status,
185
187
  testId = 'smart-links-container',
@@ -199,7 +201,8 @@ const Container = ({
199
201
  url: context === null || context === void 0 ? void 0 : context.url,
200
202
  canOpen: hoverCardCanOpen,
201
203
  closeOnChildClick: true,
202
- hidePreviewButton: hideHoverCardPreviewButton
204
+ hidePreviewButton: hideHoverCardPreviewButton,
205
+ showServerActions: showServerActions
203
206
  }, containerContent);
204
207
  }
205
208
  return containerContent;
@@ -3,6 +3,7 @@ import React, { useCallback, useState } from 'react';
3
3
  import { css, jsx } from '@emotion/react';
4
4
  import AtlaskitLozenge from '@atlaskit/lozenge';
5
5
  import LozengeAction from '../../common/lozenge-action';
6
+ import { useFlexibleUiOptionContext } from '../../../../../state/flexible-ui-context';
6
7
  const styles = css`
7
8
  display: inline-flex;
8
9
  line-height: inherit;
@@ -26,6 +27,7 @@ const Lozenge = ({
26
27
  text,
27
28
  testId = 'smart-element-lozenge'
28
29
  }) => {
30
+ const ui = useFlexibleUiOptionContext();
29
31
  const [isBold, setIsBold] = useState(false);
30
32
  const onHover = useCallback(isHover => {
31
33
  if (onClick) {
@@ -41,7 +43,8 @@ const Lozenge = ({
41
43
  action: action,
42
44
  appearance: appearance,
43
45
  testId: testId,
44
- text: text
46
+ text: text,
47
+ zIndex: ui === null || ui === void 0 ? void 0 : ui.zIndex
45
48
  }) : jsx(AtlaskitLozenge, {
46
49
  appearance: appearance,
47
50
  isBold: isBold,
@@ -3,7 +3,7 @@ import React, { useEffect, useMemo } from 'react';
3
3
  import { useFeatureFlag } from '@atlaskit/link-provider';
4
4
  import { SmartLinkStatus } from '../../constants';
5
5
  import Container from './components/container';
6
- import { FlexibleUiAnalyticsContext, FlexibleUiContext } from '../../state/flexible-ui-context';
6
+ import { FlexibleUiAnalyticsContext, FlexibleUiContext, FlexibleUiOptionContext } from '../../state/flexible-ui-context';
7
7
  import { getContextByStatus, getRetryOptions } from './utils';
8
8
 
9
9
  /**
@@ -76,15 +76,18 @@ const FlexibleCard = ({
76
76
  }, [onError, onResolve, status, title, url]);
77
77
  return /*#__PURE__*/React.createElement(FlexibleUiAnalyticsContext.Provider, {
78
78
  value: analytics
79
+ }, /*#__PURE__*/React.createElement(FlexibleUiOptionContext.Provider, {
80
+ value: ui
79
81
  }, /*#__PURE__*/React.createElement(FlexibleUiContext.Provider, {
80
82
  value: context
81
83
  }, /*#__PURE__*/React.createElement(Container, _extends({
82
84
  testId: testId
83
85
  }, ui, {
84
- showHoverPreview: showHoverPreview,
85
86
  onClick: onClick,
86
87
  retry: retry,
88
+ showHoverPreview: showHoverPreview,
89
+ showServerActions: showServerActions,
87
90
  status: status
88
- }), children)));
91
+ }), children))));
89
92
  };
90
93
  export default FlexibleCard;
@@ -7,7 +7,7 @@ import { useSmartLinkActions } from '../../../state/hooks-external/useSmartLinkA
7
7
  import { useSmartLinkRenderers } from '../../../state/renderers';
8
8
  import { useSmartCardState as useLinkState } from '../../../state/store';
9
9
  import HoverCardContent from '../components/HoverCardContent';
10
- import { CARD_GAP_PX } from '../styled';
10
+ import { CARD_GAP_PX, HOVER_CARD_Z_INDEX } from '../styled';
11
11
  import { CardDisplay } from '../../../constants';
12
12
  export const HoverCardComponent = ({
13
13
  children,
@@ -16,7 +16,8 @@ export const HoverCardComponent = ({
16
16
  analytics,
17
17
  canOpen = true,
18
18
  closeOnChildClick = false,
19
- hidePreviewButton = false
19
+ hidePreviewButton = false,
20
+ showServerActions = false
20
21
  }) => {
21
22
  const delay = 300;
22
23
  const [isOpen, setIsOpen] = React.useState(false);
@@ -120,8 +121,9 @@ export const HoverCardComponent = ({
120
121
  onActionClick: onActionClick,
121
122
  onResolve: update,
122
123
  renderers: renderers,
124
+ showServerActions: showServerActions,
123
125
  url: url
124
- }), [analytics, initHideCard, initShowCard, filteredActions, linkState, onActionClick, renderers, url]);
126
+ }), [analytics, initHideCard, initShowCard, filteredActions, linkState, onActionClick, renderers, showServerActions, url]);
125
127
  const trigger = useCallback(triggerProps => jsx("span", {
126
128
  ref: parentSpan
127
129
  }, jsx("span", _extends({}, triggerProps, {
@@ -140,6 +142,6 @@ export const HoverCardComponent = ({
140
142
  autoFocus: false,
141
143
  content: content,
142
144
  trigger: trigger,
143
- zIndex: 511 // Temporary fix for Confluence inline comment on editor mod has z-index of 500, Jira issue view has z-index of 510
145
+ zIndex: HOVER_CARD_Z_INDEX
144
146
  });
145
147
  };
@@ -58,7 +58,8 @@ const HoverCardContent = ({
58
58
  renderers,
59
59
  url,
60
60
  onMouseEnter,
61
- onMouseLeave
61
+ onMouseLeave,
62
+ showServerActions
62
63
  }) => {
63
64
  var _cardState$details;
64
65
  const {
@@ -99,6 +100,7 @@ const HoverCardContent = ({
99
100
  onClick: onClick,
100
101
  onResolve: onResolve,
101
102
  renderers: renderers,
103
+ showServerActions,
102
104
  ui: flexibleUiOptions,
103
105
  url: url,
104
106
  children: {}
@@ -1,6 +1,8 @@
1
1
  import { css } from '@emotion/react';
2
2
  import { loadingPlaceholderClassName } from '../../index';
3
3
  import { SmartLinkSize, SmartLinkTheme } from '../../constants';
4
+ // Temporary fix for Confluence inline comment on editor mod has z-index of 500, Jira issue view has z-index of 510
5
+ export const HOVER_CARD_Z_INDEX = 511;
4
6
  export const flexibleUiOptions = {
5
7
  hideBackground: true,
6
8
  hideElevation: true,
@@ -8,7 +10,8 @@ export const flexibleUiOptions = {
8
10
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
9
11
  theme: SmartLinkTheme.Black,
10
12
  hidePadding: true,
11
- hideHoverCardPreviewButton: false
13
+ hideHoverCardPreviewButton: false,
14
+ zIndex: HOVER_CARD_Z_INDEX + 1
12
15
  };
13
16
  export const CARD_WIDTH_REM = 24;
14
17
  // gap between mouse cursor and hover card
@@ -29,7 +29,8 @@ export class InlineCardResolvedView extends React.Component {
29
29
  testId = 'inline-card-resolved-view',
30
30
  titleTextColor,
31
31
  titlePrefix,
32
- showHoverPreview = false
32
+ showHoverPreview = false,
33
+ showServerActions = false
33
34
  } = this.props;
34
35
  const inlineCardResolvedView = /*#__PURE__*/React.createElement(Frame, {
35
36
  testId: testId,
@@ -45,6 +46,7 @@ export class InlineCardResolvedView extends React.Component {
45
46
  if (showHoverPreview && link) {
46
47
  return /*#__PURE__*/React.createElement(HoverCard, {
47
48
  id: id,
49
+ showServerActions: showServerActions,
48
50
  url: link
49
51
  }, inlineCardResolvedView);
50
52
  }
@@ -27,7 +27,8 @@ export const InlineCard = ({
27
27
  testId,
28
28
  inlinePreloaderStyle,
29
29
  showHoverPreview,
30
- showAuthTooltip
30
+ showAuthTooltip,
31
+ showServerActions
31
32
  }) => {
32
33
  var _details$meta;
33
34
  const {
@@ -62,6 +63,7 @@ export const InlineCard = ({
62
63
  return /*#__PURE__*/React.createElement(InlineCardResolvedView, _extends({}, resolvedProps, {
63
64
  id: id,
64
65
  showHoverPreview: showHoverPreview,
66
+ showServerActions: showServerActions,
65
67
  link: url,
66
68
  isSelected: isSelected,
67
69
  onClick: handleFrameClick,
@@ -15,4 +15,13 @@ export var useFlexibleUiContext = function useFlexibleUiContext() {
15
15
  export var FlexibleUiAnalyticsContext = /*#__PURE__*/createContext(undefined);
16
16
  export var useFlexibleUiAnalyticsContext = function useFlexibleUiAnalyticsContext() {
17
17
  return useContext(FlexibleUiAnalyticsContext);
18
+ };
19
+
20
+ /**
21
+ * This provides the ui options that will be used by Smart Links Flexible UI
22
+ * to render its underlying elements.
23
+ */
24
+ export var FlexibleUiOptionContext = /*#__PURE__*/createContext(undefined);
25
+ export var useFlexibleUiOptionContext = function useFlexibleUiOptionContext() {
26
+ return useContext(FlexibleUiOptionContext);
18
27
  };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "25.6.1",
3
+ "version": "25.7.0",
4
4
  "sideEffects": false
5
5
  }
@@ -208,7 +208,8 @@ export function CardWithUrlContent(_ref) {
208
208
  testId: testId,
209
209
  inlinePreloaderStyle: inlinePreloaderStyle,
210
210
  showHoverPreview: showHoverPreview,
211
- showAuthTooltip: showAuthTooltip
211
+ showAuthTooltip: showAuthTooltip,
212
+ showServerActions: showServerActions
212
213
  });
213
214
  case 'block':
214
215
  return /*#__PURE__*/React.createElement(BlockCard, {