@atlaskit/media-card 77.7.7 → 77.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 (66) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/card/card.js +10 -1
  3. package/dist/cjs/card/cardView.js +11 -3
  4. package/dist/cjs/card/media-card-analytics-error-boundary.js +1 -1
  5. package/dist/cjs/card/ui/openMediaViewerButton/openMediaViewerButton.js +38 -0
  6. package/dist/cjs/card/ui/wrapper/styles.js +1 -1
  7. package/dist/cjs/card/v2/cardV2.js +1 -1
  8. package/dist/cjs/card/v2/cardViewV2.js +12 -4
  9. package/dist/cjs/card/v2/cardviews/cardViewWrapper.js +12 -4
  10. package/dist/cjs/card/v2/cardviews/index.js +6 -2
  11. package/dist/cjs/card/v2/fileCard.js +15 -0
  12. package/dist/cjs/index.js +19 -0
  13. package/dist/cjs/inline/index.js +14 -1
  14. package/dist/cjs/inline/loader.js +1 -1
  15. package/dist/cjs/inline/mediaInlineCardAnalytics.js +13 -1
  16. package/dist/cjs/utils/ufoExperiences.js +1 -1
  17. package/dist/es2019/card/card.js +10 -1
  18. package/dist/es2019/card/cardView.js +10 -3
  19. package/dist/es2019/card/media-card-analytics-error-boundary.js +1 -1
  20. package/dist/es2019/card/ui/openMediaViewerButton/openMediaViewerButton.js +37 -0
  21. package/dist/es2019/card/ui/wrapper/styles.js +5 -1
  22. package/dist/es2019/card/v2/cardV2.js +1 -1
  23. package/dist/es2019/card/v2/cardViewV2.js +11 -4
  24. package/dist/es2019/card/v2/cardviews/cardViewWrapper.js +10 -3
  25. package/dist/es2019/card/v2/cardviews/index.js +6 -2
  26. package/dist/es2019/card/v2/fileCard.js +15 -0
  27. package/dist/es2019/index.js +2 -1
  28. package/dist/es2019/inline/index.js +2 -1
  29. package/dist/es2019/inline/loader.js +1 -1
  30. package/dist/es2019/inline/mediaInlineCardAnalytics.js +10 -1
  31. package/dist/es2019/utils/ufoExperiences.js +1 -1
  32. package/dist/esm/card/card.js +10 -1
  33. package/dist/esm/card/cardView.js +11 -3
  34. package/dist/esm/card/media-card-analytics-error-boundary.js +1 -1
  35. package/dist/esm/card/ui/openMediaViewerButton/openMediaViewerButton.js +31 -0
  36. package/dist/esm/card/ui/wrapper/styles.js +2 -2
  37. package/dist/esm/card/v2/cardV2.js +1 -1
  38. package/dist/esm/card/v2/cardViewV2.js +12 -4
  39. package/dist/esm/card/v2/cardviews/cardViewWrapper.js +12 -4
  40. package/dist/esm/card/v2/cardviews/index.js +6 -2
  41. package/dist/esm/card/v2/fileCard.js +15 -0
  42. package/dist/esm/index.js +2 -1
  43. package/dist/esm/inline/index.js +2 -1
  44. package/dist/esm/inline/loader.js +1 -1
  45. package/dist/esm/inline/mediaInlineCardAnalytics.js +13 -1
  46. package/dist/esm/utils/ufoExperiences.js +1 -1
  47. package/dist/types/card/card.d.ts +4 -2
  48. package/dist/types/card/cardView.d.ts +3 -1
  49. package/dist/types/card/ui/openMediaViewerButton/openMediaViewerButton.d.ts +13 -0
  50. package/dist/types/card/v2/cardViewV2.d.ts +4 -2
  51. package/dist/types/card/v2/cardviews/cardViewWrapper.d.ts +3 -1
  52. package/dist/types/card/v2/cardviews/index.d.ts +4 -2
  53. package/dist/types/index.d.ts +2 -1
  54. package/dist/types/inline/index.d.ts +1 -0
  55. package/dist/types/inline/mediaInlineCardAnalytics.d.ts +3 -0
  56. package/dist/types-ts4.5/card/card.d.ts +4 -2
  57. package/dist/types-ts4.5/card/cardView.d.ts +3 -1
  58. package/dist/types-ts4.5/card/ui/openMediaViewerButton/openMediaViewerButton.d.ts +13 -0
  59. package/dist/types-ts4.5/card/v2/cardViewV2.d.ts +4 -2
  60. package/dist/types-ts4.5/card/v2/cardviews/cardViewWrapper.d.ts +3 -1
  61. package/dist/types-ts4.5/card/v2/cardviews/index.d.ts +4 -2
  62. package/dist/types-ts4.5/index.d.ts +2 -1
  63. package/dist/types-ts4.5/inline/index.d.ts +1 -0
  64. package/dist/types-ts4.5/inline/mediaInlineCardAnalytics.d.ts +3 -0
  65. package/example-helpers/styles.ts +0 -2
  66. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/media-card
2
2
 
3
+ ## 77.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#71201](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/71201) [`1b48cdd3c074`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/1b48cdd3c074) - ED-21767 export inline image analytic function.
8
+
9
+ ## 77.8.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [#69045](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/69045) [`c181471c1afb`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/c181471c1afb) - Made media card keyboard accessible when media viewer is enabled
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
3
19
  ## 77.7.7
