@atlaskit/smart-card 26.28.1 → 26.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +404 -388
  2. package/dist/cjs/extractors/common/context/extractAccessContext.js +67 -4
  3. package/dist/cjs/extractors/flexible/extract-preview.js +3 -0
  4. package/dist/cjs/messages.js +82 -0
  5. package/dist/cjs/utils/analytics/analytics.js +1 -1
  6. package/dist/cjs/view/BlockCard/actions/ForbiddenAction.js +2 -4
  7. package/dist/cjs/view/FlexibleCard/components/blocks/preview-block/index.js +0 -3
  8. package/dist/cjs/view/FlexibleCard/utils.js +4 -1
  9. package/dist/cjs/view/HoverCard/components/HoverCardComponent.js +1 -1
  10. package/dist/cjs/view/HoverCard/components/HoverCardContent.js +9 -0
  11. package/dist/cjs/view/HoverCard/components/views/forbidden/index.js +82 -0
  12. package/dist/cjs/view/HoverCard/components/views/forbidden/styled.js +18 -0
  13. package/dist/cjs/view/HoverCard/components/views/forbidden/types.js +5 -0
  14. package/dist/cjs/view/HoverCard/styled.js +2 -2
  15. package/dist/cjs/view/LinkUrl/index.js +1 -1
  16. package/dist/es2019/extractors/common/context/extractAccessContext.js +63 -2
  17. package/dist/es2019/extractors/flexible/extract-preview.js +3 -0
  18. package/dist/es2019/messages.js +82 -0
  19. package/dist/es2019/utils/analytics/analytics.js +1 -1
  20. package/dist/es2019/view/BlockCard/actions/ForbiddenAction.js +2 -4
  21. package/dist/es2019/view/FlexibleCard/components/blocks/preview-block/index.js +0 -3
  22. package/dist/es2019/view/FlexibleCard/utils.js +4 -1
  23. package/dist/es2019/view/HoverCard/components/HoverCardComponent.js +1 -1
  24. package/dist/es2019/view/HoverCard/components/HoverCardContent.js +9 -0
  25. package/dist/es2019/view/HoverCard/components/views/forbidden/index.js +72 -0
  26. package/dist/es2019/view/HoverCard/components/views/forbidden/styled.js +17 -0
  27. package/dist/es2019/view/HoverCard/components/views/forbidden/types.js +1 -0
  28. package/dist/es2019/view/HoverCard/styled.js +3 -2
  29. package/dist/es2019/view/LinkUrl/index.js +1 -1
  30. package/dist/esm/extractors/common/context/extractAccessContext.js +64 -2
  31. package/dist/esm/extractors/flexible/extract-preview.js +3 -0
  32. package/dist/esm/messages.js +82 -0
  33. package/dist/esm/utils/analytics/analytics.js +1 -1
  34. package/dist/esm/view/BlockCard/actions/ForbiddenAction.js +2 -4
  35. package/dist/esm/view/FlexibleCard/components/blocks/preview-block/index.js +0 -3
  36. package/dist/esm/view/FlexibleCard/utils.js +4 -1
  37. package/dist/esm/view/HoverCard/components/HoverCardComponent.js +1 -1
  38. package/dist/esm/view/HoverCard/components/HoverCardContent.js +9 -0
  39. package/dist/esm/view/HoverCard/components/views/forbidden/index.js +71 -0
  40. package/dist/esm/view/HoverCard/components/views/forbidden/styled.js +8 -0
  41. package/dist/esm/view/HoverCard/components/views/forbidden/types.js +1 -0
  42. package/dist/esm/view/HoverCard/styled.js +2 -2
  43. package/dist/esm/view/LinkUrl/index.js +1 -1
  44. package/dist/types/extractors/common/context/extractAccessContext.d.ts +5 -0
  45. package/dist/types/messages.d.ts +1 -1
  46. package/dist/types/view/BlockCard/actions/ForbiddenAction.d.ts +1 -1
  47. package/dist/types/view/HoverCard/components/CustomPopupContainer.d.ts +1 -1
  48. package/dist/types/view/HoverCard/components/views/forbidden/index.d.ts +4 -0
  49. package/dist/types/view/HoverCard/components/views/forbidden/styled.d.ts +3 -0
  50. package/dist/types/view/HoverCard/components/views/forbidden/types.d.ts +13 -0
  51. package/dist/types/view/HoverCard/styled.d.ts +1 -1
  52. package/dist/types/view/types.d.ts +1 -0
  53. package/dist/types-ts4.5/extractors/common/context/extractAccessContext.d.ts +5 -0
  54. package/dist/types-ts4.5/messages.d.ts +1 -1
  55. package/dist/types-ts4.5/view/BlockCard/actions/ForbiddenAction.d.ts +1 -1
  56. package/dist/types-ts4.5/view/HoverCard/components/CustomPopupContainer.d.ts +1 -1
  57. package/dist/types-ts4.5/view/HoverCard/components/views/forbidden/index.d.ts +4 -0
  58. package/dist/types-ts4.5/view/HoverCard/components/views/forbidden/styled.d.ts +3 -0
  59. package/dist/types-ts4.5/view/HoverCard/components/views/forbidden/types.d.ts +13 -0
  60. package/dist/types-ts4.5/view/HoverCard/styled.d.ts +1 -1
  61. package/dist/types-ts4.5/view/types.d.ts +1 -0
  62. package/package.json +6 -3
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.extractRequestAccessContext = void 0;
7
+ exports.extractRequestAccessContextImproved = exports.extractRequestAccessContext = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _messages = require("../../../messages");
10
10
  var _ForbiddenAction = require("../../../view/BlockCard/actions/ForbiddenAction");
