@atlaskit/smart-card 26.15.11 → 26.16.1

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 (72) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/constants.js +1 -0
  3. package/dist/cjs/extractors/flexible/index.js +1 -0
  4. package/dist/cjs/extractors/flexible/utils.js +5 -1
  5. package/dist/cjs/messages.js +10 -0
  6. package/dist/cjs/utils/analytics/analytics.js +1 -1
  7. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +1 -1
  8. package/dist/cjs/view/FlexibleCard/components/elements/date-time/index.js +5 -0
  9. package/dist/cjs/view/FlexibleCard/components/elements/index.js +8 -2
  10. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +4 -0
  11. package/dist/cjs/view/HoverCard/components/{SnippetOrPreview.js → ImagePreview.js} +19 -17
  12. package/dist/cjs/view/HoverCard/components/views/resolved/index.js +5 -5
  13. package/dist/cjs/view/HoverCard/components/views/resolving/styled.js +2 -1
  14. package/dist/cjs/view/HoverCard/styled.js +10 -6
  15. package/dist/cjs/view/LinkUrl/index.js +1 -1
  16. package/dist/es2019/constants.js +1 -0
  17. package/dist/es2019/extractors/flexible/index.js +2 -1
  18. package/dist/es2019/extractors/flexible/utils.js +3 -0
  19. package/dist/es2019/messages.js +10 -0
  20. package/dist/es2019/utils/analytics/analytics.js +1 -1
  21. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +1 -0
  22. package/dist/es2019/view/FlexibleCard/components/elements/date-time/index.js +5 -0
  23. package/dist/es2019/view/FlexibleCard/components/elements/index.js +5 -0
  24. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +5 -0
  25. package/dist/es2019/view/HoverCard/components/ImagePreview.js +43 -0
  26. package/dist/es2019/view/HoverCard/components/views/resolved/index.js +5 -5
  27. package/dist/es2019/view/HoverCard/components/views/resolving/styled.js +2 -0
  28. package/dist/es2019/view/HoverCard/styled.js +10 -3
  29. package/dist/es2019/view/LinkUrl/index.js +1 -1
  30. package/dist/esm/constants.js +1 -0
  31. package/dist/esm/extractors/flexible/index.js +2 -1
  32. package/dist/esm/extractors/flexible/utils.js +3 -0
  33. package/dist/esm/messages.js +10 -0
  34. package/dist/esm/utils/analytics/analytics.js +1 -1
  35. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +1 -1
  36. package/dist/esm/view/FlexibleCard/components/elements/date-time/index.js +5 -0
  37. package/dist/esm/view/FlexibleCard/components/elements/index.js +5 -0
  38. package/dist/esm/view/FlexibleCard/components/elements/utils.js +4 -0
  39. package/dist/esm/view/HoverCard/components/ImagePreview.js +49 -0
  40. package/dist/esm/view/HoverCard/components/views/resolved/index.js +5 -5
  41. package/dist/esm/view/HoverCard/components/views/resolving/styled.js +2 -1
  42. package/dist/esm/view/HoverCard/styled.js +8 -5
  43. package/dist/esm/view/LinkUrl/index.js +1 -1
  44. package/dist/types/constants.d.ts +2 -1
  45. package/dist/types/extractors/flexible/utils.d.ts +1 -0
  46. package/dist/types/messages.d.ts +1 -1
  47. package/dist/types/state/flexible-ui-context/types.d.ts +6 -0
  48. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +8 -1
  49. package/dist/types/view/FlexibleCard/components/elements/date-time/index.d.ts +1 -0
  50. package/dist/types/view/FlexibleCard/components/elements/date-time/types.d.ts +2 -2
  51. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +5 -0
  52. package/dist/types/view/HoverCard/components/ImagePreview.d.ts +4 -0
  53. package/dist/types/view/HoverCard/styled.d.ts +1 -0
  54. package/dist/types/view/HoverCard/types.d.ts +2 -2
  55. package/dist/types-ts4.5/constants.d.ts +2 -1
  56. package/dist/types-ts4.5/extractors/flexible/utils.d.ts +1 -0
  57. package/dist/types-ts4.5/messages.d.ts +1 -1
  58. package/dist/types-ts4.5/state/flexible-ui-context/types.d.ts +6 -0
  59. package/dist/types-ts4.5/view/FlexibleCard/components/blocks/types.d.ts +8 -1
  60. package/dist/types-ts4.5/view/FlexibleCard/components/elements/date-time/index.d.ts +1 -0
  61. package/dist/types-ts4.5/view/FlexibleCard/components/elements/date-time/types.d.ts +2 -2
  62. package/dist/types-ts4.5/view/FlexibleCard/components/elements/index.d.ts +5 -0
  63. package/dist/types-ts4.5/view/HoverCard/components/ImagePreview.d.ts +4 -0
  64. package/dist/types-ts4.5/view/HoverCard/styled.d.ts +1 -0
  65. package/dist/types-ts4.5/view/HoverCard/types.d.ts +2 -2
  66. package/package.json +2 -2
  67. package/report.api.md +8 -0
  68. package/tmp/api-report-tmp.d.ts +8 -1
  69. package/dist/es2019/view/HoverCard/components/SnippetOrPreview.js +0 -41
  70. package/dist/esm/view/HoverCard/components/SnippetOrPreview.js +0 -47
  71. package/dist/types/view/HoverCard/components/SnippetOrPreview.d.ts +0 -4
  72. package/dist/types-ts4.5/view/HoverCard/components/SnippetOrPreview.d.ts +0 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 26.16.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`8e0d75e3666`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8e0d75e3666) - Update Image preview styles for Hover Card
