@atlaskit/smart-card 21.0.4 → 21.1.2

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 (70) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/messages.js +15 -0
  3. package/dist/cjs/utils/token.js +1 -1
  4. package/dist/cjs/version.json +1 -1
  5. package/dist/cjs/view/BlockCard/components/Frame.js +1 -1
  6. package/dist/cjs/view/EmbedCard/components/styled.js +1 -1
  7. package/dist/cjs/view/EmbedModal/components/embed-content/index.js +42 -0
  8. package/dist/cjs/view/EmbedModal/components/embed-content/types.js +5 -0
  9. package/dist/cjs/view/EmbedModal/components/error-boundary/index.js +38 -0
  10. package/dist/cjs/view/EmbedModal/components/link-info/index.js +127 -0
  11. package/dist/cjs/view/EmbedModal/components/link-info/link-info-button/index.js +40 -0
  12. package/dist/cjs/view/EmbedModal/components/link-info/link-info-button/types.js +5 -0
  13. package/dist/cjs/view/EmbedModal/components/link-info/styled.js +32 -0
  14. package/dist/cjs/view/EmbedModal/components/link-info/types.js +5 -0
  15. package/dist/cjs/view/EmbedModal/constants.js +10 -0
  16. package/dist/cjs/view/EmbedModal/index.js +93 -0
  17. package/dist/cjs/view/EmbedModal/types.js +5 -0
  18. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/index.js +13 -4
  19. package/dist/es2019/messages.js +15 -0
  20. package/dist/es2019/utils/token.js +1 -1
  21. package/dist/es2019/version.json +1 -1
  22. package/dist/es2019/view/BlockCard/components/Frame.js +1 -1
  23. package/dist/es2019/view/EmbedCard/components/styled.js +1 -1
  24. package/dist/es2019/view/EmbedModal/components/embed-content/index.js +31 -0
  25. package/dist/es2019/view/EmbedModal/components/embed-content/types.js +1 -0
  26. package/dist/es2019/view/EmbedModal/components/error-boundary/index.js +21 -0
  27. package/dist/es2019/view/EmbedModal/components/link-info/index.js +98 -0
  28. package/dist/es2019/view/EmbedModal/components/link-info/link-info-button/index.js +29 -0
  29. package/dist/es2019/view/EmbedModal/components/link-info/link-info-button/types.js +1 -0
  30. package/dist/es2019/view/EmbedModal/components/link-info/styled.js +58 -0
  31. package/dist/es2019/view/EmbedModal/components/link-info/types.js +1 -0
  32. package/dist/es2019/view/EmbedModal/constants.js +2 -0
  33. package/dist/es2019/view/EmbedModal/index.js +57 -0
  34. package/dist/es2019/view/EmbedModal/types.js +1 -0
  35. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/index.js +12 -2
  36. package/dist/esm/messages.js +15 -0
  37. package/dist/esm/utils/token.js +1 -1
  38. package/dist/esm/version.json +1 -1
  39. package/dist/esm/view/BlockCard/components/Frame.js +1 -1
  40. package/dist/esm/view/EmbedCard/components/styled.js +1 -1
  41. package/dist/esm/view/EmbedModal/components/embed-content/index.js +30 -0
  42. package/dist/esm/view/EmbedModal/components/embed-content/types.js +1 -0
  43. package/dist/esm/view/EmbedModal/components/error-boundary/index.js +23 -0
  44. package/dist/esm/view/EmbedModal/components/link-info/index.js +98 -0
  45. package/dist/esm/view/EmbedModal/components/link-info/link-info-button/index.js +28 -0
  46. package/dist/esm/view/EmbedModal/components/link-info/link-info-button/types.js +1 -0
  47. package/dist/esm/view/EmbedModal/components/link-info/styled.js +14 -0
  48. package/dist/esm/view/EmbedModal/components/link-info/types.js +1 -0
  49. package/dist/esm/view/EmbedModal/constants.js +2 -0
  50. package/dist/esm/view/EmbedModal/index.js +70 -0
  51. package/dist/esm/view/EmbedModal/types.js +1 -0
  52. package/dist/esm/view/FlexibleCard/components/blocks/title-block/index.js +13 -5
  53. package/dist/types/index.d.ts +1 -1
  54. package/dist/types/messages.d.ts +1 -1
  55. package/dist/types/utils/token.d.ts +1 -1
  56. package/dist/types/view/EmbedModal/components/embed-content/index.d.ts +5 -0
  57. package/dist/types/view/EmbedModal/components/embed-content/types.d.ts +6 -0
  58. package/dist/types/view/EmbedModal/components/error-boundary/index.d.ts +4 -0
  59. package/dist/types/view/EmbedModal/components/link-info/index.d.ts +4 -0
  60. package/dist/types/view/EmbedModal/components/link-info/link-info-button/index.d.ts +4 -0
  61. package/dist/types/view/EmbedModal/components/link-info/link-info-button/types.d.ts +9 -0
  62. package/dist/types/view/EmbedModal/components/link-info/styled.d.ts +5 -0
  63. package/dist/types/view/EmbedModal/components/link-info/types.d.ts +13 -0
  64. package/dist/types/view/EmbedModal/constants.d.ts +2 -0
  65. package/dist/types/view/EmbedModal/index.d.ts +4 -0
  66. package/dist/types/view/EmbedModal/types.d.ts +20 -0
  67. package/dist/types/view/FlexibleCard/components/blocks/title-block/types.d.ts +6 -1
  68. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +3 -0
  69. package/package.json +2 -2
  70. package/report.api.md +9 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 21.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [`a024e3c77ec`](https://bitbucket.org/atlassian/atlassian-frontend/commits/a024e3c77ec) - Embed Preview: Add embed preview modal (WIP)
8
+
9
+ ## 21.1.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [`e6a3654a137`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e6a3654a137) - Fix bug where smart cards used `elevation.surface` instead of `elevation.surface.raised` design tokens for card backgrounds.
14
+
15
+ ## 21.1.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [`fa7f42de6c0`](https://bitbucket.org/atlassian/atlassian-frontend/commits/fa7f42de6c0) - Flexible UI: Add onActionMenuOpenChange on TitleBlock to detect action dropdown menu open/close
20
+
3
21
  ## 21.0.4
4
22
 
5
23
  ### Patch Changes
@@ -173,6 +173,21 @@ var messages = (0, _reactIntlNext.defineMessages)({
173
173
  defaultMessage: 'Preview',
174
174
  description: 'Click to view a richer view of your content, without needing to navigate to it.'
175
175
  },
176
+ preview_close: {
177
+ id: 'fabric.linking.preview_close',
178
+ defaultMessage: 'Close preview',
179
+ description: 'Click to close embed preview modal.'
180
+ },
181
+ preview_max_size: {
182
+ id: 'fabric.linking.preview_max_size',
183
+ defaultMessage: 'View full screen',
184
+ description: 'Click to increase embed preview modal size to a maximum viewing size.'
185
+ },
186
+ preview_min_size: {
187
+ id: 'fabric.linking.preview_min_size',
188
+ defaultMessage: 'Close full screen',
189
+ description: 'Click to decrease embed preview modal size to a minimum viewing size.'
190
+ },
176
191
  priority_blocker: {
177
192
  id: 'fabric.linking.priority_blocker',
178
193
  defaultMessage: 'Blocker',
@@ -9,7 +9,7 @@ var _tokens = require("@atlaskit/tokens");
9
9
 
10
10
  var tokens = {
11
11
  actionIcon: (0, _tokens.token)('color.icon', '#44546F'),
12
- background: (0, _tokens.token)('elevation.surface', '#FFFFFF'),
12
+ background: (0, _tokens.token)('elevation.surface.raised', '#FFFFFF'),
13
13
  badgeIcon: (0, _tokens.token)('color.icon.subtle', '#626F86'),
14
14
  badgeText: (0, _tokens.token)('color.text.subtlest', '#626F86'),
15
15
  blackLink: (0, _tokens.token)('color.text.subtle', '#44546F'),
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "21.0.4",
3
+ "version": "21.1.2",
4
4
  "sideEffects": false
5
5
  }
@@ -37,7 +37,7 @@ var sharedFrameStyles = {
37
37
  maxWidth: (0, _utils.gs)(95),
38
38
  width: '100%',
39
39
  display: 'flex',
40
- backgroundColor: (0, _tokens.token)('elevation.surface', 'white')
40
+ backgroundColor: (0, _tokens.token)('elevation.surface.raised', 'white')
41
41
  };
42
42
 
43
43
  var ExpandedFrame = function ExpandedFrame(_ref) {
@@ -144,7 +144,7 @@ exports.TextWrapper = TextWrapper;
144
144
  // NB: `overflow` is kept as `hidden` since
145
145
  // the internal contents of the `iframe` should
146
146
  // manage scrolling behaviour.
147
- var Content = _styled.default.div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n ", "\n ", "\n background-color: ", ";\n position: absolute;\n z-index: 1;\n width: 100%;\n top: ", ";\n overflow: hidden;\n height: calc(100% - ", ");\n transition: box-shadow 0.3s;\n\n > .calc-height > div > div {\n left: unset !important;\n width: unset !important;\n height: unset !important;\n position: initial !important;\n padding-bottom: unset !important;\n }\n > .embed-preview > div {\n margin: 0 auto;\n }\n\n ", ";\n"])), borderRadius, cardShadow, (0, _tokens.token)('elevation.surface', 'white'), (0, _utils.gs)(4), (0, _utils.gs)(4), function (_ref9) {
147
+ var Content = _styled.default.div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n ", "\n ", "\n background-color: ", ";\n position: absolute;\n z-index: 1;\n width: 100%;\n top: ", ";\n overflow: hidden;\n height: calc(100% - ", ");\n transition: box-shadow 0.3s;\n\n > .calc-height > div > div {\n left: unset !important;\n width: unset !important;\n height: unset !important;\n position: initial !important;\n padding-bottom: unset !important;\n }\n > .embed-preview > div {\n margin: 0 auto;\n }\n\n ", ";\n"])), borderRadius, cardShadow, (0, _tokens.token)('elevation.surface.raised', 'white'), (0, _utils.gs)(4), (0, _utils.gs)(4), function (_ref9) {
148
148
  var isInteractive = _ref9.isInteractive;
149
149
 
150
150
  if (isInteractive) {
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _core = require("@emotion/core");
15
+
16
+ var _utils = require("../../../../utils");
17
+
18
+ var _templateObject;
19
+
20
+ var iframeCss = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n width: 100%;\n height: calc(100vh - 214px);\n"])));
21
+
22
+ var EmbedContent = function EmbedContent(_ref) {
23
+ var isTrusted = _ref.isTrusted,
24
+ name = _ref.name,
25
+ src = _ref.src,
26
+ testId = _ref.testId;
27
+ var sandbox = (0, _utils.getIframeSandboxAttribute)(isTrusted);
28
+ var props = {
29
+ css: iframeCss,
30
+ frameBorder: 0,
31
+ name: name,
32
+ sandbox: sandbox,
33
+ src: src,
34
+ 'data-testid': "".concat(testId, "-embed")
35
+ };
36
+ return src ? (0, _core.jsx)("iframe", (0, _extends2.default)({
37
+ src: src
38
+ }, props)) : (0, _core.jsx)("iframe", props);
39
+ };
40
+
41
+ var _default = EmbedContent;
42
+ exports.default = _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _reactErrorBoundary = require("react-error-boundary");
13
+
14
+ 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); }
15
+
16
+ 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; }
17
+
18
+ var FallbackComponent = function FallbackComponent() {
19
+ return /*#__PURE__*/_react.default.createElement("span", null);
20
+ };
21
+
22
+ var withErrorBoundary = function withErrorBoundary(Component) {
23
+ return function (props) {
24
+ var onOpenFailed = props.onOpenFailed;
25
+ var onError = (0, _react.useCallback)(function (error, errorInfo) {
26
+ if (onOpenFailed) {
27
+ onOpenFailed(error, errorInfo);
28
+ }
29
+ }, [onOpenFailed]);
30
+ return /*#__PURE__*/_react.default.createElement(_reactErrorBoundary.ErrorBoundary, {
31
+ FallbackComponent: FallbackComponent,
32
+ onError: onError
33
+ }, /*#__PURE__*/_react.default.createElement(Component, props));
34
+ };
35
+ };
36
+
37
+ var _default = withErrorBoundary;
38
+ exports.default = _default;
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _core = require("@emotion/core");
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _reactIntlNext = require("react-intl-next");
17
+
18
+ var _modalDialog = require("@atlaskit/modal-dialog");
19
+
20
+ var _cross = _interopRequireDefault(require("@atlaskit/icon/glyph/cross"));
21
+
22
+ var _download = _interopRequireDefault(require("@atlaskit/icon/glyph/download"));
23
+
24
+ var _shortcut = _interopRequireDefault(require("@atlaskit/icon/glyph/shortcut"));
25
+
26
+ var _vidFullScreenOn = _interopRequireDefault(require("@atlaskit/icon/glyph/vid-full-screen-on"));
27
+
28
+ var _vidFullScreenOff = _interopRequireDefault(require("@atlaskit/icon/glyph/vid-full-screen-off"));
29
+
30
+ var _Icon = require("../../../common/Icon");
31
+
32
+ var _messages = require("../../../../messages");
33
+
34
+ var _constants = require("../../constants");
35
+
36
+ var _linkInfoButton = _interopRequireDefault(require("./link-info-button"));
37
+
38
+ var _styled = require("./styled");
39
+
40
+ 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); }
41
+
42
+ 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; }
43
+
44
+ /** @jsx jsx */
45
+ var LinkInfo = function LinkInfo(_ref) {
46
+ var downloadUrl = _ref.downloadUrl,
47
+ icon = _ref.icon,
48
+ providerName = _ref.providerName,
49
+ onDownloadButtonClick = _ref.onDownloadButtonClick,
50
+ onResizeButtonClick = _ref.onResizeButtonClick,
51
+ onViewButtonClick = _ref.onViewButtonClick,
52
+ size = _ref.size,
53
+ testId = _ref.testId,
54
+ title = _ref.title,
55
+ url = _ref.url;
56
+
57
+ var _useModal = (0, _modalDialog.useModal)(),
58
+ onClose = _useModal.onClose;
59
+
60
+ var downloadButton = (0, _react.useMemo)(function () {
61
+ if (downloadUrl) {
62
+ return (0, _core.jsx)(_linkInfoButton.default, {
63
+ content: (0, _core.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.download),
64
+ href: downloadUrl,
65
+ icon: (0, _core.jsx)(_download.default, {
66
+ label: _messages.messages.download.defaultMessage
67
+ }),
68
+ onClick: onDownloadButtonClick,
69
+ testId: "".concat(testId, "-download")
70
+ });
71
+ }
72
+ }, [downloadUrl, onDownloadButtonClick, testId]);
73
+ var urlButton = (0, _react.useMemo)(function () {
74
+ if (url) {
75
+ var content = providerName ? (0, _core.jsx)(_react.default.Fragment, null, (0, _core.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.viewIn), " ", providerName) : (0, _core.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.viewOriginal);
76
+ return (0, _core.jsx)(_linkInfoButton.default, {
77
+ content: content,
78
+ href: url,
79
+ icon: (0, _core.jsx)(_shortcut.default, {
80
+ label: _messages.messages.viewOriginal.defaultMessage
81
+ }),
82
+ onClick: onViewButtonClick,
83
+ target: "_blank",
84
+ testId: "".concat(testId, "-url")
85
+ });
86
+ }
87
+ }, [onViewButtonClick, providerName, testId, url]);
88
+ var sizeButton = (0, _react.useMemo)(function () {
89
+ var isFullScreen = size === _constants.MAX_MODAL_SIZE;
90
+ var message = isFullScreen ? _messages.messages.preview_min_size : _messages.messages.preview_max_size;
91
+ var icon = isFullScreen ? (0, _core.jsx)(_vidFullScreenOff.default, {
92
+ label: message.defaultMessage
93
+ }) : (0, _core.jsx)(_vidFullScreenOn.default, {
94
+ label: message.defaultMessage
95
+ });
96
+ return (0, _core.jsx)(_linkInfoButton.default, {
97
+ content: (0, _core.jsx)(_reactIntlNext.FormattedMessage, message),
98
+ icon: icon,
99
+ onClick: onResizeButtonClick,
100
+ testId: "".concat(testId, "-resize")
101
+ });
102
+ }, [onResizeButtonClick, size, testId]);
103
+ return (0, _core.jsx)("div", {
104
+ css: _styled.containerStyles
105
+ }, icon && (0, _core.jsx)("div", {
106
+ css: _styled.iconCss,
107
+ "data-testid": "".concat(testId, "-icon")
108
+ }, (0, _core.jsx)(_Icon.Icon, icon)), (0, _core.jsx)("div", {
109
+ css: _styled.titleCss
110
+ }, (0, _core.jsx)("h3", {
111
+ "data-testid": "".concat(testId, "-title")
112
+ }, title), (0, _core.jsx)("span", {
113
+ tabIndex: 0
114
+ })), (0, _core.jsx)("div", {
115
+ css: _styled.actionCss
116
+ }, downloadButton, urlButton, sizeButton, (0, _core.jsx)(_linkInfoButton.default, {
117
+ content: (0, _core.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.preview_close),
118
+ icon: (0, _core.jsx)(_cross.default, {
119
+ label: _messages.messages.preview_close.defaultMessage
120
+ }),
121
+ onClick: onClose,
122
+ testId: "".concat(testId, "-close")
123
+ })));
124
+ };
125
+
126
+ var _default = LinkInfo;
127
+ exports.default = _default;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
13
+
14
+ var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
15
+
16
+ var LinkInfoButton = function LinkInfoButton(_ref) {
17
+ var content = _ref.content,
18
+ href = _ref.href,
19
+ icon = _ref.icon,
20
+ onClick = _ref.onClick,
21
+ target = _ref.target,
22
+ testId = _ref.testId;
23
+ return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
24
+ content: content,
25
+ hideTooltipOnClick: true,
26
+ position: "top",
27
+ tag: "span",
28
+ testId: "".concat(testId, "-tooltip")
29
+ }, /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
30
+ appearance: "subtle",
31
+ href: href,
32
+ iconBefore: icon,
33
+ onClick: onClick,
34
+ target: target,
35
+ testId: "".concat(testId, "-button")
36
+ }));
37
+ };
38
+
39
+ var _default = LinkInfoButton;
40
+ exports.default = _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.titleCss = exports.subtitleCss = exports.iconCss = exports.containerStyles = exports.actionCss = void 0;
9
+
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+
12
+ var _core = require("@emotion/core");
13
+
14
+ var _utils = require("../../../common/utils");
15
+
16
+ var _tokens = require("@atlaskit/tokens");
17
+
18
+ var _colors = require("@atlaskit/theme/colors");
19
+
20
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
21
+
22
+ var containerStyles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n align-items: center;\n display: flex;\n gap: ", ";\n justify-content: space-between;\n padding: ", " ", ";\n"])), (0, _utils.gs)(2), (0, _utils.gs)(2), (0, _utils.gs)(3));
23
+ exports.containerStyles = containerStyles;
24
+ var iconSize = '32px';
25
+ var iconCss = (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n img,\n span,\n svg {\n height: ", ";\n min-height: ", ";\n max-height: ", ";\n width: ", ";\n min-width: ", ";\n max-width: ", ";\n }\n"])), iconSize, iconSize, iconSize, iconSize, iconSize, iconSize);
26
+ exports.iconCss = iconCss;
27
+ var titleCss = (0, _core.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n flex: 1 1 auto;\n\n h3 {\n flex: 1 1 auto;\n\n // EDM-42336: UX is not finalised yet.\n font-size: 20px;\n font-weight: 400;\n line-height: 24px;\n\n display: -webkit-box;\n overflow: hidden;\n text-overflow: ellipsis;\n word-break: break-word;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n // Fallback options\n @supports not (-webkit-line-clamp: 1) {\n max-height: 24px;\n }\n }\n"])));
28
+ exports.titleCss = titleCss;
29
+ var subtitleCss = (0, _core.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n\n // EDM-42336: UX is not finalised yet.\n font-size: 12px;\n font-weight: 400;\n line-height: 16px;\n"])), (0, _tokens.token)('color.text.subtlest', _colors.N100));
30
+ exports.subtitleCss = subtitleCss;
31
+ var actionCss = (0, _core.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n flex: 0 0 auto;\n"])));
32
+ exports.actionCss = actionCss;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MIN_MODAL_SIZE = exports.MAX_MODAL_SIZE = void 0;
7
+ var MAX_MODAL_SIZE = '100%';
8
+ exports.MAX_MODAL_SIZE = MAX_MODAL_SIZE;
9
+ var MIN_MODAL_SIZE = 'large';
10
+ exports.MIN_MODAL_SIZE = MIN_MODAL_SIZE;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
17
+
18
+ var _linkInfo = _interopRequireDefault(require("./components/link-info"));
19
+
20
+ var _constants = require("./constants");
21
+
22
+ var _embedContent = _interopRequireDefault(require("./components/embed-content"));
23
+
24
+ var _errorBoundary = _interopRequireDefault(require("./components/error-boundary"));
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ var EmbedModal = function EmbedModal(_ref) {
31
+ var downloadUrl = _ref.download,
32
+ icon = _ref.icon,
33
+ iframeName = _ref.iframeName,
34
+ _ref$isTrusted = _ref.isTrusted,
35
+ isTrusted = _ref$isTrusted === void 0 ? false : _ref$isTrusted,
36
+ onClose = _ref.onClose,
37
+ onDownloadActionClick = _ref.onDownloadActionClick,
38
+ onOpen = _ref.onOpen,
39
+ onViewActionClick = _ref.onViewActionClick,
40
+ providerName = _ref.providerName,
41
+ showModal = _ref.showModal,
42
+ src = _ref.src,
43
+ _ref$testId = _ref.testId,
44
+ testId = _ref$testId === void 0 ? 'smart-links-preview-modal' : _ref$testId,
45
+ title = _ref.title,
46
+ url = _ref.url;
47
+
48
+ var _useState = (0, _react.useState)(showModal),
49
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
50
+ isOpen = _useState2[0],
51
+ setIsOpen = _useState2[1];
52
+
53
+ var _useState3 = (0, _react.useState)(_constants.MIN_MODAL_SIZE),
54
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
55
+ size = _useState4[0],
56
+ setSize = _useState4[1];
57
+
58
+ var handleOnClose = (0, _react.useCallback)(function () {
59
+ return setIsOpen(false);
60
+ }, []);
61
+ var handleOnSizeClick = (0, _react.useCallback)(function () {
62
+ var newSize = size === _constants.MIN_MODAL_SIZE ? _constants.MAX_MODAL_SIZE : _constants.MIN_MODAL_SIZE;
63
+ setSize(newSize);
64
+ }, [size]);
65
+ return /*#__PURE__*/_react.default.createElement(_modalDialog.ModalTransition, null, isOpen && /*#__PURE__*/_react.default.createElement(_modalDialog.default, {
66
+ height: "100%",
67
+ onClose: handleOnClose,
68
+ onCloseComplete: onClose,
69
+ onOpenComplete: onOpen,
70
+ testId: testId,
71
+ width: size
72
+ }, /*#__PURE__*/_react.default.createElement(_linkInfo.default, {
73
+ downloadUrl: downloadUrl,
74
+ icon: icon,
75
+ providerName: providerName,
76
+ onViewButtonClick: onViewActionClick,
77
+ onDownloadButtonClick: onDownloadActionClick,
78
+ onResizeButtonClick: handleOnSizeClick,
79
+ size: size,
80
+ title: title,
81
+ testId: testId,
82
+ url: url
83
+ }), /*#__PURE__*/_react.default.createElement(_modalDialog.ModalBody, null, /*#__PURE__*/_react.default.createElement(_embedContent.default, {
84
+ isTrusted: isTrusted,
85
+ name: iframeName,
86
+ src: src,
87
+ testId: testId
88
+ }))));
89
+ };
90
+
91
+ var _default = (0, _errorBoundary.default)(EmbedModal);
92
+
93
+ exports.default = _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -33,7 +33,7 @@ var _actionGroup = _interopRequireDefault(require("../action-group"));
33
33
 
34
34
  var _elements = require("../../elements");
35
35
 
36
- var _excluded = ["actions", "anchorTarget", "hideTitleTooltip", "maxLines", "onClick", "overrideCss", "status", "showActionOnHover", "testId", "text", "theme"];
36
+ var _excluded = ["actions", "anchorTarget", "hideTitleTooltip", "maxLines", "onActionMenuOpenChange", "onClick", "overrideCss", "status", "showActionOnHover", "testId", "text", "theme"];
37
37
 
38
38
  var _templateObject, _templateObject2;
39
39
 
@@ -85,6 +85,7 @@ var TitleBlock = function TitleBlock(_ref) {
85
85
  anchorTarget = _ref.anchorTarget,
86
86
  hideTitleTooltip = _ref.hideTitleTooltip,
87
87
  maxLines = _ref.maxLines,
88
+ onActionMenuOpenChange = _ref.onActionMenuOpenChange,
88
89
  onClick = _ref.onClick,
89
90
  overrideCss = _ref.overrideCss,
90
91
  _ref$status = _ref.status,
@@ -101,12 +102,20 @@ var TitleBlock = function TitleBlock(_ref) {
101
102
  actionDropdownOpen = _useState2[0],
102
103
  setActionDropdownOpen = _useState2[1];
103
104
 
105
+ var onDropdownOpenChange = (0, _react.useCallback)(function (isOpen) {
106
+ setActionDropdownOpen(isOpen);
107
+
108
+ if (onActionMenuOpenChange) {
109
+ onActionMenuOpenChange({
110
+ isOpen: isOpen
111
+ });
112
+ }
113
+ }, [onActionMenuOpenChange]);
114
+
104
115
  var actionGroup = actions.length > 0 && /*#__PURE__*/_react.default.createElement(_actionGroup.default, {
105
116
  items: actions,
106
117
  visibleButtonsNum: showActionOnHover ? 1 : 2,
107
- onDropdownOpenChange: function onDropdownOpenChange(isOpen) {
108
- return setActionDropdownOpen(isOpen);
109
- }
118
+ onDropdownOpenChange: onDropdownOpenChange
110
119
  });
111
120
 
112
121
  var actionStyles = getActionStyles(showActionOnHover, actionDropdownOpen);
@@ -165,6 +165,21 @@ export const messages = defineMessages({
165
165
  defaultMessage: 'Preview',
166
166
  description: 'Click to view a richer view of your content, without needing to navigate to it.'
167
167
  },
168
+ preview_close: {
169
+ id: 'fabric.linking.preview_close',
170
+ defaultMessage: 'Close preview',
171
+ description: 'Click to close embed preview modal.'
172
+ },
173
+ preview_max_size: {
174
+ id: 'fabric.linking.preview_max_size',
175
+ defaultMessage: 'View full screen',
176
+ description: 'Click to increase embed preview modal size to a maximum viewing size.'
177
+ },
178
+ preview_min_size: {
179
+ id: 'fabric.linking.preview_min_size',
180
+ defaultMessage: 'Close full screen',
181
+ description: 'Click to decrease embed preview modal size to a minimum viewing size.'
182
+ },
168
183
  priority_blocker: {
169
184
  id: 'fabric.linking.priority_blocker',
170
185
  defaultMessage: 'Blocker',
@@ -1,7 +1,7 @@
1
1
  import { token } from '@atlaskit/tokens';
2
2
  export const tokens = {
3
3
  actionIcon: token('color.icon', '#44546F'),
4
- background: token('elevation.surface', '#FFFFFF'),
4
+ background: token('elevation.surface.raised', '#FFFFFF'),
5
5
  badgeIcon: token('color.icon.subtle', '#626F86'),
6
6
  badgeText: token('color.text.subtlest', '#626F86'),
7
7
  blackLink: token('color.text.subtle', '#44546F'),
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "21.0.4",
3
+ "version": "21.1.2",
4
4
  "sideEffects": false
5
5
  }
@@ -13,7 +13,7 @@ const sharedFrameStyles = {
13
13
  maxWidth: gs(95),
14
14
  width: '100%',
15
15
  display: 'flex',
16
- backgroundColor: token('elevation.surface', 'white')
16
+ backgroundColor: token('elevation.surface.raised', 'white')
17
17
  };
18
18
  export const ExpandedFrame = ({
19
19
  children,
@@ -191,7 +191,7 @@ export const TextWrapper = styled.div`
191
191
  export const Content = styled.div`
192
192
  ${borderRadius}
193
193
  ${cardShadow}
194
- background-color: ${token('elevation.surface', 'white')};
194
+ background-color: ${token('elevation.surface.raised', 'white')};
195
195
  position: absolute;
196
196
  z-index: 1;
197
197
  width: 100%;
@@ -0,0 +1,31 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+
3
+ /** @jsx jsx */
4
+ import { css, jsx } from '@emotion/core';
5
+ import { getIframeSandboxAttribute } from '../../../../utils';
6
+ const iframeCss = css`
7
+ width: 100%;
8
+ height: calc(100vh - 214px);
9
+ `;
10
+
11
+ const EmbedContent = ({
12
+ isTrusted,
13
+ name,
14
+ src,
15
+ testId
16
+ }) => {
17
+ const sandbox = getIframeSandboxAttribute(isTrusted);
18
+ const props = {
19
+ css: iframeCss,
20
+ frameBorder: 0,
21
+ name,
22
+ sandbox,
23
+ src,
24
+ 'data-testid': `${testId}-embed`
25
+ };
26
+ return src ? jsx("iframe", _extends({
27
+ src: src
28
+ }, props)) : jsx("iframe", props);
29
+ };
30
+
31
+ export default EmbedContent;