@@ -22,7 +22,9 @@ var extractRequestAccessContext = function extractRequestAccessContext(_ref) {
22
22
  descriptiveMessageKey: 'click_to_join_description',
23
23
  action: (0, _ForbiddenAction.ForbiddenAction)(function () {
24
24
  return window.open(url);
25
- }, 'click_to_join', _messages.messages.click_to_join, context)
25
+ }, 'click_to_join', _messages.messages.click_to_join, {
26
+ context: context
27
+ })
26
28
  });
27
29
  case 'REQUEST_ACCESS':
28
30
  return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
@@ -30,7 +32,9 @@ var extractRequestAccessContext = function extractRequestAccessContext(_ref) {
30
32
  descriptiveMessageKey: 'request_access_description',
31
33
  action: (0, _ForbiddenAction.ForbiddenAction)(function () {
32
34
  return window.open(url);
33
- }, 'request_access', _messages.messages.request_access, context)
35
+ }, 'request_access', _messages.messages.request_access, {
36
+ context: context
37
+ })
34
38
  });
35
39
  case 'PENDING_REQUEST_EXISTS':
36
40
  return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
@@ -48,4 +52,63 @@ var extractRequestAccessContext = function extractRequestAccessContext(_ref) {
48
52
  return jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess;
49
53
  }
50
54
  };
51
- exports.extractRequestAccessContext = extractRequestAccessContext;
55
+ exports.extractRequestAccessContext = extractRequestAccessContext;
56
+ var extractRequestAccessContextImproved = function extractRequestAccessContextImproved(_ref2) {
57
+ var _jsonLd$requestAccess2;
58
+ var jsonLd = _ref2.jsonLd,
59
+ url = _ref2.url,
60
+ product = _ref2.product;
61
+ switch (jsonLd === null || jsonLd === void 0 ? void 0 : (_jsonLd$requestAccess2 = jsonLd.requestAccess) === null || _jsonLd$requestAccess2 === void 0 ? void 0 : _jsonLd$requestAccess2.accessType) {
62
+ case 'DIRECT_ACCESS':
63
+ return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
64
+ titleMessageKey: 'direct_access_title_crossjoin',
65
+ descriptiveMessageKey: 'direct_access_description_crossjoin',
66
+ callToActionMessageKey: 'direct_access_crossjoin',
67
+ action: (0, _ForbiddenAction.ForbiddenAction)(function () {
68
+ return window.open(url);
69
+ }, 'direct_access', _messages.messages.direct_access_crossjoin, {
70
+ product: product
71
+ })
72
+ });
73
+ case 'REQUEST_ACCESS':
74
+ return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
75
+ titleMessageKey: 'default_no_access_title_crossjoin',
76
+ descriptiveMessageKey: 'request_access_description_crossjoin',
77
+ callToActionMessageKey: 'request_access_crossjoin',
78
+ action: (0, _ForbiddenAction.ForbiddenAction)(function () {
79
+ return window.open(url);
80
+ }, 'request_access', _messages.messages.request_access_crossjoin)
81
+ });
82
+ case 'PENDING_REQUEST_EXISTS':
83
+ return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
84
+ titleMessageKey: 'request_access_pending_title_crossjoin',
85
+ descriptiveMessageKey: 'request_access_pending_description_crossjoin',
86
+ callToActionMessageKey: 'request_access_pending_crossjoin',
87
+ action: (0, _ForbiddenAction.ForbiddenAction)(function () {
88
+ return window.open(url);
89
+ }, 'request_access_pending', _messages.messages.request_access_pending_crossjoin)
90
+ });
91
+ case 'DENIED_REQUEST_EXISTS':
92
+ return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
93
+ titleMessageKey: 'default_no_access_title_crossjoin',
94
+ descriptiveMessageKey: 'request_denied_description_crossjoin'
95
+ });
96
+ case 'ACCESS_EXISTS':
97
+ return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
98
+ titleMessageKey: 'default_no_access_title_crossjoin',
99
+ descriptiveMessageKey: 'access_exists_description_crossjoin',
100
+ callToActionMessageKey: 'request_access_crossjoin',
101
+ action: (0, _ForbiddenAction.ForbiddenAction)(function () {
102
+ return window.open(url);
103
+ }, 'access_exists', _messages.messages.request_access_crossjoin)
104
+ });
105
+ case 'FORBIDDEN':
106
+ return _objectSpread(_objectSpread({}, jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess), {}, {
107
+ titleMessageKey: 'forbidden_title_crossjoin',
108
+ descriptiveMessageKey: 'forbidden_description_crossjoin'
109
+ });
110
+ default:
111
+ return jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess;
112
+ }
113
+ };
114
+ exports.extractRequestAccessContextImproved = extractRequestAccessContextImproved;
@@ -7,6 +7,9 @@ exports.default = void 0;
7
7
  var _linkExtractors = require("@atlaskit/link-extractors");