8
+
9
+ ## 26.16.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`b73f38b2588`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b73f38b2588) - Add new FlexUI element - SentOn
14
+
3
15
  ## 26.15.11
4
16
 
5
17
  ### Patch Changes
@@ -141,6 +141,7 @@ var ElementName = /*#__PURE__*/function (ElementName) {
141
141
  ElementName["Title"] = "Title";
142
142
  ElementName["ViewCount"] = "ViewCount";
143
143
  ElementName["VoteCount"] = "VoteCount";
144
+ ElementName["SentOn"] = "SentOn";
144
145
  return ElementName;
145
146
  }({});
146
147
  /**
@@ -60,6 +60,7 @@ var extractFlexibleUiContext = function extractFlexibleUiContext() {
60
60
  provider: (0, _extractProviderIcon.default)(data),
61
61
  programmingLanguage: (0, _utils.extractProgrammingLanguage)(data),
62
62
  readTime: (0, _utils.extractReadTime)(data),
63
+ sentOn: (0, _utils.extractSentOn)(data),
63
64
  snippet: (0, _primitives.extractSummary)(data) || undefined,
64
65
  // Explicitly set here to remove an empty string
65
66
  sourceBranch: (0, _utils.extractSourceBranch)(data),
@@ -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.extractVoteCount = exports.extractViewCount = exports.extractTargetBranch = exports.extractSubscriberCount = exports.extractSubTasksProgress = exports.extractStoryPoints = exports.extractSourceBranch = exports.extractReadTime = exports.extractReactCount = exports.extractProgrammingLanguage = exports.extractPersonAssignedToAsArray = exports.extractOwnedBy = exports.extractModifiedBy = exports.extractLocation = exports.extractDueOn = exports.extractCreatedBy = exports.extractCommentCount = exports.extractChecklistProgress = exports.extractAttachmentCount = exports.extractAssignedTo = void 0;
7
+ exports.extractVoteCount = exports.extractViewCount = exports.extractTargetBranch = exports.extractSubscriberCount = exports.extractSubTasksProgress = exports.extractStoryPoints = exports.extractSourceBranch = exports.extractSentOn = exports.extractReadTime = exports.extractReactCount = exports.extractProgrammingLanguage = exports.extractPersonAssignedToAsArray = exports.extractOwnedBy = exports.extractModifiedBy = exports.extractLocation = exports.extractDueOn = exports.extractCreatedBy = exports.extractCommentCount = exports.extractChecklistProgress = exports.extractAttachmentCount = exports.extractAssignedTo = void 0;
8
8
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
9
  var _linkExtractors = require("@atlaskit/link-extractors");
10
10
  var extractLinkName = function extractLinkName(link) {
@@ -114,6 +114,10 @@ var extractReadTime = function extractReadTime(data) {
114
114
  return extractValue(data, 'atlassian:readTimeInMinutes');
115
115
  };
116
116
  exports.extractReadTime = extractReadTime;
117
+ var extractSentOn = function extractSentOn(data) {
118
+ return extractValue(data, 'dateSent');
119
+ };
120
+ exports.extractSentOn = extractSentOn;
117
121
  var extractStoryPoints = function extractStoryPoints(data) {
118
122
  return extractValue(data, 'atlassian:storyPoints');
119
123
  };
@@ -366,6 +366,16 @@ var messages = (0, _reactIntlNext.defineMessages)({
366
366
  defaultMessage: 'Save',
367
367
  description: 'Just the "save" word'
368
368
  },
369
+ sent_on_relative: {
370
+ id: 'fabric.linking.sent_on_relative',
371
+ defaultMessage: 'Sent {context}',
372
+ description: 'Indicated when entity was sent (relative form)'
373
+ },
374
+ sent_on_absolute: {
375
+ id: 'fabric.linking.sent_on_absolute',
376
+ defaultMessage: 'Sent on {context}',
377
+ description: 'Indicated when entity was sent (absolute form)'
378
+ },
369
379
  status_change_load_error: {
370
380
  id: 'fabric.linking.status_change_load_error',
371
381
  defaultMessage: 'We couldn’t load the statuses and transitions',
@@ -21,7 +21,7 @@ exports.ANALYTICS_CHANNEL = ANALYTICS_CHANNEL;
21
21
  var context = {
22
22
  componentName: 'smart-cards',
23
23
  packageName: "@atlaskit/smart-card",
24
- packageVersion: "26.15.11"
24
+ packageVersion: "26.16.1"
25
25
  };
26
26
  exports.context = context;
27
27
  var TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
@@ -24,7 +24,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
24
24
  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; }
25
25
  // Determine whether the element can be display as inline/block.
26
26
 
27
- var ElementDisplaySchema = (_ElementDisplaySchema = {}, (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AssignedTo, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AssignedToGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AttachmentCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AuthorGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ChecklistProgress, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CollaboratorGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CommentCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CreatedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CreatedOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.DueOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.LatestCommit, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.LinkIcon, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Location, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ModifiedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ModifiedOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.OwnedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.OwnedByGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Preview, ['block']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Priority, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ProgrammingLanguage, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Provider, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ReactCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ReadTime, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Snippet, ['block']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SourceBranch, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.State, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SubscriberCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SubTasksProgress, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.StoryPoints, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.TargetBranch, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Title, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ViewCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.VoteCount, ['inline']), _ElementDisplaySchema);
27
+ var ElementDisplaySchema = (_ElementDisplaySchema = {}, (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AssignedTo, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AssignedToGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AttachmentCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AuthorGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ChecklistProgress, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CollaboratorGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CommentCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CreatedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CreatedOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.DueOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.LatestCommit, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.LinkIcon, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Location, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ModifiedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ModifiedOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.OwnedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.OwnedByGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Preview, ['block']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Priority, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ProgrammingLanguage, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Provider, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ReactCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ReadTime, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Snippet, ['block']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SourceBranch, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SentOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.State, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SubscriberCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SubTasksProgress, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.StoryPoints, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.TargetBranch, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Title, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ViewCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.VoteCount, ['inline']), _ElementDisplaySchema);
28
28
  exports.ElementDisplaySchema = ElementDisplaySchema;
29
29
  var getDirectionStyles = function getDirectionStyles(direction) {
30
30
  switch (direction) {
@@ -25,6 +25,10 @@ var typeToDescriptorMap = {
25
25
  modified: {
26
26
  relative: _messages.messages.modified_on_relative,
27
27
  absolute: _messages.messages.modified_on_absolute
28
+ },
29
+ sent: {
30
+ relative: _messages.messages.sent_on_relative,
31
+ absolute: _messages.messages.sent_on_absolute
28
32
  }
29
33
  };
30
34
 
@@ -34,6 +38,7 @@ var typeToDescriptorMap = {
34
38
  * @param {DateTimeProps} DateTimeProps - The props necessary for the DateTime element.
35
39
  * @see CreatedOn
36
40
  * @see ModifiedOn
41
+ * @see SentOn
37
42
  */