4
20
 
5
21
  ### Patch Changes
@@ -50,7 +50,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
50
50
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
51
51
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
52
52
  var packageName = "@atlaskit/media-card";
53
- var packageVersion = "77.7.7";
53
+ var packageVersion = "77.9.0";
54
54
  var CardBase = exports.CardBase = /*#__PURE__*/function (_Component) {
55
55
  (0, _inherits2.default)(CardBase, _Component);
56
56
  var _super = _createSuper(CardBase);
@@ -62,6 +62,7 @@ var CardBase = exports.CardBase = /*#__PURE__*/function (_Component) {
62
62
  // of Cards regardless of whether it shares the same file (either internal or external)
63
63
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "internalOccurrenceKey", (0, _generateUniqueId.generateUniqueId)());
64
64
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hasBeenMounted", false);
65
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaViewerButtonRef", null);
65
66
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fileStateFlags", {
66
67
  wasStatusUploading: false,
67
68
  wasStatusProcessing: false
@@ -449,6 +450,9 @@ var CardBase = exports.CardBase = /*#__PURE__*/function (_Component) {
449
450
  cardRef: cardRef
450
451
  });
451
452
  });
453
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setMediaViewerButtonRef", function (buttonRef) {
454
+ _this.mediaViewerButtonRef = buttonRef;
455
+ });
452
456
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderInlinePlayer", function () {
453
457
  var _this$props6 = _this.props,
454
458
  identifier = _this$props6.identifier,
@@ -482,6 +486,9 @@ var CardBase = exports.CardBase = /*#__PURE__*/function (_Component) {
482
486
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMediaViewerClose", function () {
483
487
  _this.setState({
484
488
  mediaViewerSelectedItem: undefined
489
+ }, function () {
490
+ var _this$mediaViewerButt;
491
+ (_this$mediaViewerButt = _this.mediaViewerButtonRef) === null || _this$mediaViewerButt === void 0 || _this$mediaViewerButt.focus();
485
492
  });
486
493
  });
487
494
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onDisplayImage", function () {
@@ -583,12 +590,14 @@ var CardBase = exports.CardBase = /*#__PURE__*/function (_Component) {
583
590
  actions: actions,
584
591
  selectable: selectable,
585
592
  selected: selected,
593
+ shouldOpenMediaViewer: shouldOpenMediaViewer,
586
594
  onClick: withCallbacks ? onCardViewClick : undefined,
587
595
  onMouseEnter: withCallbacks ? onMouseEnter : undefined,
588
596
  disableOverlay: disableOverlay,
589
597
  progress: progress,
590
598
  onDisplayImage: withCallbacks ? onDisplayImage : undefined,
591
599
  innerRef: _this.setRef,
600
+ openMediaViewerButtonRef: _this.setMediaViewerButtonRef,
592
601
  testId: testId,
593
602
  featureFlags: featureFlags,
594
603
  titleBoxBgColor: titleBoxBgColor,
@@ -39,6 +39,7 @@ var _errors = require("../errors");
39
39
  var _wrapper = require("./ui/wrapper");
40
40
  var _classnames = require("./classnames");
41
41
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
42
+ var _openMediaViewerButton = _interopRequireDefault(require("./ui/openMediaViewerButton/openMediaViewerButton"));
42
43
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
43
44
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
44
45
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
@@ -408,7 +409,10 @@ var CardViewBase = exports.CardViewBase = /*#__PURE__*/function (_React$Componen
408
409
  disableOverlay = _this$props8.disableOverlay,
409
410
  cardPreview = _this$props8.cardPreview,
410
411
  mediaCardCursor = _this$props8.mediaCardCursor,
411
- shouldHideTooltip = _this$props8.shouldHideTooltip;
412
+ shouldHideTooltip = _this$props8.shouldHideTooltip,
413
+ _this$props8$openMedi = _this$props8.openMediaViewerButtonRef,
414
+ openMediaViewerButtonRef = _this$props8$openMedi === void 0 ? null : _this$props8$openMedi,
415
+ shouldOpenMediaViewer = _this$props8.shouldOpenMediaViewer;
412
416
  var _ref9 = metadata || {},
413
417
  name = _ref9.name;
414
418
  var shouldDisplayBackground = !cardPreview || !disableOverlay || status === 'error' || status === 'failed-processing';
@@ -416,7 +420,11 @@ var CardViewBase = exports.CardViewBase = /*#__PURE__*/function (_React$Componen
416
420
  var isTickBoxSelectable = !disableOverlay && !!selectable && !selected;
417
421
  // Disable tooltip for Media Single
418
422
  var shouldDisplayTooltip = !disableOverlay && !shouldHideTooltip;
419
- return (0, _react.jsx)(_wrapper.Wrapper, {
423
+ return (0, _react.jsx)(_react2.default.Fragment, null, shouldOpenMediaViewer && (0, _react.jsx)(_openMediaViewerButton.default, {
424
+ fileName: name !== null && name !== void 0 ? name : '',
425
+ innerRef: openMediaViewerButtonRef,
426
+ onClick: onClick
427
+ }), (0, _react.jsx)(_wrapper.Wrapper, {
420
428
  testId: testId || 'media-card-view',
421
429
  dimensions: dimensions,
422
430
  appearance: appearance,
@@ -435,7 +443,7 @@ var CardViewBase = exports.CardViewBase = /*#__PURE__*/function (_React$Componen
435
443
  content: name,
436
444
  position: "bottom",
437
445
  tag: 'div'
438
- }, this.renderContents()) : this.renderContents());
446
+ }, this.renderContents()) : this.renderContents()));
439
447
  }
440
448
  }]);