8
8
  var _constants = require("../../constants");
9
9
  var extractPreview = function extractPreview(data) {
10
+ if (!data) {
11
+ return undefined;
12
+ }
10
13
  var url = (0, _linkExtractors.extractImage)(data);
11
14
  return url ? {
12
15
  type: _constants.MediaType.Image,
@@ -5,6 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.messages = void 0;
7
7
  var _reactIntlNext = require("react-intl-next");
8
+ // | 'forbidden_access_crossjoin'
9
+ // | 'forbidden_description_crossjoin';
10
+
8
11
  var messages = (0, _reactIntlNext.defineMessages)({
9
12
  actions: {
10
13
  id: 'fabric.linking.actions',
@@ -460,6 +463,85 @@ var messages = (0, _reactIntlNext.defineMessages)({
460
463
  id: 'fabric.linking.srclinkunknown',
461
464
  defaultMessage: 'View Original',
462
465
  description: "We have a link in our preview modals to the original document. This is for when we don't know the provider name"
466
+ },
467
+ /**
468
+ * Temp messages to put behind a feature flag for the cross join stream, replace the messages with the message of the same
469
+ * title (without _crossjoin) during cleanup in EDM-7977 [https://product-fabric.atlassian.net/browse/EDM-7977].
470
+ */
471
+ default_no_access_title_crossjoin: {
472
+ id: 'fabric.linking.no_access_title_crossjoin',
473
+ defaultMessage: "You don't have access to this content",
474
+ description: 'Informs the user that they dont have access to certain content'
475
+ },
476
+ direct_access_title_crossjoin: {
477
+ id: 'fabric.linking.direct_access_title_crossjoin',
478
+ defaultMessage: 'Join your team in {product}',
479
+ description: 'Informs the user that they have access to this product, and can sign up or join right away.'
480
+ },
481
+ direct_access_description_crossjoin: {
482
+ id: 'fabric.linking.direct_access_description_crossjoin',
483
+ defaultMessage: 'All accounts with your same email domain are approved to access {hostname} in {product}.',
484
+ description: 'Informs the user that they have access to this product, and can sign up or join right away.'
485
+ },
486
+ direct_access_crossjoin: {
487
+ id: 'fabric.linking.direct_access_crossjoin',
488
+ defaultMessage: 'Go to {product}',
489
+ description: 'Allows the user join the product or service immediately'
490
+ },
491
+ request_access_description_crossjoin: {
492
+ id: 'fabric.linking.request_access_description_crossjoin',
493
+ defaultMessage: 'Contact your admin to request access.',
494
+ description: 'Informs the user to request access to a product by talking to the website administrator'
495
+ },
496
+ request_access_crossjoin: {
497
+ id: 'fabric.linking.request_access_crossjoin',
498
+ defaultMessage: 'Request access',
499
+ description: 'Allows the user to request access to a product or service'
500
+ },
501
+ request_access_pending_title_crossjoin: {
502
+ id: 'fabric.linking.request_access_pending_title_crossjoin',
503
+ defaultMessage: 'Access to {product} pending',
504
+ description: 'Informs the user that their request to view this content is pending'
505
+ },
506
+ request_access_pending_description_crossjoin: {
507
+ id: 'fabric.linking.request_access_pending_description_crossjoin',
508
+ defaultMessage: 'Your request to access {hostname} is awaiting admin approval.',
509
+ description: 'Informs the user that their request to view this content is pending website administrator approval'
510
+ },
511
+ request_access_pending_crossjoin: {
512
+ id: 'fabric.linking.request_access_pending_crossjoin',
513
+ defaultMessage: 'Pending approval',
514
+ description: 'Informs the user that their request to view this content is pending'
515
+ },
516
+ request_denied_description_crossjoin: {
517
+ id: 'fabric.linking.request_denied_description_crossjoin',
518
+ defaultMessage: "Your admin didn't approve your request to view {product} pages from {hostname}.",
519
+ description: 'Informs the user that their request to view this content was denied'
520
+ },
521
+ access_exists_description_crossjoin: {
522
+ id: 'fabric.linking.access_exists_description',
523
+ defaultMessage: 'Contact your admin and request access to view this content from {hostname}.',
524
+ description: 'Informs the user to contact the website administrator to request access to a product'
525
+ },
526
+ not_found_description_crossjoin: {
527
+ id: 'fabric.linking.not_found_description_crossjoin',
528
+ defaultMessage: "The page doesn't exist or it may have changed after this link was added.",
529
+ description: 'Error case for when a provided item is not found within the list of items'
530
+ },
531
+ not_found_title_crossjoin: {
532
+ id: 'fabric.linking.not_found_title_crossjoin',
533
+ defaultMessage: "We can't show you this {product} page",
534
+ description: 'Error case for when a provided link is not found'
535
+ },
536
+ forbidden_title_crossjoin: {
537
+ id: 'fabric.linking.forbidden_title_crossjoin',
538
+ defaultMessage: "You don't have access to this content",
539
+ description: 'Informs the user that they do not have access to the linked content.'
540
+ },
541
+ forbidden_description_crossjoin: {
542
+ id: 'fabric.linking.forbidden_description_crossjoin',
543
+ defaultMessage: 'Contact your admin to request access.',
544
+ description: 'Informs the user that they must contact the site administrator for access.'
463
545
  }
464
546
  });
465
547
  exports.messages = messages;
@@ -23,7 +23,7 @@ exports.ANALYTICS_CHANNEL = ANALYTICS_CHANNEL;
23
23
  var context = {
24
24
  componentName: 'smart-cards',
25
25
  packageName: "@atlaskit/smart-card",
26
- packageVersion: "26.28.1"
26
+ packageVersion: "26.29.0"
27
27
  };
28
28
  exports.context = context;
29
29
  var TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
@@ -12,13 +12,11 @@ var _messages = require("../../../messages");
12
12
  var ForbiddenAction = function ForbiddenAction(handler) {
13
13
  var id = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'connect-other-account';
14
14
  var message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _messages.messages.try_another_account;
15
- var context = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
15
+ var values = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
16
16
  return {
17
17
  id: id,
18
18
  text: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, message, {
19
- values: {
20
- context: context
21
- }
19
+ values: values
22
20
  })),
23
21
  promise: function promise() {
24
22
  return new Promise(function (resolve) {
@@ -26,9 +26,6 @@ var PreviewBlock = function PreviewBlock(_ref) {
26
26
  testId = _ref$testId === void 0 ? 'smart-block-preview' : _ref$testId,
27
27
  overrideUrl = _ref.overrideUrl,
28
28
  blockProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
29
- if (status !== _constants.SmartLinkStatus.Resolved) {
30
- return null;
31
- }
32
29
  return (0, _react2.jsx)(_resolved.default, (0, _extends2.default)({}, blockProps, {
33
30
  testId: testId,
34
31
  overrideUrl: overrideUrl
@@ -14,6 +14,7 @@ var _icon = require("../../extractors/flexible/icon");
14
14
  var _utils = require("../../utils");
15
15
  var _linkExtractors = require("@atlaskit/link-extractors");
16
16
  var _extractProviderIcon = _interopRequireDefault(require("../../extractors/flexible/icon/extract-provider-icon"));
17
+ var _extractPreview = _interopRequireDefault(require("../../extractors/flexible/extract-preview"));
17
18
  var getContextByStatus = function getContextByStatus(params) {
18
19
  var _ref = params !== null && params !== void 0 ? params : {},
19
20
  response = _ref.response,
@@ -34,13 +35,15 @@ var getContextByStatus = function getContextByStatus(params) {
34
35
  case _constants.SmartLinkStatus.Errored:
35
36
  case _constants.SmartLinkStatus.Fallback:
36
37
  default:
38
+ var preview = (0, _extractPreview.default)(response === null || response === void 0 ? void 0 : response.data);
37
39
  var linkIcon = (0, _icon.extractErrorIcon)(response, status);
38
40
  var provider = (0, _extractProviderIcon.default)(response === null || response === void 0 ? void 0 : response.data);
39
41
  return {
40
42
  linkIcon: linkIcon,
41
43
  title: url,
42
44
  url: url,
43
- provider: provider
45
+ provider: provider,
46
+ preview: preview
44
47
  };
45
48
  }
46
49
  };
@@ -219,7 +219,7 @@ var HoverCardComponent = function HoverCardComponent(_ref) {
219
219
  id: id,
220
220
  source: HOVER_CARD_SOURCE
221
221
  }, (0, _react.jsx)(_HoverCardContent.default, hoverCardContentProps));
222
- }, [initHideCard, initShowCard, filteredActions, linkState, onActionClick, renderers, showServerActions, url, id]);
222
+ }, [initShowCard, initHideCard, filteredActions, linkState, onActionClick, renderers, showServerActions, url, id]);
223
223
  var trigger = (0, _react2.useCallback)(function (triggerProps) {
224
224
  return (0, _react.jsx)("span", {
225
225
  ref: parentSpan
@@ -26,6 +26,8 @@ var _reactIntlNext = require("react-intl-next");
26
26
  var _messages = require("../../../messages");
27
27
  var _click = require("../../../utils/analytics/click");
28
28
  var _store = require("../../../state/store");
29
+ var _forbidden = _interopRequireDefault(require("./views/forbidden"));
30
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
29
31
  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); }
30
32
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
33
  /** @jsx jsx */
@@ -182,6 +184,13 @@ var HoverCardContent = function HoverCardContent(_ref) {
182
184
  url: url
183
185
  });
184
186
  }
187
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.cross-join')) {
188
+ if (cardState.status === 'forbidden') {
189
+ return (0, _react.jsx)(_forbidden.default, {
190
+ flexibleCardProps: flexibleCardProps
191
+ });
192
+ }
193
+ }
185
194
  if (cardState.status === 'resolved') {
186
195
  return (0, _react.jsx)(_resolved.default, {
187
196
  id: id,
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _reactIntlNext = require("react-intl-next");
12
+ var _FlexibleCard = _interopRequireDefault(require("../../../../FlexibleCard"));
13
+ var _messages = require("../../../../../messages");
14
+ var _blocks = require("../../../../FlexibleCard/components/blocks");
15
+ var _linkExtractors = require("@atlaskit/link-extractors");
16
+ var _styled = require("./styled");
17
+ var _actionGroup = _interopRequireDefault(require("../../../../FlexibleCard/components/blocks/action-group"));
18
+ var _constants = require("../../../../../constants");
19
+ var _styled2 = require("../../../styled");
20
+ var _extractAccessContext = require("../../../../../extractors/common/context/extractAccessContext");
21
+ 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); }
22
+ 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; }
23
+ var HoverCardForbiddenView = function HoverCardForbiddenView(_ref) {
24
+ var _cardState$details, _cardState$details2, _extractProvider$text, _extractProvider;
25
+ var flexibleCardProps = _ref.flexibleCardProps,
26
+ _ref$testId = _ref.testId,
27
+ testId = _ref$testId === void 0 ? 'hover-card-forbidden-view' : _ref$testId;
28
+ var cardState = flexibleCardProps.cardState,
29
+ url = flexibleCardProps.url;
30
+ var data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
31
+ var meta = (_cardState$details2 = cardState.details) === null || _cardState$details2 === void 0 ? void 0 : _cardState$details2.meta;
32
+ var product = (_extractProvider$text = (_extractProvider = (0, _linkExtractors.extractProvider)(data)) === null || _extractProvider === void 0 ? void 0 : _extractProvider.text) !== null && _extractProvider$text !== void 0 ? _extractProvider$text : '';
33
+ var hostname = new URL(url).hostname;
34
+ var _extractRequestAccess = (0, _extractAccessContext.extractRequestAccessContextImproved)({
35
+ jsonLd: meta,
36
+ url: url,
37
+ product: product
38
+ }),
39
+ action = _extractRequestAccess.action,
40
+ descriptiveMessageKey = _extractRequestAccess.descriptiveMessageKey,
41
+ titleMessageKey = _extractRequestAccess.titleMessageKey;
42
+ var actions = (0, _react.useMemo)(function () {
43
+ return [{
44
+ name: _constants.ActionName.CustomAction,
45
+ content: action === null || action === void 0 ? void 0 : action.text,
46
+ onClick: action === null || action === void 0 ? void 0 : action.promise
47
+ }];
48
+ }, [action]);
49
+ if (!titleMessageKey || !descriptiveMessageKey) {
50
+ return null;
51
+ }
52
+ return /*#__PURE__*/_react.default.createElement(_FlexibleCard.default, (0, _extends2.default)({}, flexibleCardProps, {
53
+ testId: testId
54
+ }), /*#__PURE__*/_react.default.createElement(_blocks.PreviewBlock, {
55
+ ignoreContainerPadding: true,
56
+ overrideCss: (0, _styled2.getPreviewBlockStyles)(),
57
+ testId: testId
58
+ }), /*#__PURE__*/_react.default.createElement(_blocks.CustomBlock, {
59
+ overrideCss: _styled.titleBlockStyles,
60
+ testId: "".concat(testId, "-title")
61
+ }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.messages[titleMessageKey], {
62
+ values: {
63
+ product: product
64
+ }
65
+ }))), /*#__PURE__*/_react.default.createElement(_blocks.CustomBlock, {
66
+ overrideCss: _styled.mainTextStyles,
67
+ testId: "".concat(testId, "-content")
68
+ }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.messages[descriptiveMessageKey], {
69
+ values: {
70
+ product: product,
71
+ hostname: hostname
72
+ }
73
+ }))), action && /*#__PURE__*/_react.default.createElement(_blocks.CustomBlock, {
74
+ overrideCss: _styled.connectButtonStyles,
75
+ testId: "".concat(testId, "-button")
76
+ }, /*#__PURE__*/_react.default.createElement(_actionGroup.default, {
77
+ items: actions,
78
+ appearance: "primary"
79
+ })));
80
+ };
81
+ var _default = HoverCardForbiddenView;
82
+ exports.default = _default;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.titleBlockStyles = exports.mainTextStyles = exports.connectButtonStyles = void 0;
8
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _react = require("@emotion/react");
10
+ var _templateObject, _templateObject2, _templateObject3;
11
+ var blockGap = '0rem';
12
+ var titleFontWeight = '600';
13
+ var titleBlockStyles = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n justify-content: center;\n font-weight: ", ";\n"])), titleFontWeight);
14
+ exports.titleBlockStyles = titleBlockStyles;
15
+ var mainTextStyles = (0, _react.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n justify-content: center;\n margin-top: ", ";\n font-size: 0.75rem;\n text-align: center;\n"])), blockGap);
16
+ exports.mainTextStyles = mainTextStyles;
17
+ var connectButtonStyles = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n justify-content: center;\n margin-top: ", ";\n"])), blockGap);
18
+ exports.connectButtonStyles = connectButtonStyles;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -55,7 +55,7 @@ var popupContainerStyles = (0, _react.css)(_templateObject5 || (_templateObject5
55
55
  dark: "var(--ds-shadow-overlay, 0px 0px 0px rgba(188, 214, 240, 0.12),0px 8px 12px rgba(3, 4, 4, 0.36),0px 0px 1px rgba(3, 4, 4, 0.5))"
56
56
  })());
57
57
  exports.popupContainerStyles = popupContainerStyles;
58
- var getPreviewBlockStyles = function getPreviewBlockStyles(snippetHeight) {
59
- return (0, _react.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n height: ", "px;\n ", "\n"])), snippetHeight, (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.show-smart-links-refreshed-design') ? " border-top-left-radius: ".concat("var(--ds-border-radius-200, 8px)", ";\n border-top-right-radius: ", "var(--ds-border-radius-200, 8px)", ";\n margin-bottom: ", blockGap, ";\n }") : "");
58
+ var getPreviewBlockStyles = function getPreviewBlockStyles(previewHeight) {
59
+ return (0, _react.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n ", "\n\n ", "\n"])), previewHeight ? "height: ".concat(previewHeight, "px;") : '', (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.show-smart-links-refreshed-design') ? " border-top-left-radius: ".concat("var(--ds-border-radius-200, 8px)", ";\n border-top-right-radius: ", "var(--ds-border-radius-200, 8px)", ";\n margin-bottom: ", blockGap, ";\n }") : "");
60
60
  };
61
61
  exports.getPreviewBlockStyles = getPreviewBlockStyles;
@@ -18,7 +18,7 @@ var _excluded = ["href", "children", "checkSafety", "onClick", "testId"],
18
18
  _excluded2 = ["isLinkSafe", "showSafetyWarningModal"];
19
19
  var PACKAGE_DATA = {
20
20
  packageName: "@atlaskit/smart-card",
21
- packageVersion: "26.28.1",
21
+ packageVersion: "26.29.0",
22
22
  componentName: 'linkUrl'
23
23
  };
24
24
  var Link = (0, _click.withLinkClickedEvent)('a');
@@ -12,14 +12,18 @@ export const extractRequestAccessContext = ({
12
12
  ...(jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess),
13
13
  callToActionMessageKey: 'click_to_join',
14
14
  descriptiveMessageKey: 'click_to_join_description',
15
- action: ForbiddenAction(() => window.open(url), 'click_to_join', messages.click_to_join, context)
15
+ action: ForbiddenAction(() => window.open(url), 'click_to_join', messages.click_to_join, {
16
+ context
17
+ })
16
18
  };
17
19
  case 'REQUEST_ACCESS':
18
20
  return {
19
21
  ...(jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess),
20
22
  callToActionMessageKey: 'request_access',
21
23
  descriptiveMessageKey: 'request_access_description',
22
- action: ForbiddenAction(() => window.open(url), 'request_access', messages.request_access, context)
24
+ action: ForbiddenAction(() => window.open(url), 'request_access', messages.request_access, {
25
+ context
26
+ })
23
27
  };
24
28
  case 'PENDING_REQUEST_EXISTS':
25
29
  return {
@@ -39,4 +43,61 @@ export const extractRequestAccessContext = ({
39
43
  default:
40
44
  return jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess;
41
45
  }
46
+ };
47
+ export const extractRequestAccessContextImproved = ({
48
+ jsonLd,
49
+ url,
50
+ product
51
+ }) => {
52
+ var _jsonLd$requestAccess2;
53
+ switch (jsonLd === null || jsonLd === void 0 ? void 0 : (_jsonLd$requestAccess2 = jsonLd.requestAccess) === null || _jsonLd$requestAccess2 === void 0 ? void 0 : _jsonLd$requestAccess2.accessType) {
54
+ case 'DIRECT_ACCESS':
55
+ return {
56
+ ...(jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess),
57
+ titleMessageKey: 'direct_access_title_crossjoin',
58
+ descriptiveMessageKey: 'direct_access_description_crossjoin',
59
+ callToActionMessageKey: 'direct_access_crossjoin',
60
+ action: ForbiddenAction(() => window.open(url), 'direct_access', messages.direct_access_crossjoin, {
61
+ product
62
+ })
63
+ };
64
+ case 'REQUEST_ACCESS':
65
+ return {
66
+ ...(jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess),
67
+ titleMessageKey: 'default_no_access_title_crossjoin',
68
+ descriptiveMessageKey: 'request_access_description_crossjoin',
69
+ callToActionMessageKey: 'request_access_crossjoin',
70
+ action: ForbiddenAction(() => window.open(url), 'request_access', messages.request_access_crossjoin)
71
+ };
72
+ case 'PENDING_REQUEST_EXISTS':
73
+ return {
74
+ ...(jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess),
75
+ titleMessageKey: 'request_access_pending_title_crossjoin',
76
+ descriptiveMessageKey: 'request_access_pending_description_crossjoin',
77
+ callToActionMessageKey: 'request_access_pending_crossjoin',
78
+ action: ForbiddenAction(() => window.open(url), 'request_access_pending', messages.request_access_pending_crossjoin)
79
+ };
80
+ case 'DENIED_REQUEST_EXISTS':
81
+ return {
82
+ ...(jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess),
83
+ titleMessageKey: 'default_no_access_title_crossjoin',
84
+ descriptiveMessageKey: 'request_denied_description_crossjoin'
85
+ };
86
+ case 'ACCESS_EXISTS':
87
+ return {
88
+ ...(jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess),
89
+ titleMessageKey: 'default_no_access_title_crossjoin',
90
+ descriptiveMessageKey: 'access_exists_description_crossjoin',
91
+ callToActionMessageKey: 'request_access_crossjoin',
92
+ action: ForbiddenAction(() => window.open(url), 'access_exists', messages.request_access_crossjoin)
93
+ };
94
+ case 'FORBIDDEN':
95
+ return {
96
+ ...(jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess),
97
+ titleMessageKey: 'forbidden_title_crossjoin',
98
+ descriptiveMessageKey: 'forbidden_description_crossjoin'
99
+ };
100
+ default:
101
+ return jsonLd === null || jsonLd === void 0 ? void 0 : jsonLd.requestAccess;
102
+ }
42
103
  };
@@ -1,6 +1,9 @@
1
1
  import { extractImage } from '@atlaskit/link-extractors';
2
2
  import { MediaType } from '../../constants';
3
3
  const extractPreview = data => {
4
+ if (!data) {
5
+ return undefined;
6
+ }
4
7
  const url = extractImage(data);
5
8
  return url ? {
6
9
  type: MediaType.Image,
@@ -1,4 +1,7 @@
1
1
  import { defineMessages } from 'react-intl-next';
2
+
3
+ // | 'forbidden_access_crossjoin'
4
+ // | 'forbidden_description_crossjoin';
2
5
  export const messages = defineMessages({
3
6
  actions: {
4
7
  id: 'fabric.linking.actions',
@@ -454,5 +457,84 @@ export const messages = defineMessages({
454
457
  id: 'fabric.linking.srclinkunknown',
455
458
  defaultMessage: 'View Original',
456
459
  description: "We have a link in our preview modals to the original document. This is for when we don't know the provider name"
460
+ },
461
+ /**
462
+ * Temp messages to put behind a feature flag for the cross join stream, replace the messages with the message of the same
463
+ * title (without _crossjoin) during cleanup in EDM-7977 [https://product-fabric.atlassian.net/browse/EDM-7977].
464
+ */
465
+ default_no_access_title_crossjoin: {
466
+ id: 'fabric.linking.no_access_title_crossjoin',
467
+ defaultMessage: "You don't have access to this content",
468
+ description: 'Informs the user that they dont have access to certain content'
469
+ },
470
+ direct_access_title_crossjoin: {
471
+ id: 'fabric.linking.direct_access_title_crossjoin',
472
+ defaultMessage: 'Join your team in {product}',
473
+ description: 'Informs the user that they have access to this product, and can sign up or join right away.'
474
+ },
475
+ direct_access_description_crossjoin: {
476
+ id: 'fabric.linking.direct_access_description_crossjoin',
477
+ defaultMessage: 'All accounts with your same email domain are approved to access {hostname} in {product}.',
478
+ description: 'Informs the user that they have access to this product, and can sign up or join right away.'
479
+ },
480
+ direct_access_crossjoin: {
481
+ id: 'fabric.linking.direct_access_crossjoin',
482
+ defaultMessage: 'Go to {product}',
483
+ description: 'Allows the user join the product or service immediately'
484
+ },
485
+ request_access_description_crossjoin: {
486
+ id: 'fabric.linking.request_access_description_crossjoin',
487
+ defaultMessage: 'Contact your admin to request access.',
488
+ description: 'Informs the user to request access to a product by talking to the website administrator'
489
+ },
490
+ request_access_crossjoin: {
491
+ id: 'fabric.linking.request_access_crossjoin',
492
+ defaultMessage: 'Request access',
493
+ description: 'Allows the user to request access to a product or service'
494
+ },
495
+ request_access_pending_title_crossjoin: {
496
+ id: 'fabric.linking.request_access_pending_title_crossjoin',
497
+ defaultMessage: 'Access to {product} pending',
498
+ description: 'Informs the user that their request to view this content is pending'
499
+ },
500
+ request_access_pending_description_crossjoin: {
501
+ id: 'fabric.linking.request_access_pending_description_crossjoin',
502
+ defaultMessage: 'Your request to access {hostname} is awaiting admin approval.',
503
+ description: 'Informs the user that their request to view this content is pending website administrator approval'
504
+ },
505
+ request_access_pending_crossjoin: {
506
+ id: 'fabric.linking.request_access_pending_crossjoin',
507
+ defaultMessage: 'Pending approval',
508
+ description: 'Informs the user that their request to view this content is pending'
509
+ },
510
+ request_denied_description_crossjoin: {
511
+ id: 'fabric.linking.request_denied_description_crossjoin',
512
+ defaultMessage: "Your admin didn't approve your request to view {product} pages from {hostname}.",
513
+ description: 'Informs the user that their request to view this content was denied'
514
+ },
515
+ access_exists_description_crossjoin: {
516
+ id: 'fabric.linking.access_exists_description',
517
+ defaultMessage: 'Contact your admin and request access to view this content from {hostname}.',
518
+ description: 'Informs the user to contact the website administrator to request access to a product'
519
+ },
520
+ not_found_description_crossjoin: {
521
+ id: 'fabric.linking.not_found_description_crossjoin',
522
+ defaultMessage: "The page doesn't exist or it may have changed after this link was added.",
523
+ description: 'Error case for when a provided item is not found within the list of items'
524
+ },
525
+ not_found_title_crossjoin: {
526
+ id: 'fabric.linking.not_found_title_crossjoin',
527
+ defaultMessage: "We can't show you this {product} page",
528
+ description: 'Error case for when a provided link is not found'
529
+ },
530
+ forbidden_title_crossjoin: {
531
+ id: 'fabric.linking.forbidden_title_crossjoin',
532
+ defaultMessage: "You don't have access to this content",
533
+ description: 'Informs the user that they do not have access to the linked content.'
534
+ },
535
+ forbidden_description_crossjoin: {
536
+ id: 'fabric.linking.forbidden_description_crossjoin',
537
+ defaultMessage: 'Contact your admin to request access.',
538
+ description: 'Informs the user that they must contact the site administrator for access.'
457
539
  }
458
540
  });
@@ -4,7 +4,7 @@ export const ANALYTICS_CHANNEL = 'media';
4
4
  export const context = {
5
5
  componentName: 'smart-cards',
6
6
  packageName: "@atlaskit/smart-card",
7
- packageVersion: "26.28.1"
7
+ packageVersion: "26.29.0"
8
8
  };
9
9
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
10
10
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -2,12 +2,10 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import React from 'react';
3
3
  import { FormattedMessage } from 'react-intl-next';
4
4
  import { messages } from '../../../messages';
5
- export const ForbiddenAction = (handler, id = 'connect-other-account', message = messages.try_another_account, context = '') => ({
5
+ export const ForbiddenAction = (handler, id = 'connect-other-account', message = messages.try_another_account, values = {}) => ({
6
6
  id,
7
7
  text: /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, message, {
8
- values: {
9
- context
10
- }
8
+ values: values
11
9
  })),
12
10
  promise: () => new Promise(resolve => resolve(handler())),
13
11
  buttonAppearance: 'default'