38
43
  var DateTime = function DateTime(_ref) {
39
44
  var date = _ref.date,
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.VoteCount = exports.ViewCount = exports.Title = exports.TargetBranch = exports.SubscriberCount = exports.SubTasksProgress = exports.StoryPoints = exports.State = exports.SourceBranch = exports.Snippet = exports.ReadTime = exports.ReactCount = exports.Provider = exports.ProgrammingLanguage = exports.Priority = exports.Preview = exports.OwnedByGroup = exports.OwnedBy = exports.ModifiedOn = exports.ModifiedBy = exports.Location = exports.LinkIcon = exports.LatestCommit = exports.DueOn = exports.CreatedOn = exports.CreatedBy = exports.CommentCount = exports.CollaboratorGroup = exports.ChecklistProgress = exports.AuthorGroup = exports.AttachmentCount = exports.AssignedToGroup = exports.AssignedTo = void 0;
6
+ exports.VoteCount = exports.ViewCount = exports.Title = exports.TargetBranch = exports.SubscriberCount = exports.SubTasksProgress = exports.StoryPoints = exports.State = exports.SourceBranch = exports.Snippet = exports.SentOn = exports.ReadTime = exports.ReactCount = exports.Provider = exports.ProgrammingLanguage = exports.Priority = exports.Preview = exports.OwnedByGroup = exports.OwnedBy = exports.ModifiedOn = exports.ModifiedBy = exports.Location = exports.LinkIcon = exports.LatestCommit = exports.DueOn = exports.CreatedOn = exports.CreatedBy = exports.CommentCount = exports.CollaboratorGroup = exports.ChecklistProgress = exports.AuthorGroup = exports.AttachmentCount = exports.AssignedToGroup = exports.AssignedTo = void 0;
7
7
  var _utils = require("./utils");
8
8
  var _constants = require("../../../../constants");
9
9
  // Attention: Keep the export name and element name the same.
@@ -145,11 +145,17 @@ var ReactCount = (0, _utils.createElement)(_constants.ElementName.ReactCount);
145
145
  */
146
146
  exports.ReactCount = ReactCount;
147
147
  var ReadTime = (0, _utils.createElement)(_constants.ElementName.ReadTime);
148
+ /**
149
+ * Creates a SentOn DateTime element using the data from SentOn in the Flexible UI Context.
150
+ * @see DateTime
151
+ */
152
+ exports.ReadTime = ReadTime;
153
+ var SentOn = (0, _utils.createElement)(_constants.ElementName.SentOn);
148
154
  /**
149
155
  * Creates a Snippet element using the data from Snippet in the Flexible UI Context.
150
156
  * @see Text
151
157
  */
152
- exports.ReadTime = ReadTime;
158
+ exports.SentOn = SentOn;
153
159
  var Snippet = (0, _utils.createElement)(_constants.ElementName.Snippet);
154
160
  /**
155
161
  * Creates a SourceBranch Text element using the data from sourceBranch in the Flexible UI Context.
@@ -102,6 +102,8 @@ var elementMappings = (_elementMappings = {}, (0, _defineProperty2.default)(_ele
102
102
  component: _badge.default
103
103
  }), (0, _defineProperty2.default)(_elementMappings, _constants.ElementName.ReadTime, {
104
104
  component: _text.default
105
+ }), (0, _defineProperty2.default)(_elementMappings, _constants.ElementName.SentOn, {
106
+ component: _dateTime.default
105
107
  }), (0, _defineProperty2.default)(_elementMappings, _constants.ElementName.Snippet, {
106
108
  component: _text.default,
107
109
  props: {
@@ -177,6 +179,8 @@ var getData = function getData(elementName, contextKey, context) {
177
179
  return toFormattedTextProps(_messages.messages.modified_by, context.modifiedBy);
178
180
  case _constants.ElementName.ModifiedOn:
179
181
  return toDateTimeProps('modified', context.modifiedOn);
182
+ case _constants.ElementName.SentOn:
183
+ return toDateTimeProps('sent', context.sentOn);
180
184
  case _constants.ElementName.ReadTime:
181
185
  return toFormattedTextProps(_messages.messages.read_time, data);
182
186
  case _constants.ElementName.Snippet:
@@ -6,25 +6,24 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = void 0;
9
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
11
  var _react = _interopRequireWildcard(require("react"));
12
- var _react2 = require("@emotion/react");
13
12
  var _extractPreview = _interopRequireDefault(require("../../../extractors/flexible/extract-preview"));
14
13
  var _blocks = require("../../FlexibleCard/components/blocks");
15
14
  var _styled = require("../styled");
16
- var _templateObject;
15
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
17
16
  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); }
18
17
  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; }
19
- var SnippetOrPreview = function SnippetOrPreview(_ref) {
18
+ var ImagePreview = function ImagePreview(_ref) {
20
19
  var data = _ref.data,
21
- snippetHeight = _ref.snippetHeight;
20
+ fallbackElementHeight = _ref.fallbackElementHeight;
22
21
  var transitionStarted = (0, _react.useRef)(false);
23
22
  var previewBlockRef = (0, _react.useRef)(null);
24
- var _useState = (0, _react.useState)(false),
23
+ var _useState = (0, _react.useState)(true),
25
24
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
26
- showSnippet = _useState2[0],
27
- setShowSnippet = _useState2[1];
25
+ showPreview = _useState2[0],
26
+ setShowPreview = _useState2[1];
28
27
  var _useState3 = (0, _react.useState)(),
29
28
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
30
29
  previewCss = _useState4[0],
@@ -33,26 +32,29 @@ var SnippetOrPreview = function SnippetOrPreview(_ref) {
33
32
  // Set Preview to a fixed height to enable transitions
34
33
  var onPreviewRender = (0, _react.useCallback)(function () {
35
34
  var _previewBlockRef$curr;
36
- previewBlockRef.current && setPreviewCss((0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n height: ", "px;\n "])), (_previewBlockRef$curr = previewBlockRef.current) === null || _previewBlockRef$curr === void 0 ? void 0 : _previewBlockRef$curr.getBoundingClientRect().height));
35
+ previewBlockRef.current && setPreviewCss((0, _styled.getPreviewBlockStyles)((_previewBlockRef$curr = previewBlockRef.current) === null || _previewBlockRef$curr === void 0 ? void 0 : _previewBlockRef$curr.getBoundingClientRect().height));
37
36
  }, []);
38
37
 
39
- // On error set Preview to Snippet height with transition
38
+ // On error set Preview to Fallback height with transition
40
39
  var onPreviewError = (0, _react.useCallback)(function () {
41
40
  if (transitionStarted.current === false) {
42
- setPreviewCss((0, _styled.getTransitionStyles)(snippetHeight));
41
+ setPreviewCss((0, _styled.getTransitionStyles)(fallbackElementHeight));
43
42
  transitionStarted.current = true;
44
43
  }
45
- }, [snippetHeight]);
44
+ }, [fallbackElementHeight]);
46
45
  var onPreviewTransitionEnd = (0, _react.useCallback)(function () {
47
- setShowSnippet(true);
46
+ setShowPreview(false);
48
47
  }, []);
49
- return !showSnippet && data && (0, _extractPreview.default)(data) ? /*#__PURE__*/_react.default.createElement(_blocks.PreviewBlock, {
50
- onError: onPreviewError,
48
+ return showPreview && data && (0, _extractPreview.default)(data) ? /*#__PURE__*/_react.default.createElement(_blocks.PreviewBlock, (0, _extends2.default)({
49
+ onError: onPreviewError
50
+ }, (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.enable-better-metadata_iojwg') && {
51
+ ignoreContainerPadding: true
52
+ }, {
51
53
  overrideCss: previewCss,
52
54
  onTransitionEnd: onPreviewTransitionEnd,
53
55
  blockRef: previewBlockRef,
54
56
  onRender: onPreviewRender
55
- }) : /*#__PURE__*/_react.default.createElement(_blocks.SnippetBlock, null);
57
+ })) : null;
56
58
  };
