@atlaskit/smart-card 38.8.0 → 38.9.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 (65) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cjs/utils/analytics/analytics.js +1 -1
  3. package/dist/cjs/view/BlockCard/index.js +4 -2
  4. package/dist/cjs/view/BlockCard/views/ResolvedView.js +3 -1
  5. package/dist/cjs/view/CardWithUrl/component.js +15 -10
  6. package/dist/cjs/view/FlexibleCard/components/blocks/action-block/action-footer/index.js +3 -2
  7. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/index.js +3 -1
  8. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/resolved/index.js +4 -2
  9. package/dist/cjs/view/FlexibleCard/components/common/image-icon/index.js +47 -15
  10. package/dist/cjs/view/FlexibleCard/components/elements/common/base-icon-element/index.js +7 -3
  11. package/dist/cjs/view/FlexibleCard/components/elements/common/base-lozenge-element/lozenge-action/lozenge-action-trigger/index.js +5 -3
  12. package/dist/cjs/view/HoverCard/components/HoverCardComponent.js +2 -1
  13. package/dist/cjs/view/InlineCard/ErroredView/index.js +3 -3
  14. package/dist/cjs/view/LinkUrl/index.js +1 -1
  15. package/dist/es2019/utils/analytics/analytics.js +1 -1
  16. package/dist/es2019/view/BlockCard/index.js +4 -2
  17. package/dist/es2019/view/BlockCard/views/ResolvedView.js +3 -1
  18. package/dist/es2019/view/CardWithUrl/component.js +16 -11
  19. package/dist/es2019/view/FlexibleCard/components/blocks/action-block/action-footer/index.js +3 -2
  20. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/index.js +2 -0
  21. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/resolved/index.js +3 -1
  22. package/dist/es2019/view/FlexibleCard/components/common/image-icon/index.js +49 -22
  23. package/dist/es2019/view/FlexibleCard/components/elements/common/base-icon-element/index.js +7 -4
  24. package/dist/es2019/view/FlexibleCard/components/elements/common/base-lozenge-element/lozenge-action/lozenge-action-trigger/index.js +5 -3
  25. package/dist/es2019/view/HoverCard/components/HoverCardComponent.js +2 -1
  26. package/dist/es2019/view/InlineCard/ErroredView/index.js +4 -4
  27. package/dist/es2019/view/LinkUrl/index.js +1 -1
  28. package/dist/esm/utils/analytics/analytics.js +1 -1
  29. package/dist/esm/view/BlockCard/index.js +4 -2
  30. package/dist/esm/view/BlockCard/views/ResolvedView.js +3 -1
  31. package/dist/esm/view/CardWithUrl/component.js +16 -11
  32. package/dist/esm/view/FlexibleCard/components/blocks/action-block/action-footer/index.js +3 -2
  33. package/dist/esm/view/FlexibleCard/components/blocks/title-block/index.js +3 -1
  34. package/dist/esm/view/FlexibleCard/components/blocks/title-block/resolved/index.js +4 -2
  35. package/dist/esm/view/FlexibleCard/components/common/image-icon/index.js +46 -14
  36. package/dist/esm/view/FlexibleCard/components/elements/common/base-icon-element/index.js +7 -3
  37. package/dist/esm/view/FlexibleCard/components/elements/common/base-lozenge-element/lozenge-action/lozenge-action-trigger/index.js +5 -3
  38. package/dist/esm/view/HoverCard/components/HoverCardComponent.js +2 -1
  39. package/dist/esm/view/InlineCard/ErroredView/index.js +4 -4
  40. package/dist/esm/view/LinkUrl/index.js +1 -1
  41. package/dist/types/ssr.d.ts +1 -0
  42. package/dist/types/view/BlockCard/index.d.ts +1 -1
  43. package/dist/types/view/BlockCard/types.d.ts +1 -0
  44. package/dist/types/view/BlockCard/views/types.d.ts +1 -1
  45. package/dist/types/view/CardWithUrl/types.d.ts +1 -0
  46. package/dist/types/view/FlexibleCard/components/blocks/title-block/index.d.ts +1 -1
  47. package/dist/types/view/FlexibleCard/components/blocks/title-block/resolved/index.d.ts +1 -1
  48. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +4 -0
  49. package/dist/types/view/FlexibleCard/components/common/image-icon/index.d.ts +1 -1
  50. package/dist/types/view/FlexibleCard/components/common/image-icon/types.d.ts +1 -0
  51. package/dist/types/view/FlexibleCard/components/elements/common/base-icon-element/index.d.ts +5 -1
  52. package/dist/types/view/FlexibleCard/types.d.ts +4 -0
  53. package/dist/types-ts4.5/ssr.d.ts +1 -0
  54. package/dist/types-ts4.5/view/BlockCard/index.d.ts +1 -1
  55. package/dist/types-ts4.5/view/BlockCard/types.d.ts +1 -0
  56. package/dist/types-ts4.5/view/BlockCard/views/types.d.ts +1 -1
  57. package/dist/types-ts4.5/view/CardWithUrl/types.d.ts +1 -0
  58. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/title-block/index.d.ts +1 -1
  59. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/title-block/resolved/index.d.ts +1 -1
  60. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/types.d.ts +4 -0
  61. package/dist/types-ts4.5/view/FlexibleCard/components/common/image-icon/index.d.ts +1 -1
  62. package/dist/types-ts4.5/view/FlexibleCard/components/common/image-icon/types.d.ts +1 -0
  63. package/dist/types-ts4.5/view/FlexibleCard/components/elements/common/base-icon-element/index.d.ts +5 -1
  64. package/dist/types-ts4.5/view/FlexibleCard/types.d.ts +4 -0
  65. package/package.json +10 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 38.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#166270](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/166270)