441
449
  return CardViewBase;
@@ -90,7 +90,7 @@ var WrappedMediaCardAnalyticsErrorBoundary = /*#__PURE__*/function (_React$Compo
90
90
  }(_react.default.Component);
91
91
  (0, _defineProperty2.default)(WrappedMediaCardAnalyticsErrorBoundary, "displayName", 'MediaCardAnalyticsErrorBoundary');
92
92
  var packageName = "@atlaskit/media-card";
93
- var packageVersion = "77.7.7";
93
+ var packageVersion = "77.9.0";
94
94
  var MediaCardAnalyticsErrorBoundary = (0, _mediaCommon.withMediaAnalyticsContext)({
95
95
  packageVersion: packageVersion,
96
96
  packageName: packageName,
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.visuallyHiddenStyles = exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+ var _react = require("@emotion/react");
12
+ var _react2 = _interopRequireDefault(require("react"));
13
+ var _reactIntlNext = require("react-intl-next");
14
+ var _mediaUi = require("@atlaskit/media-ui");
15
+ var _excluded = ["fileName", "innerRef"];
16
+ var _templateObject;
17
+ /** @jsx jsx */
18
+ var visuallyHiddenStyles = exports.visuallyHiddenStyles = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: 1px;\n height: 1px;\n padding: 0;\n position: fixed;\n border: 0;\n clip: rect(1px, 1px, 1px, 1px);\n overflow: hidden;\n white-space: nowrap;\n"])));
19
+ var OpenMediaViewerButton = function OpenMediaViewerButton(_ref) {
20
+ var fileName = _ref.fileName,
21
+ innerRef = _ref.innerRef,
22
+ props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
23
+ var intl = (0, _reactIntlNext.useIntl)();
24
+ return (0, _react.jsx)("button", (0, _extends2.default)({
25
+ ref: innerRef,
26
+ css: visuallyHiddenStyles
27
+ }, props), intl.formatMessage(_mediaUi.messages.open_file_in_viewer, {
28
+ name: fileName
29
+ }));
30
+ };
31
+ var OpenMediaViewerButtonWrapper = function OpenMediaViewerButtonWrapper(props) {
32
+ return props.intl ? (0, _react.jsx)(OpenMediaViewerButton, props) : (0, _react.jsx)(_reactIntlNext.IntlProvider, {
33
+ locale: "en"
34
+ }, (0, _react.jsx)(OpenMediaViewerButton, props));
35
+ };
36
+ var _default = exports.default = (0, _reactIntlNext.injectIntl)(OpenMediaViewerButtonWrapper, {
37
+ enforceContext: false
38
+ });
@@ -26,6 +26,6 @@ var wrapperStyles = exports.wrapperStyles = function wrapperStyles(_ref) {
26
26
  isTickBoxSelectable = _ref.isTickBoxSelectable,
27
27
  shouldDisplayTooltip = _ref.shouldDisplayTooltip,
28
28
  mediaCardCursor = _ref.mediaCardCursor;
29
- return (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n ", "\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n position: relative;\n font-family: ", ";\n ", "\n ", "\n ", "\n ", "\n ", "\n ", ";\n ", "\n\n /* We use classnames from here exceptionally to be able to handle styles when the Card is on hover */\n ", "\n ", "\n &:hover .", " {\n ", "\n }\n &:hover .", " {\n ", "\n }\n\n /* Tooltip does not support percentage dimensions. We enforce them here */\n ", "\n"])), (0, _styles.transition)(), (0, _constants.fontFamily)(), (0, _styles.getWrapperDimensions)(dimensions, appearance), displayBackground && "background: ".concat("var(--ds-background-neutral, ".concat(_colors.N20, ")"), ";"), _mediaUi.borderRadius, (0, _styles.getCursorStyle)(mediaCardCursor), (0, _styles.getWrapperShadow)(disableOverlay, selected), (0, _styles.generateResponsiveStyles)(breakpoint), _selection.hideNativeBrowserTextSelectionStyles, (0, _styles.getClickablePlayButtonStyles)(isPlayButtonClickable), (0, _styles.getSelectableTickBoxStyles)(isTickBoxSelectable), _styles2.blanketClassName, _styles2.fixedBlanketStyles, _styles3.actionsBarClassName, _styles3.fixedActionBarStyles, shouldDisplayTooltip && "> div { width: 100%; height: 100%; }");
29
+ return (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n ", "\n box-sizing: border-box;\n * {\n box-sizing: border-box;\n }\n position: relative;\n font-family: ", ";\n ", "\n ", "\n ", "\n ", "\n ", "\n ", ";\n ", "\n\n /* We use classnames from here exceptionally to be able to handle styles when the Card is on hover */\n ", "\n ", "\n &:hover .", " {\n ", "\n }\n &:hover .", " {\n ", "\n }\n\n /* Tooltip does not support percentage dimensions. We enforce them here */\n ", "\n\n button:focus + & {\n outline: solid 2px ", ";\n }\n"])), (0, _styles.transition)(), (0, _constants.fontFamily)(), (0, _styles.getWrapperDimensions)(dimensions, appearance), displayBackground && "background: ".concat("var(--ds-background-neutral, ".concat(_colors.N20, ")"), ";"), _mediaUi.borderRadius, (0, _styles.getCursorStyle)(mediaCardCursor), (0, _styles.getWrapperShadow)(disableOverlay, selected), (0, _styles.generateResponsiveStyles)(breakpoint), _selection.hideNativeBrowserTextSelectionStyles, (0, _styles.getClickablePlayButtonStyles)(isPlayButtonClickable), (0, _styles.getSelectableTickBoxStyles)(isTickBoxSelectable), _styles2.blanketClassName, _styles2.fixedBlanketStyles, _styles3.actionsBarClassName, _styles3.fixedActionBarStyles, shouldDisplayTooltip && "> div { width: 100%; height: 100%; }", "var(--ds-border-focused, ".concat(_colors.B100, ")"));
30
30
  };
31
31
  wrapperStyles.displayName = 'NewFileExperienceWrapper';
@@ -16,7 +16,7 @@ var _externalImageCard = require("./externalImageCard");
16
16
  var _fileCard = require("./fileCard");
17
17
  var _excluded = ["identifier"];
18
18
  var packageName = "@atlaskit/media-card";
19
- var packageVersion = "77.7.7";
19
+ var packageVersion = "77.9.0";
20
20
  var CardV2Base = exports.CardV2Base = function CardV2Base(_ref) {
21
21
  var identifier = _ref.identifier,
22
22
  otherProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
@@ -32,6 +32,7 @@ var _errors = require("../../errors");
32
32
  var _wrapper = require("../ui/wrapper");
33
33
  var _classnames = require("../classnames");
34
34
  var _useBreakpoint = require("../useBreakpoint");
35
+ var _openMediaViewerButton = _interopRequireDefault(require("../ui/openMediaViewerButton/openMediaViewerButton"));
35
36
  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); }
36
37
  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; }
37
38
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -62,7 +63,10 @@ var CardViewV2Base = exports.CardViewV2Base = function CardViewV2Base(_ref) {
62
63
  titleBoxBgColor = _ref.titleBoxBgColor,
63
64
  titleBoxIcon = _ref.titleBoxIcon,
64
65
  error = _ref.error,
65
- disableAnimation = _ref.disableAnimation;
66
+ disableAnimation = _ref.disableAnimation,
67
+ _ref$openMediaViewerB = _ref.openMediaViewerButtonRef,
68
+ openMediaViewerButtonRef = _ref$openMediaViewerB === void 0 ? null : _ref$openMediaViewerB,
69
+ shouldOpenMediaViewer = _ref.shouldOpenMediaViewer;
66
70
  var _useState = (0, _react2.useState)(false),
67
71
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
68
72
  didImageRender = _useState2[0],
@@ -205,7 +209,7 @@ var CardViewV2Base = exports.CardViewV2Base = function CardViewV2Base(_ref) {
205
209
  name = _ref5.name,
206
210
  createdAt = _ref5.createdAt;
207
211
  var actionsWithDetails = metadata && actions ? (0, _actions.attachDetailsToActions)(actions, metadata) : [];
208
- var content = (0, _react.jsx)(_react2.default.Fragment, null, (0, _react.jsx)("div", {
212
+ var contents = (0, _react.jsx)(_react2.default.Fragment, null, (0, _react.jsx)("div", {
209
213
  css: _styles.cardImageContainerStyles,
210
214
  className: _classnames.fileCardImageViewSelector,
211
215
  "data-testid": _classnames.fileCardImageViewSelector,
@@ -260,7 +264,11 @@ var CardViewV2Base = exports.CardViewV2Base = function CardViewV2Base(_ref) {
260
264
  })), disableOverlay || !actions || actions.length === 0 ? null : (0, _react.jsx)(_actionsBar.ActionsBar, {
261
265
  actions: actionsWithDetails
262
266
  }));
263
- return (0, _react.jsx)(_wrapper.Wrapper, {
267
+ return (0, _react.jsx)(_react2.default.Fragment, null, shouldOpenMediaViewer && (0, _react.jsx)(_openMediaViewerButton.default, {
268
+ fileName: name !== null && name !== void 0 ? name : '',
269
+ innerRef: openMediaViewerButtonRef,
270
+ onClick: onClick
271
+ }), (0, _react.jsx)(_wrapper.Wrapper, {
264
272
  testId: testId || 'media-card-view',
265
273
  dimensions: dimensions,
266
274
  onClick: onClick,
@@ -278,7 +286,7 @@ var CardViewV2Base = exports.CardViewV2Base = function CardViewV2Base(_ref) {
278
286
  content: name,
279
287
  position: "bottom",
280
288
  tag: "div"
281
- }, content) : content);
289
+ }, contents) : contents));
282
290
  };
283
291
  var CardViewV2 = exports.CardViewV2 = (0, _analyticsNext.withAnalyticsEvents)({
284
292
  onClick: (0, _analytics.createAndFireMediaCardEvent)({
@@ -18,7 +18,8 @@ var _tickBox = require("../../ui/tickBox/tickBox");
18
18
  var _blanket = require("../../ui/blanket/blanket");
19
19
  var _actionsBar = require("../../ui/actionsBar/actionsBar");
20
20
  var _classnames = require("../../classnames");
21
- var _excluded = ["cardPreview", "testId", "dimensions", "appearance", "metadata", "selected", "selectable", "actions", "breakpoint", "disableOverlay", "titleBoxBgColor", "titleBoxIcon", "shouldHideTooltip", "children", "onClick", "onMouseEnter", "mediaCardCursor", "customBlanket", "customTitleBox", "progressBar"];
21
+ var _openMediaViewerButton = _interopRequireDefault(require("../../ui/openMediaViewerButton/openMediaViewerButton"));
22
+ var _excluded = ["cardPreview", "testId", "dimensions", "appearance", "metadata", "selected", "selectable", "actions", "breakpoint", "disableOverlay", "titleBoxBgColor", "titleBoxIcon", "shouldHideTooltip", "children", "onClick", "onMouseEnter", "mediaCardCursor", "customBlanket", "customTitleBox", "progressBar", "shouldOpenMediaViewer", "openMediaViewerButtonRef"];
22
23
  /** @jsx jsx */
23
24
  var CardViewWrapper = exports.CardViewWrapper = /*#__PURE__*/_react2.default.forwardRef(function (_ref, ref) {
24
25
  var cardPreview = _ref.cardPreview,
@@ -42,6 +43,9 @@ var CardViewWrapper = exports.CardViewWrapper = /*#__PURE__*/_react2.default.for
42
43
  customBlanket = _ref.customBlanket,
43
44
  customTitleBox = _ref.customTitleBox,
44
45
  progressBar = _ref.progressBar,
46
+ shouldOpenMediaViewer = _ref.shouldOpenMediaViewer,
47
+ _ref$openMediaViewerB = _ref.openMediaViewerButtonRef,
48
+ openMediaViewerButtonRef = _ref$openMediaViewerB === void 0 ? null : _ref$openMediaViewerB,
45
49
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
46
50
  var _ref2 = metadata || {},
47
51
  name = _ref2.name,
@@ -56,7 +60,7 @@ var CardViewWrapper = exports.CardViewWrapper = /*#__PURE__*/_react2.default.for
56
60
  titleBoxIcon: titleBoxIcon,
57
61
  titleBoxBgColor: titleBoxBgColor
58
62
  });
59
- var content = (0, _react.jsx)(_react2.default.Fragment, null, (0, _react.jsx)("div", (0, _extends2.default)({
63
+ var contents = (0, _react.jsx)(_react2.default.Fragment, null, (0, _react.jsx)("div", (0, _extends2.default)({
60
64
  css: _styles.cardImageContainerStyles,
61
65
  className: _classnames.fileCardImageViewSelector,
62
66
  "data-testid": _classnames.fileCardImageViewSelector,
@@ -77,7 +81,11 @@ var CardViewWrapper = exports.CardViewWrapper = /*#__PURE__*/_react2.default.for
77
81
  var isTickBoxSelectable = !disableOverlay && !!selectable && !selected;
78
82
  var shouldDisplayTooltip = !disableOverlay && !shouldHideTooltip;
79
83
  var shouldDisplayBackground = !cardPreview || !disableOverlay;
80
- return (0, _react.jsx)(_wrapper.Wrapper, {
84
+ return (0, _react.jsx)(_react2.default.Fragment, null, shouldOpenMediaViewer && (0, _react.jsx)(_openMediaViewerButton.default, {
85
+ fileName: name !== null && name !== void 0 ? name : '',
86
+ innerRef: openMediaViewerButtonRef,
87
+ onClick: onClick
88
+ }), (0, _react.jsx)(_wrapper.Wrapper, {
81
89
  testId: testId || 'media-card-view',
82
90
  dimensions: dimensions,
83
91
  appearance: appearance,
@@ -96,5 +104,5 @@ var CardViewWrapper = exports.CardViewWrapper = /*#__PURE__*/_react2.default.for
96
104
  content: name,
97
105
  position: "bottom",
98
106
  tag: "div"
99
- }, content) : content);
107
+ }, contents) : contents));
100
108
  });
@@ -51,7 +51,9 @@ var CardViewsBase = exports.CardViewsBase = function CardViewsBase(_ref) {
51
51
  titleBoxBgColor = _ref.titleBoxBgColor,
52
52
  titleBoxIcon = _ref.titleBoxIcon,
53
53
  error = _ref.error,
54
- disableAnimation = _ref.disableAnimation;
54
+ disableAnimation = _ref.disableAnimation,
55
+ shouldOpenMediaViewer = _ref.shouldOpenMediaViewer,
56
+ openMediaViewerButtonRef = _ref.openMediaViewerButtonRef;
55
57
  var _useState = (0, _react2.useState)(false),
56
58
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
57
59
  didImageRender = _useState2[0],
@@ -108,7 +110,9 @@ var CardViewsBase = exports.CardViewsBase = function CardViewsBase(_ref) {
108
110
  onClick: onClick,
109
111
  onMouseEnter: onMouseEnter,
110
112
  mediaCardCursor: mediaCardCursor,
111
- innerRef: innerRef
113
+ innerRef: innerRef,
114
+ shouldOpenMediaViewer: shouldOpenMediaViewer,
115
+ openMediaViewerButtonRef: openMediaViewerButtonRef
112
116
  };
113
117
  switch (status) {
114
118
  case 'uploading':
@@ -127,6 +127,7 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
127
127
  wasStatusUploading: false,
128
128
  wasStatusProcessing: false
129
129
  });
130
+ var mediaViewerButtonRef = (0, _react.useRef)(null);
130
131
 
131
132
  // Generate unique traceId for file
132
133
  var traceContext = (0, _react.useMemo)(function () {
@@ -295,6 +296,18 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
295
296
  });
296
297
  });
297
298
 
299
+ //----------------------------------------------------------------//
300
+ //--------------------- Focus on Close Viewer -------------------//
301
+ //----------------------------------------------------------------//
302
+
303
+ var wasViewerPreviouslyOpen = (0, _usePrevious.usePrevious)(mediaViewerSelectedItem);
304
+ (0, _react.useEffect)(function () {
305
+ if (wasViewerPreviouslyOpen && !mediaViewerSelectedItem) {
306
+ var _mediaViewerButtonRef;
307
+ (_mediaViewerButtonRef = mediaViewerButtonRef.current) === null || _mediaViewerButtonRef === void 0 || _mediaViewerButtonRef.focus();
308
+ }
309
+ }, [wasViewerPreviouslyOpen, mediaViewerSelectedItem]);
310
+
298
311
  //----------------------------------------------------------------//
299
312
  //---------------------- Callbacks & Handlers -------------------//
300
313
  //----------------------------------------------------------------//
@@ -521,6 +534,8 @@ var FileCard = exports.FileCard = function FileCard(_ref) {
521
534
  actions: computedActions,
522
535
  selectable: selectable,
523
536
  selected: selected,
537
+ shouldOpenMediaViewer: shouldOpenMediaViewer,
538
+ openMediaViewerButtonRef: mediaViewerButtonRef,
524
539
  onClick: withCallbacks ? onCardViewClick : undefined,
525
540
  onMouseEnter: withCallbacks ? function (event) {
526
541
  onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({
package/dist/cjs/index.js CHANGED
@@ -27,6 +27,12 @@ Object.defineProperty(exports, "DateOverrideContext", {
27
27
  return _dateOverrideContext.DateOverrideContext;
28
28
  }
29
29
  });
30
+ Object.defineProperty(exports, "MediaCardError", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _errors.MediaCardError;
34
+ }
35
+ });
30
36
  Object.defineProperty(exports, "MediaInlineCard", {
31
37
  enumerable: true,
32
38
  get: function get() {
@@ -45,6 +51,18 @@ Object.defineProperty(exports, "fileCardImageViewSelector", {
45
51
  return _classnames.fileCardImageViewSelector;
46
52
  }
47
53
  });
54
+ Object.defineProperty(exports, "fireFailedMediaInlineEvent", {
55
+ enumerable: true,
56
+ get: function get() {
57
+ return _inline.fireFailedMediaInlineEvent;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "fireSucceededMediaInlineEvent", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _inline.fireSucceededMediaInlineEvent;
64
+ }
65
+ });
48
66
  Object.defineProperty(exports, "inlinePlayerClassName", {
49
67
  enumerable: true,
50
68
  get: function get() {
@@ -59,6 +77,7 @@ Object.defineProperty(exports, "newFileExperienceClassName", {
59
77
  });
60
78
  var _card = require("./card");
61
79
  var _inline = require("./inline");
80
+ var _errors = require("./errors");
62
81
  var _cardLoading = require("./utils/lightCards/cardLoading");
63
82
  var _cardError = require("./utils/lightCards/cardError");
64
83
  var _cardDimensions = require("./utils/cardDimensions");
@@ -10,4 +10,17 @@ Object.defineProperty(exports, "MediaInlineCard", {
10
10
  return _loader.default;
11
11
  }
12
12
  });
13
- var _loader = _interopRequireDefault(require("./loader"));
13
+ Object.defineProperty(exports, "fireFailedMediaInlineEvent", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _mediaInlineCardAnalytics.fireFailedOperationalEvent;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "fireSucceededMediaInlineEvent", {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _mediaInlineCardAnalytics.fireSucceededOperationalEvent;
23
+ }
24
+ });
25
+ var _loader = _interopRequireDefault(require("./loader"));
26
+ var _mediaInlineCardAnalytics = require("./mediaInlineCardAnalytics");
@@ -119,7 +119,7 @@ var MediaInlineCardLoader = exports.default = /*#__PURE__*/function (_React$Pure
119
119
  ErrorBoundary = _this$state.ErrorBoundary;
120
120
  var analyticsContext = {
121
121
  packageVersion: "@atlaskit/media-card",
122
- packageName: "77.7.7",
122
+ packageName: "77.9.0",
123
123
  componentName: 'mediaInlineCard',
124
124
  component: 'mediaInlineCard'
125
125
  };
@@ -4,9 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.getSucceededStatusPayload = exports.getFailedProcessingStatusPayload = exports.getErrorStatusPayload = void 0;
7
+ exports.getSucceededStatusPayload = exports.getFailedProcessingStatusPayload = exports.getErrorStatusPayload = exports.fireSucceededOperationalEvent = exports.fireFailedOperationalEvent = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _analytics = require("../utils/analytics");
10
+ var _errors = require("../errors");
10
11
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
12
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
13
  var getSucceededStatusPayload = exports.getSucceededStatusPayload = function getSucceededStatusPayload(fileState) {
@@ -54,4 +55,15 @@ var getFailedProcessingStatusPayload = exports.getFailedProcessingStatusPayload
54
55
  failReason: 'failed-processing'
55
56
  }
56
57
  };
58
+ };
59
+ var fireFailedOperationalEvent = exports.fireFailedOperationalEvent = function fireFailedOperationalEvent(fileState) {
60
+ var error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new _errors.MediaCardError('missing-error-data');
61
+ var failReason = arguments.length > 2 ? arguments[2] : undefined;
62
+ var createAnalyticsEvent = arguments.length > 3 ? arguments[3] : undefined;
63
+ var payload = failReason ? getFailedProcessingStatusPayload(fileState) : getErrorStatusPayload(error, fileState);
64
+ (0, _analytics.fireMediaCardEvent)(payload, createAnalyticsEvent);
65
+ };
66
+ var fireSucceededOperationalEvent = exports.fireSucceededOperationalEvent = function fireSucceededOperationalEvent(fileState, createAnalyticsEvent) {
67
+ var payload = getSucceededStatusPayload(fileState);
68
+ (0, _analytics.fireMediaCardEvent)(payload, createAnalyticsEvent);
57
69
  };
@@ -14,7 +14,7 @@ var _mediaClient = require("@atlaskit/media-client");
14
14
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
15
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
16
  var packageName = "@atlaskit/media-card";
17
- var packageVersion = "77.7.7";
17
+ var packageVersion = "77.9.0";
18
18
  var concurrentExperience;
19
19
  var getExperience = function getExperience(id) {
20
20
  if (!concurrentExperience) {
@@ -28,7 +28,7 @@ import { completeUfoExperience, startUfoExperience, abortUfoExperience } from '.
28
28
  import { generateUniqueId } from '../utils/generateUniqueId';
29
29
  import { DateOverrideContext } from '../dateOverrideContext';
30
30
  const packageName = "@atlaskit/media-card";
31
- const packageVersion = "77.7.7";
31
+ const packageVersion = "77.9.0";
32
32
  export class CardBase extends Component {
33
33
  constructor(props) {
34
34
  super(props);
@@ -36,6 +36,7 @@ export class CardBase extends Component {
36
36
  // of Cards regardless of whether it shares the same file (either internal or external)
37
37
  _defineProperty(this, "internalOccurrenceKey", generateUniqueId());
38
38
  _defineProperty(this, "hasBeenMounted", false);
39
+ _defineProperty(this, "mediaViewerButtonRef", null);
39
40
  _defineProperty(this, "fileStateFlags", {
40
41
  wasStatusUploading: false,
41
42
  wasStatusProcessing: false
@@ -397,6 +398,9 @@ export class CardBase extends Component {
397
398
  cardRef
398
399
  });
399
400
  });
401
+ _defineProperty(this, "setMediaViewerButtonRef", buttonRef => {
402
+ this.mediaViewerButtonRef = buttonRef;
403
+ });
400
404
  _defineProperty(this, "renderInlinePlayer", () => {
401
405
  const {
402
406
  identifier,
@@ -432,6 +436,9 @@ export class CardBase extends Component {
432
436
  _defineProperty(this, "onMediaViewerClose", () => {
433
437
  this.setState({
434
438
  mediaViewerSelectedItem: undefined
439
+ }, () => {
440
+ var _this$mediaViewerButt;
441
+ (_this$mediaViewerButt = this.mediaViewerButtonRef) === null || _this$mediaViewerButt === void 0 ? void 0 : _this$mediaViewerButt.focus();
435
442
  });
436
443
  });
437
444
  _defineProperty(this, "onDisplayImage", () => {
@@ -542,12 +549,14 @@ export class CardBase extends Component {
542
549
  actions: actions,
543
550
  selectable: selectable,
544
551
  selected: selected,
552
+ shouldOpenMediaViewer: shouldOpenMediaViewer,
545
553
  onClick: withCallbacks ? onCardViewClick : undefined,
546
554
  onMouseEnter: withCallbacks ? onMouseEnter : undefined,
547
555
  disableOverlay: disableOverlay,
548
556
  progress: progress,
549
557
  onDisplayImage: withCallbacks ? onDisplayImage : undefined,
550
558
  innerRef: this.setRef,
559
+ openMediaViewerButtonRef: this.setMediaViewerButtonRef,
551
560
  testId: testId,
552
561
  featureFlags: featureFlags,
553
562
  titleBoxBgColor: titleBoxBgColor,
@@ -27,6 +27,7 @@ import { isUploadError, isRateLimitedError, isPollingError } from '../errors';
27
27
  import { Wrapper } from './ui/wrapper';
28
28
  import { fileCardImageViewSelector } from './classnames';
29
29
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
30
+ import OpenMediaViewerButton from './ui/openMediaViewerButton/openMediaViewerButton';
30
31
  /**
31
32
  * This is classic vanilla CardView class. To create an instance of class one would need to supply
32
33
  * `createAnalyticsEvent` prop to satisfy it's Analytics Events needs.
@@ -393,7 +394,9 @@ export class CardViewBase extends React.Component {
393
394
  disableOverlay,
394
395
  cardPreview,
395
396
  mediaCardCursor,
396
- shouldHideTooltip
397
+ shouldHideTooltip,
398
+ openMediaViewerButtonRef = null,
399
+ shouldOpenMediaViewer
397
400
  } = this.props;
398
401
  const {
399
402
  name
@@ -403,7 +406,11 @@ export class CardViewBase extends React.Component {
403
406
  const isTickBoxSelectable = !disableOverlay && !!selectable && !selected;
404
407
  // Disable tooltip for Media Single
405
408
  const shouldDisplayTooltip = !disableOverlay && !shouldHideTooltip;
406
- return jsx(Wrapper, {
409
+ return jsx(React.Fragment, null, shouldOpenMediaViewer && jsx(OpenMediaViewerButton, {
410
+ fileName: name !== null && name !== void 0 ? name : '',
411
+ innerRef: openMediaViewerButtonRef,
412
+ onClick: onClick
413
+ }), jsx(Wrapper, {
407
414
  testId: testId || 'media-card-view',
408
415
  dimensions: dimensions,
409
416
  appearance: appearance,
@@ -422,7 +429,7 @@ export class CardViewBase extends React.Component {
422
429
  content: name,
423
430
  position: "bottom",
424
431
  tag: 'div'
425
- }, this.renderContents()) : this.renderContents());
432
+ }, this.renderContents()) : this.renderContents()));
426
433
  }
427
434
  }
428
435
  _defineProperty(CardViewBase, "defaultProps", {
@@ -66,7 +66,7 @@ class WrappedMediaCardAnalyticsErrorBoundary extends React.Component {
66
66
  }
67
67
  _defineProperty(WrappedMediaCardAnalyticsErrorBoundary, "displayName", 'MediaCardAnalyticsErrorBoundary');
68
68
  const packageName = "@atlaskit/media-card";
69
- const packageVersion = "77.7.7";
69
+ const packageVersion = "77.9.0";
70
70
  const MediaCardAnalyticsErrorBoundary = withMediaAnalyticsContext({
71
71
  packageVersion,
72
72
  packageName,
@@ -0,0 +1,37 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ /** @jsx jsx */
3
+ import { jsx, css } from '@emotion/react';
4
+ import React from 'react';
5
+ import { injectIntl, IntlProvider, useIntl } from 'react-intl-next';
6
+ import { messages } from '@atlaskit/media-ui';
7
+ export const visuallyHiddenStyles = css`
8
+ width: 1px;
9
+ height: 1px;
10
+ padding: 0;
11
+ position: fixed;
12
+ border: 0;
13
+ clip: rect(1px, 1px, 1px, 1px);
14
+ overflow: hidden;
15
+ white-space: nowrap;
16
+ `;
17
+ const OpenMediaViewerButton = ({
18
+ fileName,
19
+ innerRef,
20
+ ...props
21
+ }) => {
22
+ const intl = useIntl();
23
+ return jsx("button", _extends({
24
+ ref: innerRef,
25
+ css: visuallyHiddenStyles
26
+ }, props), intl.formatMessage(messages.open_file_in_viewer, {
27
+ name: fileName
28
+ }));
29
+ };
30
+ const OpenMediaViewerButtonWrapper = props => {
31
+ return props.intl ? jsx(OpenMediaViewerButton, props) : jsx(IntlProvider, {
32
+ locale: "en"
33
+ }, jsx(OpenMediaViewerButton, props));
34
+ };
35
+ export default injectIntl(OpenMediaViewerButtonWrapper, {
36
+ enforceContext: false
37
+ });
@@ -1,7 +1,7 @@
1
1
  import { css } from '@emotion/react';
2
2
  import { fontFamily } from '@atlaskit/theme/constants';
3
3
  import { borderRadius } from '@atlaskit/media-ui';
4
- import { N20 } from '@atlaskit/theme/colors';
4
+ import { N20, B100 } from '@atlaskit/theme/colors';
5
5
  import { hideNativeBrowserTextSelectionStyles } from '@atlaskit/editor-shared-styles/selection';
6
6
  import { transition } from '../styles';
7
7
  import { fixedBlanketStyles, blanketClassName } from '../blanket/styles';
@@ -46,5 +46,9 @@ export const wrapperStyles = ({
46
46
 
47
47
  /* Tooltip does not support percentage dimensions. We enforce them here */
48
48
  ${shouldDisplayTooltip && `> div { width: 100%; height: 100%; }`}
49
+
50
+ button:focus + & {
51
+ outline: solid 2px ${`var(--ds-border-focused, ${B100})`};
52
+ }
49
53
  `;
50
54
  wrapperStyles.displayName = 'NewFileExperienceWrapper';
@@ -7,7 +7,7 @@ import { IntlProvider, injectIntl } from 'react-intl-next';
7
7
  import { ExternalImageCard } from './externalImageCard';
8
8
  import { FileCard } from './fileCard';
9
9
  const packageName = "@atlaskit/media-card";
10
- const packageVersion = "77.7.7";
10
+ const packageVersion = "77.9.0";
11
11
  export const CardV2Base = ({
12
12
  identifier,
13
13
  ...otherProps