57
- var _default = SnippetOrPreview;
59
+ var _default = ImagePreview;
58
60
  exports.default = _default;
@@ -13,7 +13,7 @@ var _blocks = require("../../../../FlexibleCard/components/blocks");
13
13
  var _styled = require("./styled");
14
14
  var _FlexibleCard = _interopRequireDefault(require("../../../../FlexibleCard"));
15
15
  var _utils = require("../../../utils");
16
- var _SnippetOrPreview = _interopRequireDefault(require("../../SnippetOrPreview"));
16
+ var _ImagePreview = _interopRequireDefault(require("../../ImagePreview"));
17
17
  var _extractMetadata = require("../../../../../extractors/hover/extractMetadata");
18
18
  var _messages = require("../../../../../messages");
19
19
  var _reactIntlNext = require("react-intl-next");
@@ -100,11 +100,11 @@ var HoverCardResolvedView = function HoverCardResolvedView(_ref) {
100
100
  var _snippetBlockRef$curr, _snippetBlockRef$curr2;
101
101
  snippetHeight.current = (_snippetBlockRef$curr = (_snippetBlockRef$curr2 = snippetBlockRef.current) === null || _snippetBlockRef$curr2 === void 0 ? void 0 : _snippetBlockRef$curr2.getBoundingClientRect().height) !== null && _snippetBlockRef$curr !== void 0 ? _snippetBlockRef$curr : 0;
102
102
  }, []);