8
+ [`231ec9798652d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/231ec9798652d) -
9
+ [ux] Added hideIconLoadingSkeleton prop to CardSSR to allow for hiding the loading skeleton for
10
+ image icons in the title of block cards. Set to true in the renderer.
11
+
3
12
  ## 38.8.0
4
13
 
5
14
  ### Minor Changes
@@ -11,7 +11,7 @@ var ANALYTICS_CHANNEL = exports.ANALYTICS_CHANNEL = 'media';
11
11
  var context = exports.context = {
12
12
  componentName: 'smart-cards',
13
13
  packageName: "@atlaskit/smart-card",
14
- packageVersion: "38.8.0"
14
+ packageVersion: "38.9.0"
15
15
  };
16
16
  var TrackQuickActionType = exports.TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
17
17
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -30,7 +30,8 @@ var BlockCard = exports.BlockCard = function BlockCard(_ref) {
30
30
  onError = _ref.onError,
31
31
  testId = _ref.testId,
32
32
  actionOptions = _ref.actionOptions,
33
- CompetitorPrompt = _ref.CompetitorPrompt;
33
+ CompetitorPrompt = _ref.CompetitorPrompt,
34
+ hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton;
34
35
  var status = cardState.status;
35
36
  var blockCardProps = {
36
37
  id: id,
@@ -44,7 +45,8 @@ var BlockCard = exports.BlockCard = function BlockCard(_ref) {
44
45
  onResolve: onResolve,
45
46
  renderers: renderers,
46
47
  actionOptions: actionOptions,
47
- CompetitorPrompt: CompetitorPrompt
48
+ CompetitorPrompt: CompetitorPrompt,
49
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton
48
50
  };
49
51
  var _useControlDataExport = (0, _useControlDataExportConfig.useControlDataExportConfig)(),
50
52
  _useControlDataExport2 = _useControlDataExport.shouldControlDataExport,
@@ -42,7 +42,8 @@ var ResolvedView = function ResolvedView(_ref) {
42
42
  _ref$testId = _ref.testId,
43
43
  testId = _ref$testId === void 0 ? 'smart-block-resolved-view' : _ref$testId,
44
44
  url = _ref.url,
45
- CompetitorPrompt = _ref.CompetitorPrompt;
45
+ CompetitorPrompt = _ref.CompetitorPrompt,
46
+ hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton;
46
47
  var _useState = (0, _react.useState)(false),
47
48
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
48
49
  isPreviewBlockErrored = _useState2[0],
@@ -100,6 +101,7 @@ var ResolvedView = function ResolvedView(_ref) {
100
101
  }, {
101
102
  CompetitorPrompt: CompetitorPrompt,
102
103
  url: url,
104
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton,
103
105
  className: (0, _runtime.ax)([(0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v1') ? "_zulpu2gc _13mh1pd9 _2yhz14q2" : "_zulpcxkx _13mh1pd9"])
104
106
  })), /*#__PURE__*/React.createElement(_blocks.MetadataBlock, (0, _extends2.default)({
105
107
  primary: topMetadata,
@@ -50,7 +50,8 @@ function Component(_ref) {
50
50
  removeTextHighlightingFromTitle = _ref.removeTextHighlightingFromTitle,
51
51
  resolvingPlaceholder = _ref.resolvingPlaceholder,
52
52
  truncateInline = _ref.truncateInline,
53
- CompetitorPrompt = _ref.CompetitorPrompt;
53
+ CompetitorPrompt = _ref.CompetitorPrompt,
54
+ hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton;
54
55
  var _useAnalyticsEventsNe = (0, _analyticsNext.useAnalyticsEvents)(),
55
56
  createAnalyticsEvent = _useAnalyticsEventsNe.createAnalyticsEvent;
56
57
  var _useAnalyticsEvents = (0, _useAnalyticsEvents2.useAnalyticsEvents)(),
@@ -80,12 +81,7 @@ function Component(_ref) {
80
81
 
81
82
  // Setup UI handlers.
82
83
  var handleClickWrapper = (0, _react.useCallback)(function (event) {
83
- var isModifierKeyPressed = (0, _utils.isSpecialEvent)(event);
84
- // Ctrl+left click on mac typically doesn't trigger onClick
85
- // The event could have potentially had `e.preventDefault()` called on it by now
86
- // event by smart card internally
87
- // If it has been called then only then can `isModifierKeyPressed` be true.
88
- var target = isModifierKeyPressed ? '_blank' : '_self';
84
+ var isModifierKeyPressed = (0, _utils.isSpecialKey)(event) || (0, _utils.isSpecialClick)(event);
89
85
  fireEvent('ui.smartLink.clicked', {
90
86
  id: id,
91
87
  display: isFlexibleUi ? _constants.CardDisplay.Flexible : appearance,
@@ -97,9 +93,11 @@ function Component(_ref) {
97
93
  // delegate the click to the glance panel handler
98
94
  if (
99
95
  // eslint-disable-next-line @atlaskit/platform/no-preconditioning
100
- (0, _platformFeatureFlags.fg)('fun-1765_wire_up_glance_panel_to_smart_cards') && target !== '_blank' && ari && isGlancePanelAvailable !== null && isGlancePanelAvailable !== void 0 && isGlancePanelAvailable({
96
+ (0, _platformFeatureFlags.fg)('fun-1765_wire_up_glance_panel_to_smart_cards') && !isModifierKeyPressed && ari && openGlancePanel && isGlancePanelAvailable !== null && isGlancePanelAvailable !== void 0 && isGlancePanelAvailable({
101
97
  ari: ari
102
- }) && openGlancePanel) {
98
+ })) {
99
+ event.preventDefault();
100
+ event.stopPropagation();
103
101
  openGlancePanel({
104
102
  url: url,
105
103
  ari: ari,
@@ -113,6 +111,12 @@ function Component(_ref) {
113
111
  });
114
112
  } else if (!onClick && !isFlexibleUi) {
115
113
  var clickUrl = (0, _helpers.getClickUrl)(url, state.details);
114
+
115
+ // Ctrl+left click on mac typically doesn't trigger onClick
116
+ // The event could have potentially had `e.preventDefault()` called on it by now
117
+ // event by smart card internally
118
+ // If it has been called then only then can `isSpecialEvent` be true.
119
+ var target = (0, _utils.isSpecialEvent)(event) ? '_blank' : '_self';
116
120
  window.open(clickUrl, target);
117
121
  (0, _click.fireLinkClickedEvent)(createAnalyticsEvent)(event, {
118
122
  attributes: {
@@ -268,7 +272,8 @@ function Component(_ref) {
268
272
  onError: onError,
269
273
  testId: testId,
270
274
  actionOptions: actionOptions,
271
- CompetitorPrompt: CompetitorPrompt
275
+ CompetitorPrompt: CompetitorPrompt,
276
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton
272
277
  });
273
278
  case 'embed':
274
279
  return /*#__PURE__*/_react.default.createElement(_EmbedCard.EmbedCard, {
@@ -10,7 +10,7 @@ exports.ActionFooter = void 0;
10
10
  require("./index.compiled.css");
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _runtime = require("@compiled/react/runtime");
13
- var _error = _interopRequireDefault(require("@atlaskit/icon/utility/migration/error"));
13
+ var _error = _interopRequireDefault(require("@atlaskit/icon/core/migration/error"));
14
14
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
15
  var _compiled = require("@atlaskit/primitives/compiled");
16
16
  var _motionWrapper = _interopRequireDefault(require("../../../common/motion-wrapper"));
@@ -31,7 +31,8 @@ var getIcon = function getIcon(appearance) {
31
31
  label: "Error",
32
32
  LEGACY_size: "small",
33
33
  testId: "action-error-icon",
34
- LEGACY_margin: "0 ".concat("var(--ds-space-negative-025, -2px)")
34
+ LEGACY_margin: "0 ".concat("var(--ds-space-negative-025, -2px)"),
35
+ size: "small"
35
36
  });
36
37
  default:
37
38
  return null;
@@ -23,7 +23,7 @@ var _actionGroup = _interopRequireDefault(require("../action-group"));
23
23
  var _errored = _interopRequireDefault(require("./errored"));
24
24
  var _resolved = _interopRequireDefault(require("./resolved"));
25
25
  var _resolving = _interopRequireDefault(require("./resolving"));
26
- var _excluded = ["actions", "anchorTarget", "hideTitleTooltip", "maxLines", "onActionMenuOpenChange", "onClick", "status", "showActionOnHover", "testId", "text", "icon", "theme", "hideRetry", "metadataPosition", "hideIcon", "className", "anchorRef", "CompetitorPrompt", "url"];
26
+ var _excluded = ["actions", "anchorTarget", "hideTitleTooltip", "maxLines", "onActionMenuOpenChange", "onClick", "status", "showActionOnHover", "testId", "text", "icon", "theme", "hideRetry", "metadataPosition", "hideIcon", "className", "anchorRef", "CompetitorPrompt", "url", "hideIconLoadingSkeleton"];
27
27
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
28
28
  var actionStyles = null;
29
29
  var getTitleBlockViewComponent = function getTitleBlockViewComponent(status) {
@@ -80,6 +80,7 @@ var TitleBlock = function TitleBlock(_ref) {
80
80
  anchorRef = _ref.anchorRef,
81
81
  CompetitorPrompt = _ref.CompetitorPrompt,
82
82
  url = _ref.url,
83
+ hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton,
83
84
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
84
85
  var cardContext = (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ?
85
86
  // eslint-disable-next-line react-hooks/rules-of-hooks
@@ -139,6 +140,7 @@ var TitleBlock = function TitleBlock(_ref) {
139
140
  hideRetry: hideRetry
140
141
  } : undefined, {
141
142
  icon: icon,
143
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton,
142
144
  size: (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ? (_props$size = props.size) !== null && _props$size !== void 0 ? _props$size : ui === null || ui === void 0 ? void 0 : ui.size : props === null || props === void 0 ? void 0 : props.size
143
145
  }, (0, _platformFeatureFlags.fg)('platform-linking-flexible-card-context') ? undefined : {
144
146
  theme: theme
@@ -19,7 +19,7 @@ var _elements = require("../../../elements");
19
19
  var _block = _interopRequireDefault(require("../../block"));
20
20
  var _elementGroup = _interopRequireDefault(require("../../element-group"));
21
21
  var _utils = require("../../utils");
22
- var _excluded = ["actionGroup", "metadata", "position", "subtitle", "testId", "text", "icon", "title", "metadataPosition", "hideIcon", "CompetitorPrompt", "url"];
22
+ var _excluded = ["actionGroup", "metadata", "position", "subtitle", "testId", "text", "icon", "title", "metadataPosition", "hideIcon", "CompetitorPrompt", "url", "hideIconLoadingSkeleton"];
23
23
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
24
24
  var style = null;
25
25
  var styles = {
@@ -46,6 +46,7 @@ var TitleBlockResolvedView = function TitleBlockResolvedView(_ref) {
46
46
  hideIcon = _ref.hideIcon,
47
47
  CompetitorPrompt = _ref.CompetitorPrompt,
48
48
  url = _ref.url,
49
+ hideIconLoadingSkeleton = _ref.hideIconLoadingSkeleton,
49
50
  blockProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
50
51
  var size = blockProps.size;
51
52
  var metadataElements = (0, _utils.renderElementItems)(metadata);
@@ -55,7 +56,8 @@ var TitleBlockResolvedView = function TitleBlockResolvedView(_ref) {
55
56
  }), !hideIcon && /*#__PURE__*/React.createElement(_elements.LinkIcon, {
56
57
  overrideIcon: icon,
57
58
  position: position,
58
- size: size
59
+ size: size,
60
+ hideLoadingSkeleton: hideIconLoadingSkeleton
59
61
  }), /*#__PURE__*/React.createElement(_elementGroup.default, {
60
62
  direction: _constants.SmartLinkDirection.Vertical,
61
63
  width: _constants.SmartLinkWidth.Flexible,
@@ -8,8 +8,10 @@ Object.defineProperty(exports, "__esModule", {
8
8
  });
9
9
  exports.default = void 0;
10
10
  require("./index.compiled.css");
11
- var React = _interopRequireWildcard(require("react"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var React = _react;
12
13
  var _runtime = require("@compiled/react/runtime");
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
15
  var _reactRenderImage = _interopRequireDefault(require("react-render-image"));
14
16
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
17
  var _loadingSkeleton = require("../loading-skeleton");
@@ -26,15 +28,23 @@ var ImageIcon = function ImageIcon(_ref) {
26
28
  _ref$appearance = _ref.appearance,
27
29
  appearance = _ref$appearance === void 0 ? 'square' : _ref$appearance,
28
30
  onError = _ref.onError,
29
- onLoad = _ref.onLoad;
30
- return /*#__PURE__*/React.createElement(_reactRenderImage.default, {
31
- src: url,
32
- loading: /*#__PURE__*/React.createElement(_loadingSkeleton.LoadingSkeleton, {
33
- testId: "".concat(testId, "-loading"),
34
- width: width,
35
- height: height
36
- }),
37
- loaded: /*#__PURE__*/React.createElement("img", {
31
+ onLoad = _ref.onLoad,
32
+ _ref$hideLoadingSkele = _ref.hideLoadingSkeleton,
33
+ hideLoadingSkeleton = _ref$hideLoadingSkele === void 0 ? false : _ref$hideLoadingSkele;
34
+ var _useState = (0, _react.useState)(false),
35
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
36
+ hasImageErrored = _useState2[0],
37
+ setHasImageErrored = _useState2[1];
38
+
39
+ // If url changes, reset state
40
+ (0, _react.useEffect)(function () {
41
+ setHasImageErrored(false);
42
+ }, [url]);
43
+ if (hasImageErrored) {
44
+ return defaultIcon;
45
+ }
46
+ if (hideLoadingSkeleton && (0, _platformFeatureFlags.fg)('platform_fix_block_card_img_icon_vc')) {
47
+ return /*#__PURE__*/React.createElement("img", {
38
48
  src: url,
39
49
  "data-testid": "".concat(testId, "-image"),
40
50
  alt: "",
@@ -42,11 +52,33 @@ var ImageIcon = function ImageIcon(_ref) {
42
52
  width: width,
43
53
  height: height
44
54
  },
55
+ onError: function onError() {
56
+ return setHasImageErrored(true);
57
+ },
45
58
  className: (0, _runtime.ax)([appearance === 'round' && (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v2') && styles.roundImg])
46
- }),
47
- errored: defaultIcon,
48
- onError: onError,
49
- onLoad: onLoad
50
- });
59
+ });
60
+ } else {
61
+ return /*#__PURE__*/React.createElement(_reactRenderImage.default, {
62
+ src: url,
63
+ loading: /*#__PURE__*/React.createElement(_loadingSkeleton.LoadingSkeleton, {
64
+ testId: "".concat(testId, "-loading"),
65
+ width: width,
66
+ height: height
67
+ }),
68
+ loaded: /*#__PURE__*/React.createElement("img", {
69
+ src: url,
70
+ "data-testid": "".concat(testId, "-image"),
71
+ alt: "",
72
+ style: {
73
+ width: width,
74
+ height: height
75
+ },
76
+ className: (0, _runtime.ax)([appearance === 'round' && (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v2') && styles.roundImg])
77
+ }),
78
+ errored: defaultIcon,
79
+ onError: onError,
80
+ onLoad: onLoad
81
+ });
82
+ }
51
83
  };
52
84
  var _default = exports.default = ImageIcon;
@@ -62,6 +62,7 @@ var renderDefaultIcon = function renderDefaultIcon(label, testId) {
62
62
  var renderImageIcon = function renderImageIcon(defaultIcon, url, testId) {
63
63
  var size = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _constants.SmartLinkSize.Medium;
64
64
  var appearance = arguments.length > 4 ? arguments[4] : undefined;
65
+ var hideLoadingSkeleton = arguments.length > 5 ? arguments[5] : undefined;
65
66
  var width = size === _constants.SmartLinkSize.Large ? "var(--ds-space-300, 24px)" : "var(--ds-space-200, 16px)";
66
67
  if (url) {
67
68
  return /*#__PURE__*/React.createElement(_imageIcon.default, (0, _extends2.default)({
@@ -72,6 +73,8 @@ var renderImageIcon = function renderImageIcon(defaultIcon, url, testId) {
72
73
  height: width
73
74
  }, (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v2') && {
74
75
  appearance: appearance
76
+ }, {
77
+ hideLoadingSkeleton: hideLoadingSkeleton
75
78
  }));
76
79
  }
77
80
  };
@@ -98,11 +101,12 @@ var IconElement = function IconElement(_ref) {
98
101
  testId = _ref$testId === void 0 ? 'smart-element-icon' : _ref$testId,
99
102
  url = _ref.url,
100
103
  _ref$appearance = _ref.appearance,
101
- appearance = _ref$appearance === void 0 ? 'square' : _ref$appearance;
104
+ appearance = _ref$appearance === void 0 ? 'square' : _ref$appearance,
105
+ hideLoadingSkeleton = _ref.hideLoadingSkeleton;
102
106
  var element = (0, _react.useMemo)(function () {
103
107
  var defaultIcon = renderDefaultIcon(label, testId);
104
- return overrideIcon || (render === null || render === void 0 ? void 0 : render()) || renderImageIcon(defaultIcon, url, testId, size, (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v2') ? appearance : undefined) || renderAtlaskitIcon(icon, testId, size) || defaultIcon;
105
- }, [label, testId, overrideIcon, render, url, size, appearance, icon]);
108
+ return overrideIcon || (render === null || render === void 0 ? void 0 : render()) || renderImageIcon(defaultIcon, url, testId, size, (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v2') ? appearance : undefined, hideLoadingSkeleton) || renderAtlaskitIcon(icon, testId, size) || defaultIcon;
109
+ }, [label, testId, overrideIcon, render, url, size, appearance, hideLoadingSkeleton, icon]);
106
110
  var width = (0, _utils2.getIconWidth)(size);
107
111
  return /*#__PURE__*/React.createElement("div", (0, _extends2.default)({}, (0, _platformFeatureFlags.fg)('platform-linking-visual-refresh-v1') ? {} : (0, _defineProperty2.default)({}, 'data-fit-to-content', true), {
108
112
  "data-smart-element": name,
@@ -15,7 +15,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
15
15
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
16
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
17
  var _react2 = require("@compiled/react");
18
- var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/utility/migration/chevron-down"));
18
+ var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/core/migration/chevron-down"));
19
19
  var _linkingCommon = require("@atlaskit/linking-common");
20
20
  var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
21
21
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
@@ -61,7 +61,8 @@ var LozengeActionTriggerOld = function LozengeActionTriggerOld(_ref) {
61
61
  color: "currentColor",
62
62
  label: "options",
63
63
  LEGACY_size: "medium",
64
- LEGACY_margin: "-4px -8px -4px -7px"
64
+ LEGACY_margin: "-4px -8px -4px -7px",
65
+ size: "small"
65
66
  }))));
66
67
  }, [appearance, isBold, text]);
67
68
  return /*#__PURE__*/React.createElement("button", (0, _extends2.default)({
@@ -151,7 +152,8 @@ var LozengeActionTrigger = function LozengeActionTrigger(_ref2) {
151
152
  color: "currentColor",
152
153
  label: "options",
153
154
  LEGACY_size: "medium",
154
- LEGACY_margin: "-4px -8px -4px -7px"
155
+ LEGACY_margin: "-4px -8px -4px -7px",
156
+ size: "small"
155
157
  })))));
156
158
  }, [appearance, isHovering, isPressing, text, isOpen, lozengeBackgroundColor, lozengeForegroundColor]);
157
159
  return /*#__PURE__*/React.createElement("button", (0, _extends2.default)({
@@ -241,6 +241,7 @@ var HoverCardComponent = exports.HoverCardComponent = function HoverCardComponen
241
241
  label: label
242
242
  // @ts-ignore: [PIT-1685] Fails in post-office due to backwards incompatibility issue with React 18
243
243
  ,
244
- popupComponent: _CustomPopupContainer.default
244
+ popupComponent: _CustomPopupContainer.default,
245
+ shouldRenderToParent: (0, _platformFeatureFlags.fg)('should-render-to-parent-should-be-true-linking-pla')
245
246
  });
246
247
  };
@@ -12,7 +12,6 @@ var _react = _interopRequireDefault(require("react"));
12
12
  var _reactIntlNext = require("react-intl-next");
13
13
  var _button = _interopRequireDefault(require("@atlaskit/button"));
14
14
  var _error = _interopRequireDefault(require("@atlaskit/icon/core/migration/error"));
15
- var _error2 = _interopRequireDefault(require("@atlaskit/icon/utility/migration/error"));
16
15
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
17
16
  var _compiled = require("@atlaskit/primitives/compiled");
18
17
  var _messages = require("../../../messages");
@@ -37,11 +36,12 @@ var fallbackIcon = function fallbackIcon() {
37
36
  return /*#__PURE__*/_react.default.createElement(_compiled.Box, {
38
37
  as: "span",
39
38
  xcss: styles.iconWrapper
40
- }, /*#__PURE__*/_react.default.createElement(_error2.default, {
39
+ }, /*#__PURE__*/_react.default.createElement(_error.default, {
41
40
  color: "var(--ds-icon-danger, #C9372C)",
42
41
  label: "error",
43
42
  LEGACY_size: "small",
44
- testId: "errored-view-default-icon"
43
+ testId: "errored-view-default-icon",
44
+ size: "small"
45
45
  }));
46
46
  };
47
47
  var InlineCardErroredView = exports.InlineCardErroredView = function InlineCardErroredView(_ref) {
@@ -20,7 +20,7 @@ var _excluded = ["href", "children", "checkSafety", "onClick", "testId", "isLink
20
20
  _excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
21
21
  var PACKAGE_DATA = {
22
22
  packageName: "@atlaskit/smart-card",
23
- packageVersion: "38.8.0",
23
+ packageVersion: "38.9.0",
24
24
  componentName: 'linkUrl'
25
25
  };
26
26
  var Anchor = (0, _click.withLinkClickedEvent)('a');
@@ -2,7 +2,7 @@ export const ANALYTICS_CHANNEL = 'media';
2
2
  export const context = {
3
3
  componentName: 'smart-cards',
4
4
  packageName: "@atlaskit/smart-card",
5
- packageVersion: "38.8.0"
5
+ packageVersion: "38.9.0"
6
6
  };
7
7
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
8
8
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -23,7 +23,8 @@ export const BlockCard = ({
23
23
  onError,
24
24
  testId,
25
25
  actionOptions,
26
- CompetitorPrompt
26
+ CompetitorPrompt,
27
+ hideIconLoadingSkeleton
27
28
  }) => {
28
29
  const {
29
30
  status
@@ -38,7 +39,8 @@ export const BlockCard = ({
38
39
  onResolve,
39
40
  renderers,
40
41
  actionOptions,
41
- CompetitorPrompt
42
+ CompetitorPrompt,
43
+ hideIconLoadingSkeleton
42
44
  };
43
45
  const {
44
46
  shouldControlDataExport = false
@@ -31,7 +31,8 @@ const ResolvedView = ({
31
31
  actionOptions,
32
32
  testId = 'smart-block-resolved-view',
33
33
  url,
34
- CompetitorPrompt
34
+ CompetitorPrompt,
35
+ hideIconLoadingSkeleton
35
36
  }) => {
36
37
  const [isPreviewBlockErrored, setIsPreviewBlockErrored] = useState(false);
37
38
  const {
@@ -84,6 +85,7 @@ const ResolvedView = ({
84
85
  }, {
85
86
  CompetitorPrompt: CompetitorPrompt,
86
87
  url: url,
88
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton,
87
89
  className: ax([fg('platform-linking-visual-refresh-v1') ? "_zulpu2gc _13mh1pd9 _2yhz14q2" : "_zulpcxkx _13mh1pd9"])
88
90
  })), /*#__PURE__*/React.createElement(MetadataBlock, _extends({
89
91
  primary: topMetadata,
@@ -7,7 +7,7 @@ import { useSmartLink } from '../../state';
7
7
  import { succeedUfoExperience } from '../../state/analytics';
8
8
  import { getClickUrl, getDefinitionId, getExtensionKey, getObjectAri, getObjectIconUrl, getObjectName, getResourceType, getServices, isFinalState } from '../../state/helpers';
9
9
  import { SmartLinkModalProvider } from '../../state/modal';
10
- import { isSpecialEvent } from '../../utils';
10
+ import { isSpecialClick, isSpecialEvent, isSpecialKey } from '../../utils';
11
11
  import { combineActionOptions } from '../../utils/actions/combine-action-options';
12
12
  import { fireLinkClickedEvent } from '../../utils/analytics/click';
13
13
  import { SmartLinkAnalyticsContext } from '../../utils/analytics/SmartLinkAnalyticsContext';
@@ -41,7 +41,8 @@ function Component({
41
41
  removeTextHighlightingFromTitle,
42
42
  resolvingPlaceholder,
43
43
  truncateInline,
44
- CompetitorPrompt
44
+ CompetitorPrompt,
45
+ hideIconLoadingSkeleton
45
46
  }) {
46
47
  const {
47
48
  createAnalyticsEvent
@@ -73,12 +74,7 @@ function Component({
73
74
 
74
75
  // Setup UI handlers.
75
76
  const handleClickWrapper = useCallback(event => {
76
- const isModifierKeyPressed = isSpecialEvent(event);
77
- // Ctrl+left click on mac typically doesn't trigger onClick
78
- // The event could have potentially had `e.preventDefault()` called on it by now
79
- // event by smart card internally
80
- // If it has been called then only then can `isModifierKeyPressed` be true.
81
- const target = isModifierKeyPressed ? '_blank' : '_self';
77
+ const isModifierKeyPressed = isSpecialKey(event) || isSpecialClick(event);
82
78
  fireEvent('ui.smartLink.clicked', {
83
79
  id,
84
80
  display: isFlexibleUi ? CardDisplay.Flexible : appearance,
@@ -90,9 +86,11 @@ function Component({
90
86
  // delegate the click to the glance panel handler
91
87
  if (
92
88
  // eslint-disable-next-line @atlaskit/platform/no-preconditioning
93
- fg('fun-1765_wire_up_glance_panel_to_smart_cards') && target !== '_blank' && ari && isGlancePanelAvailable !== null && isGlancePanelAvailable !== void 0 && isGlancePanelAvailable({
89
+ fg('fun-1765_wire_up_glance_panel_to_smart_cards') && !isModifierKeyPressed && ari && openGlancePanel && isGlancePanelAvailable !== null && isGlancePanelAvailable !== void 0 && isGlancePanelAvailable({
94
90
  ari
95
- }) && openGlancePanel) {
91
+ })) {
92
+ event.preventDefault();
93
+ event.stopPropagation();
96
94
  openGlancePanel({
97
95
  url,
98
96
  ari,
@@ -106,6 +104,12 @@ function Component({
106
104
  });
107
105
  } else if (!onClick && !isFlexibleUi) {
108
106
  const clickUrl = getClickUrl(url, state.details);
107
+
108
+ // Ctrl+left click on mac typically doesn't trigger onClick
109
+ // The event could have potentially had `e.preventDefault()` called on it by now
110
+ // event by smart card internally
111
+ // If it has been called then only then can `isSpecialEvent` be true.
112
+ const target = isSpecialEvent(event) ? '_blank' : '_self';
109
113
  window.open(clickUrl, target);
110
114
  fireLinkClickedEvent(createAnalyticsEvent)(event, {
111
115
  attributes: {
@@ -257,7 +261,8 @@ function Component({
257
261
  onError: onError,
258
262
  testId: testId,
259
263
  actionOptions: actionOptions,
260
- CompetitorPrompt: CompetitorPrompt
264
+ CompetitorPrompt: CompetitorPrompt,
265
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton
261
266
  });
262
267
  case 'embed':
263
268
  return /*#__PURE__*/React.createElement(EmbedCard, {
@@ -2,7 +2,7 @@
2
2
  import "./index.compiled.css";
3
3
  import * as React from 'react';
4
4
  import { ax, ix } from "@compiled/react/runtime";
5
- import ErrorIcon from '@atlaskit/icon/utility/migration/error';
5
+ import ErrorIcon from '@atlaskit/icon/core/migration/error';
6
6
  import { fg } from '@atlaskit/platform-feature-flags';
7
7
  import { Box, Inline } from '@atlaskit/primitives/compiled';
8
8
  import MotionWrapper from '../../../common/motion-wrapper';
@@ -22,7 +22,8 @@ const getIcon = appearance => {
22
22
  label: "Error",
23
23
  LEGACY_size: "small",
24
24
  testId: "action-error-icon",
25
- LEGACY_margin: `0 ${"var(--ds-space-negative-025, -2px)"}`
25
+ LEGACY_margin: `0 ${"var(--ds-space-negative-025, -2px)"}`,
26
+ size: "small"
26
27
  });
27
28
  default:
28
29
  return null;
@@ -63,6 +63,7 @@ const TitleBlock = ({
63
63
  anchorRef,
64
64
  CompetitorPrompt,
65
65
  url,
66
+ hideIconLoadingSkeleton,
66
67
  ...props
67
68
  }) => {
68
69
  var _props$size;
@@ -121,6 +122,7 @@ const TitleBlock = ({
121
122
  hideRetry
122
123
  } : undefined, {
123
124
  icon: icon,
125
+ hideIconLoadingSkeleton: hideIconLoadingSkeleton,
124
126
  size: fg('platform-linking-flexible-card-context') ? (_props$size = props.size) !== null && _props$size !== void 0 ? _props$size : ui === null || ui === void 0 ? void 0 : ui.size : props === null || props === void 0 ? void 0 : props.size
125
127
  }, fg('platform-linking-flexible-card-context') ? undefined : {
126
128
  theme
@@ -33,6 +33,7 @@ const TitleBlockResolvedView = ({
33
33
  hideIcon,
34
34
  CompetitorPrompt,
35
35
  url,
36
+ hideIconLoadingSkeleton,
36
37
  ...blockProps
37
38
  }) => {
38
39
  const {
@@ -45,7 +46,8 @@ const TitleBlockResolvedView = ({
45
46
  }), !hideIcon && /*#__PURE__*/React.createElement(LinkIcon, {
46
47
  overrideIcon: icon,
47
48
  position: position,
48
- size: size
49
+ size: size,
50
+ hideLoadingSkeleton: hideIconLoadingSkeleton
49
51
  }), /*#__PURE__*/React.createElement(ElementGroup, {
50
52
  direction: SmartLinkDirection.Vertical,
51
53
  width: SmartLinkWidth.Flexible,