103
- var body = (0, _SnippetOrPreview.default)({
103
+ var imagePreview = (0, _ImagePreview.default)({
104
104
  data: data,
105
- snippetHeight: snippetHeight.current
105
+ fallbackElementHeight: snippetHeight.current
106
106
  });
107
- return /*#__PURE__*/_react.default.createElement(_FlexibleCard.default, flexibleCardProps, /*#__PURE__*/_react.default.createElement(_blocks.TitleBlock, (0, _extends2.default)({}, titleBlockProps, {
107
+ return /*#__PURE__*/_react.default.createElement(_FlexibleCard.default, flexibleCardProps, (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.enable-better-metadata_iojwg') && imagePreview, /*#__PURE__*/_react.default.createElement(_blocks.TitleBlock, (0, _extends2.default)({}, titleBlockProps, {
108
108
  metadataPosition: _constants.SmartLinkPosition.Top
109
109
  })), /*#__PURE__*/_react.default.createElement(_blocks.MetadataBlock, (0, _extends2.default)({
110
110
  primary: topPrimary,
@@ -114,7 +114,7 @@ var HoverCardResolvedView = function HoverCardResolvedView(_ref) {
114
114
  size: _constants.SmartLinkSize.Large
115
115
  }, (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.enable-better-metadata_iojwg') && {
116
116
  size: _constants.SmartLinkSize.Medium
117
- })), body, /*#__PURE__*/_react.default.createElement(_blocks.SnippetBlock, {
117
+ })), !imagePreview && /*#__PURE__*/_react.default.createElement(_blocks.SnippetBlock, null), !(0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.enable-better-metadata_iojwg') && imagePreview, /*#__PURE__*/_react.default.createElement(_blocks.SnippetBlock, {
118
118
  testId: 'hidden-snippet',
119
119
  onRender: onSnippetRender,
120
120
  blockRef: snippetBlockRef,
@@ -7,8 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.titleBlockStyles = exports.skeletonContainer = exports.loadingViewContainer = exports.getTitleStyles = void 0;
8
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
9
  var _react = require("@emotion/react");
10
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
10
11
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
11
- var loadingViewContainer = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: column;\n"])));
12
+ var loadingViewContainer = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: column;\n ", "\n"])), (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.enable-better-metadata_iojwg') ? "padding: 1rem;" : "");
12
13
  exports.loadingViewContainer = loadingViewContainer;
13
14
  var skeletonContainer = (0, _react.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: column;\n gap: 0.625rem;\n align-items: center;\n"])));
14
15
  exports.skeletonContainer = skeletonContainer;
@@ -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.titleBlockCss = exports.separatorCss = exports.popupContainerStyles = exports.getTransitionStyles = exports.flexibleUiOptions = exports.HoverCardContainer = exports.HOVER_CARD_Z_INDEX = exports.CARD_WIDTH_REM = exports.CARD_GAP_PX = void 0;
7
+ exports.titleBlockCss = exports.separatorCss = exports.popupContainerStyles = exports.getTransitionStyles = exports.getPreviewBlockStyles = exports.flexibleUiOptions = exports.HoverCardContainer = exports.HOVER_CARD_Z_INDEX = exports.CARD_WIDTH_REM = exports.CARD_GAP_PX = void 0;
8
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _react = require("@emotion/react");
@@ -13,7 +13,7 @@ var _constants = require("../../constants");
13
13
  var _constants2 = require("@atlaskit/theme/constants");
14
14
  var _components = require("@atlaskit/theme/components");
15
15
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
16
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
17
17
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
18
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
19
  // Temporary fix for Confluence inline comment on editor mod has z-index of 500, Jira issue view has z-index of 510
@@ -23,11 +23,11 @@ var flexibleUiOptions = _objectSpread({
23
23
  hideBackground: true,
24
24
  hideElevation: true,
25
25
  size: _constants.SmartLinkSize.Medium,
26
- hidePadding: true,
27
26
  hideHoverCardPreviewButton: false,
28
27
  zIndex: HOVER_CARD_Z_INDEX + 1
29
28
  }, !(0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.enable-better-metadata_iojwg') && {
30
- theme: _constants.SmartLinkTheme.Black
29
+ theme: _constants.SmartLinkTheme.Black,
30
+ hidePadding: true
31
31
  });
32
32
  exports.flexibleUiOptions = flexibleUiOptions;
33
33
  var CARD_WIDTH_REM = 24;
@@ -39,7 +39,7 @@ var blockGap = '0.5rem';
39
39
  var elementGap = '0.5rem';
40
40
  var separatorCss = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n [data-separator] + [data-separator]:before {\n margin-right: ", ";\n }\n ", "\n"])), elementGap, (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.enable-better-metadata_iojwg') ? " [data-smart-element-avatar-group] + [data-separator]:before {\n content: '\u2022';\n margin-right: ".concat(elementGap, ";\n }") : "");
41
41
  exports.separatorCss = separatorCss;
42
- var HoverCardContainer = (0, _react.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n background: none;\n border-width: 0;\n box-sizing: border-box;\n width: ", "rem;\n padding: 1rem;\n\n .", " {\n display: none;\n }\n"])), CARD_WIDTH_REM, _index.loadingPlaceholderClassName);
42
+ var HoverCardContainer = (0, _react.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n background: none;\n border-width: 0;\n box-sizing: border-box;\n width: ", "rem;\n ", "\n\n .", " {\n display: none;\n }\n"])), CARD_WIDTH_REM, !(0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.enable-better-metadata_iojwg') ? "padding: 1rem;" : "", _index.loadingPlaceholderClassName);
43
43
  exports.HoverCardContainer = HoverCardContainer;
44
44
  var titleBlockCss = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n gap: ", ";\n\n ", "\n\n // title and subtitle element group\n [data-smart-element-group] {\n // gap between title and subtitle\n gap: 0.06rem;\n display: flex;\n /* subtitle element group */\n > [data-smart-element-group] {\n > span {\n margin-right: ", ";\n }\n }\n }\n\n ", "\n"])), blockGap, separatorCss, elementGap, (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.smart-card.show-smart-links-refreshed-design') ? "[data-smart-element=\"Title\"] {\n font-weight: 600;\n }" : "");
45
45
  exports.titleBlockCss = titleBlockCss;
@@ -54,4 +54,8 @@ var popupContainerStyles = (0, _react.css)(_templateObject5 || (_templateObject5
54
54
  light: "var(--ds-shadow-overlay, 0px 8px 12px rgba(9, 30, 66, 0.15),0px 0px 1px rgba(9, 30, 66, 0.31))",
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
- exports.popupContainerStyles = popupContainerStyles;
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-300, 12px)", ";\n border-top-right-radius: ", "var(--ds-border-radius-300, 12px)", ";\n margin-bottom: ", blockGap, ";\n }") : "");
60
+ };
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.15.11",
21
+ packageVersion: "26.16.1",
22
22
  componentName: 'linkUrl'
23
23
  };
24
24
  var Link = (0, _click.withLinkClickedEvent)('a');
@@ -133,6 +133,7 @@ export let ElementName = /*#__PURE__*/function (ElementName) {
133
133
  ElementName["Title"] = "Title";
134
134
  ElementName["ViewCount"] = "ViewCount";
135
135
  ElementName["VoteCount"] = "VoteCount";
136
+ ElementName["SentOn"] = "SentOn";
136
137
  return ElementName;
137
138
  }({});
138
139
 
@@ -1,6 +1,6 @@
1
1
  import { extractSummary } from '../common/primitives';
2
2
  import { extractLinkIcon } from './icon';
3
- import { extractAttachmentCount, extractChecklistProgress, extractCommentCount, extractCreatedBy, extractModifiedBy, extractProgrammingLanguage, extractSubscriberCount, extractViewCount, extractReactCount, extractVoteCount, extractSourceBranch, extractTargetBranch, extractDueOn, extractLocation, extractOwnedBy, extractAssignedTo, extractSubTasksProgress, extractStoryPoints, extractReadTime, extractPersonAssignedToAsArray } from './utils';
3
+ import { extractAttachmentCount, extractChecklistProgress, extractCommentCount, extractCreatedBy, extractModifiedBy, extractProgrammingLanguage, extractSubscriberCount, extractViewCount, extractReactCount, extractVoteCount, extractSourceBranch, extractTargetBranch, extractDueOn, extractLocation, extractOwnedBy, extractAssignedTo, extractSubTasksProgress, extractStoryPoints, extractReadTime, extractSentOn, extractPersonAssignedToAsArray } from './utils';
4
4
  import { extractPersonsUpdatedBy } from './collaboratorGroup';
5
5
  import { extractPersonCreatedBy, extractTitle, extractDateUpdated, extractDateCreated, extractLink, extractPersonOwnedBy } from '@atlaskit/link-extractors';
6
6
  import extractPriority from './extract-priority';
@@ -53,6 +53,7 @@ const extractFlexibleUiContext = ({
53
53
  provider: extractProviderIcon(data),
54
54
  programmingLanguage: extractProgrammingLanguage(data),
55
55
  readTime: extractReadTime(data),
56
+ sentOn: extractSentOn(data),
56
57
  snippet: extractSummary(data) || undefined,
57
58
  // Explicitly set here to remove an empty string
58
59
  sourceBranch: extractSourceBranch(data),
@@ -68,6 +68,9 @@ export const extractSubTasksProgress = data => {
68
68
  export const extractReadTime = data => {
69
69
  return extractValue(data, 'atlassian:readTimeInMinutes');
70
70
  };
71
+ export const extractSentOn = data => {
72
+ return extractValue(data, 'dateSent');
73
+ };
71
74
  export const extractStoryPoints = data => {
72
75
  return extractValue(data, 'atlassian:storyPoints');
73
76
  };
@@ -360,6 +360,16 @@ export const messages = defineMessages({
360
360
  defaultMessage: 'Save',
361
361
  description: 'Just the "save" word'
362
362
  },
363
+ sent_on_relative: {
364
+ id: 'fabric.linking.sent_on_relative',
365
+ defaultMessage: 'Sent {context}',
366
+ description: 'Indicated when entity was sent (relative form)'
367
+ },
368
+ sent_on_absolute: {
369
+ id: 'fabric.linking.sent_on_absolute',
370
+ defaultMessage: 'Sent on {context}',
371
+ description: 'Indicated when entity was sent (absolute form)'
372
+ },
363
373
  status_change_load_error: {
364
374
  id: 'fabric.linking.status_change_load_error',
365
375
  defaultMessage: 'We couldn’t load the statuses and transitions',
@@ -3,7 +3,7 @@ export const ANALYTICS_CHANNEL = 'media';
3
3
  export const context = {
4
4
  componentName: 'smart-cards',
5
5
  packageName: "@atlaskit/smart-card",
6
- packageVersion: "26.15.11"
6
+ packageVersion: "26.16.1"
7
7
  };
8
8
  export let TrackQuickActionType = /*#__PURE__*/function (TrackQuickActionType) {
9
9
  TrackQuickActionType["StatusUpdate"] = "StatusUpdate";
@@ -35,6 +35,7 @@ export const ElementDisplaySchema = {
35
35
  [ElementName.ReadTime]: ['inline'],
36
36
  [ElementName.Snippet]: ['block'],
37
37
  [ElementName.SourceBranch]: ['inline'],
38
+ [ElementName.SentOn]: ['inline'],
38
39
  [ElementName.State]: ['inline'],
39
40
  [ElementName.SubscriberCount]: ['inline'],
40
41
  [ElementName.SubTasksProgress]: ['inline'],
@@ -21,6 +21,10 @@ const typeToDescriptorMap = {
21
21
  modified: {
22
22
  relative: messages.modified_on_relative,
23
23
  absolute: messages.modified_on_absolute
24
+ },
25
+ sent: {
26
+ relative: messages.sent_on_relative,
27
+ absolute: messages.sent_on_absolute
24
28
  }
25
29
  };
26
30
 
@@ -30,6 +34,7 @@ const typeToDescriptorMap = {
30
34
  * @param {DateTimeProps} DateTimeProps - The props necessary for the DateTime element.
31
35
  * @see CreatedOn
32
36
  * @see ModifiedOn
37
+ * @see SentOn
33
38
  */
34
39
  const DateTime = ({
35
40
  date,
@@ -117,6 +117,11 @@ export const ReactCount = createElement(ElementName.ReactCount);
117
117
  * Creates a ReadTime Text element using the data from readTime in the Flexible UI Context
118
118
  */
119
119
  export const ReadTime = createElement(ElementName.ReadTime);
120
+ /**
121
+ * Creates a SentOn DateTime element using the data from SentOn in the Flexible UI Context.
122
+ * @see DateTime
123
+ */
124
+ export const SentOn = createElement(ElementName.SentOn);
120
125
  /**
121
126
  * Creates a Snippet element using the data from Snippet in the Flexible UI Context.
122
127
  * @see Text
@@ -113,6 +113,9 @@ const elementMappings = {
113
113
  [ElementName.ReadTime]: {
114
114
  component: Text
115
115
  },
116
+ [ElementName.SentOn]: {
117
+ component: DateTime
118
+ },
116
119
  [ElementName.Snippet]: {
117
120
  component: Text,
118
121
  props: {
@@ -199,6 +202,8 @@ const getData = (elementName, contextKey, context) => {
199
202
  return toFormattedTextProps(messages.modified_by, context.modifiedBy);
200
203
  case ElementName.ModifiedOn:
201
204
  return toDateTimeProps('modified', context.modifiedOn);
205
+ case ElementName.SentOn:
206
+ return toDateTimeProps('sent', context.sentOn);
202
207
  case ElementName.ReadTime:
203
208
  return toFormattedTextProps(messages.read_time, data);
204
209
  case ElementName.Snippet:
@@ -0,0 +1,43 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React, { useCallback, useState, useRef } from 'react';
3
+ import extractPreview from '../../../extractors/flexible/extract-preview';
4
+ import { PreviewBlock } from '../../FlexibleCard/components/blocks';
5
+ import { getTransitionStyles, getPreviewBlockStyles } from '../styled';
6
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
7
+ const ImagePreview = ({
8
+ data,
9
+ fallbackElementHeight
10
+ }) => {
11
+ const transitionStarted = useRef(false);
12
+ const previewBlockRef = useRef(null);
13
+ const [showPreview, setShowPreview] = useState(true);
14
+ const [previewCss, setPreviewCss] = useState();
15
+
16
+ // Set Preview to a fixed height to enable transitions
17
+ const onPreviewRender = useCallback(() => {
18
+ var _previewBlockRef$curr;
19
+ previewBlockRef.current && setPreviewCss(getPreviewBlockStyles((_previewBlockRef$curr = previewBlockRef.current) === null || _previewBlockRef$curr === void 0 ? void 0 : _previewBlockRef$curr.getBoundingClientRect().height));
20
+ }, []);
21
+
22
+ // On error set Preview to Fallback height with transition
23
+ const onPreviewError = useCallback(() => {
24
+ if (transitionStarted.current === false) {
25
+ setPreviewCss(getTransitionStyles(fallbackElementHeight));
26
+ transitionStarted.current = true;
27
+ }
28
+ }, [fallbackElementHeight]);
29
+ const onPreviewTransitionEnd = useCallback(() => {
30
+ setShowPreview(false);
31
+ }, []);
32
+ return showPreview && data && extractPreview(data) ? /*#__PURE__*/React.createElement(PreviewBlock, _extends({
33
+ onError: onPreviewError
34
+ }, getBooleanFF('platform.linking-platform.smart-card.enable-better-metadata_iojwg') && {
35
+ ignoreContainerPadding: true
36
+ }, {
37
+ overrideCss: previewCss,
38
+ onTransitionEnd: onPreviewTransitionEnd,
39
+ blockRef: previewBlockRef,
40
+ onRender: onPreviewRender
41
+ })) : null;
42
+ };
43
+ export default ImagePreview;
@@ -5,7 +5,7 @@ import { FooterBlock, MetadataBlock, SnippetBlock, TitleBlock } from '../../../.
5
5
  import { footerBlockCss, hiddenSnippetStyles, metadataBlockCss } from './styled';
6
6
  import FlexibleCard from '../../../../FlexibleCard';
7
7
  import { getSimulatedMetadata, getSimulatedBetterMetadata } from '../../../utils';
8
- import SnippetOrPreview from '../../SnippetOrPreview';
8
+ import ImagePreview from '../../ImagePreview';
9
9
  import { extractMetadata, elementNamesToItems } from '../../../../../extractors/hover/extractMetadata';
10
10
  import { messages } from '../../../../../messages';
11
11
  import { FormattedMessage } from 'react-intl-next';
@@ -87,11 +87,11 @@ const HoverCardResolvedView = ({
87
87
  var _snippetBlockRef$curr, _snippetBlockRef$curr2;
88
88
  snippetHeight.current = (_snippetBlockRef$curr = (_snippetBlockRef$curr2 = snippetBlockRef.current) === null || _snippetBlockRef$curr2 === void 0 ? void 0 : _snippetBlockRef$curr2.getBoundingClientRect().height) !== null && _snippetBlockRef$curr !== void 0 ? _snippetBlockRef$curr : 0;
89
89
  }, []);
90
- const body = SnippetOrPreview({
90
+ const imagePreview = ImagePreview({
91
91
  data: data,
92
- snippetHeight: snippetHeight.current
92
+ fallbackElementHeight: snippetHeight.current
93
93
  });
94
- return /*#__PURE__*/React.createElement(FlexibleCard, flexibleCardProps, /*#__PURE__*/React.createElement(TitleBlock, _extends({}, titleBlockProps, {
94
+ return /*#__PURE__*/React.createElement(FlexibleCard, flexibleCardProps, getBooleanFF('platform.linking-platform.smart-card.enable-better-metadata_iojwg') && imagePreview, /*#__PURE__*/React.createElement(TitleBlock, _extends({}, titleBlockProps, {
95
95
  metadataPosition: SmartLinkPosition.Top
96
96
  })), /*#__PURE__*/React.createElement(MetadataBlock, _extends({
97
97
  primary: topPrimary,
@@ -101,7 +101,7 @@ const HoverCardResolvedView = ({
101
101
  size: SmartLinkSize.Large
102
102
  }, getBooleanFF('platform.linking-platform.smart-card.enable-better-metadata_iojwg') && {
103
103
  size: SmartLinkSize.Medium
104
- })), body, /*#__PURE__*/React.createElement(SnippetBlock, {
104
+ })), !imagePreview && /*#__PURE__*/React.createElement(SnippetBlock, null), !getBooleanFF('platform.linking-platform.smart-card.enable-better-metadata_iojwg') && imagePreview, /*#__PURE__*/React.createElement(SnippetBlock, {
105
105
  testId: 'hidden-snippet',
106
106
  onRender: onSnippetRender,
107
107
  blockRef: snippetBlockRef,
@@ -1,7 +1,9 @@
1
1
  import { css } from '@emotion/react';
2
+ import { getBooleanFF } from '@atlaskit/platform-feature-flags';
2
3
  export const loadingViewContainer = css`
3
4
  display: flex;
4
5
  flex-direction: column;
6
+ ${getBooleanFF('platform.linking-platform.smart-card.enable-better-metadata_iojwg') ? `padding: 1rem;` : ``}
5
7
  `;
6
8
  export const skeletonContainer = css`
7
9
  display: flex;
@@ -11,11 +11,11 @@ export const flexibleUiOptions = {
11
11
  hideBackground: true,
12
12
  hideElevation: true,
13
13
  size: SmartLinkSize.Medium,
14
- hidePadding: true,
15
14
  hideHoverCardPreviewButton: false,
16
15
  zIndex: HOVER_CARD_Z_INDEX + 1,
17
16
  ...(!getBooleanFF('platform.linking-platform.smart-card.enable-better-metadata_iojwg') && {
18
- theme: SmartLinkTheme.Black
17
+ theme: SmartLinkTheme.Black,
18
+ hidePadding: true
19
19
  })
20
20
  };
21
21
  export const CARD_WIDTH_REM = 24;
@@ -37,7 +37,7 @@ export const HoverCardContainer = css`
37
37
  border-width: 0;
38
38
  box-sizing: border-box;
39
39
  width: ${CARD_WIDTH_REM}rem;
40
- padding: 1rem;
40
+ ${!getBooleanFF('platform.linking-platform.smart-card.enable-better-metadata_iojwg') ? `padding: 1rem;` : ``}
41
41
 
42
42
  .${loadingPlaceholderClassName} {
43
43
  display: none;
@@ -79,4 +79,11 @@ export const popupContainerStyles = css`
79
79
  light: "var(--ds-shadow-overlay, 0px 8px 12px rgba(9, 30, 66, 0.15),0px 0px 1px rgba(9, 30, 66, 0.31))",
80
80
  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))"
81
81
  })()};
82
+ `;
83
+ export const getPreviewBlockStyles = snippetHeight => css`
84
+ height: ${snippetHeight}px;
85
+ ${getBooleanFF('platform.linking-platform.smart-card.show-smart-links-refreshed-design') ? ` border-top-left-radius: ${"var(--ds-border-radius-300, 12px)"};
86
+ border-top-right-radius: ${"var(--ds-border-radius-300, 12px)"};
87
+ margin-bottom: ${blockGap};
88
+ }` : ``}
82
89
  `;