@atlaskit/smart-card 19.1.29 → 19.2.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 (203) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/constants.js +4 -1
  3. package/dist/cjs/extractors/block/index.js +9 -19
  4. package/dist/cjs/extractors/common/actions/extractPreviewAction.js +3 -5
  5. package/dist/cjs/extractors/common/byline/extractByline.js +5 -11
  6. package/dist/cjs/extractors/common/context/index.js +0 -16
  7. package/dist/cjs/extractors/common/icon/extractIcon.js +11 -8
  8. package/dist/cjs/extractors/common/icon/priority.js +1 -0
  9. package/dist/cjs/extractors/common/lozenge/extractLozenge.js +9 -3
  10. package/dist/cjs/extractors/common/lozenge/extractState.js +2 -2
  11. package/dist/cjs/extractors/common/lozenge/extractTaskType.js +2 -2
  12. package/dist/cjs/extractors/common/primitives/index.js +0 -16
  13. package/dist/cjs/extractors/embed/index.js +5 -9
  14. package/dist/cjs/extractors/flexible/collaboratorGroup/index.js +2 -2
  15. package/dist/cjs/extractors/flexible/extract-preview.js +2 -2
  16. package/dist/cjs/extractors/flexible/extract-priority.js +2 -2
  17. package/dist/cjs/extractors/flexible/icon/extract-jsonld-data-icon.js +8 -2
  18. package/dist/cjs/extractors/flexible/icon/extract-provider-icon.js +2 -2
  19. package/dist/cjs/extractors/flexible/icon/extract-url-icon.js +2 -2
  20. package/dist/cjs/extractors/flexible/index.js +11 -12
  21. package/dist/cjs/extractors/flexible/utils.js +33 -5
  22. package/dist/cjs/extractors/hover/extractMetadata.js +3 -2
  23. package/dist/cjs/extractors/inline/index.js +4 -4
  24. package/dist/cjs/version.json +1 -1
  25. package/dist/cjs/view/FlexibleCard/components/blocks/block/index.js +1 -1
  26. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +1 -1
  27. package/dist/cjs/view/FlexibleCard/components/elements/avatar-group/index.js +2 -0
  28. package/dist/cjs/view/FlexibleCard/components/elements/badge/index.js +2 -0
  29. package/dist/cjs/view/FlexibleCard/components/elements/date-time/index.js +2 -0
  30. package/dist/cjs/view/FlexibleCard/components/elements/icon/index.js +2 -0
  31. package/dist/cjs/view/FlexibleCard/components/elements/index.js +25 -4
  32. package/dist/cjs/view/FlexibleCard/components/elements/link/index.js +2 -0
  33. package/dist/cjs/view/FlexibleCard/components/elements/lozenge/index.js +2 -0
  34. package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +3 -1
  35. package/dist/cjs/view/FlexibleCard/components/elements/text/index.js +2 -0
  36. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +42 -12
  37. package/dist/cjs/view/FlexibleCard/utils.js +3 -1
  38. package/dist/cjs/view/HoverCard/components/hover-card-content.js +12 -5
  39. package/dist/cjs/view/HoverCard/styled.js +8 -5
  40. package/dist/cjs/view/HoverCard/utils.js +46 -3
  41. package/dist/cjs/view/InlineCard/index.js +5 -3
  42. package/dist/es2019/constants.js +4 -1
  43. package/dist/es2019/extractors/block/index.js +2 -7
  44. package/dist/es2019/extractors/common/actions/extractPreviewAction.js +1 -2
  45. package/dist/es2019/extractors/common/byline/extractByline.js +1 -4
  46. package/dist/es2019/extractors/common/context/index.js +0 -2
  47. package/dist/es2019/extractors/common/icon/extractIcon.js +7 -3
  48. package/dist/es2019/extractors/common/icon/priority.js +1 -0
  49. package/dist/es2019/extractors/common/lozenge/extractLozenge.js +5 -1
  50. package/dist/es2019/extractors/common/lozenge/extractState.js +2 -2
  51. package/dist/es2019/extractors/common/lozenge/extractTaskType.js +1 -1
  52. package/dist/es2019/extractors/common/primitives/index.js +0 -2
  53. package/dist/es2019/extractors/embed/index.js +1 -3
  54. package/dist/es2019/extractors/flexible/collaboratorGroup/index.js +1 -1
  55. package/dist/es2019/extractors/flexible/extract-preview.js +1 -1
  56. package/dist/es2019/extractors/flexible/extract-priority.js +1 -1
  57. package/dist/es2019/extractors/flexible/icon/extract-jsonld-data-icon.js +7 -1
  58. package/dist/es2019/extractors/flexible/icon/extract-provider-icon.js +1 -1
  59. package/dist/es2019/extractors/flexible/icon/extract-url-icon.js +1 -1
  60. package/dist/es2019/extractors/flexible/index.js +8 -7
  61. package/dist/es2019/extractors/flexible/utils.js +11 -2
  62. package/dist/es2019/extractors/hover/extractMetadata.js +3 -2
  63. package/dist/es2019/extractors/inline/index.js +2 -2
  64. package/dist/es2019/version.json +1 -1
  65. package/dist/es2019/view/FlexibleCard/components/blocks/block/index.js +11 -1
  66. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +6 -3
  67. package/dist/es2019/view/FlexibleCard/components/elements/avatar-group/index.js +2 -0
  68. package/dist/es2019/view/FlexibleCard/components/elements/badge/index.js +2 -0
  69. package/dist/es2019/view/FlexibleCard/components/elements/date-time/index.js +2 -0
  70. package/dist/es2019/view/FlexibleCard/components/elements/icon/index.js +2 -0
  71. package/dist/es2019/view/FlexibleCard/components/elements/index.js +18 -0
  72. package/dist/es2019/view/FlexibleCard/components/elements/link/index.js +2 -0
  73. package/dist/es2019/view/FlexibleCard/components/elements/lozenge/index.js +2 -0
  74. package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +2 -0
  75. package/dist/es2019/view/FlexibleCard/components/elements/text/index.js +2 -0
  76. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +48 -16
  77. package/dist/es2019/view/FlexibleCard/utils.js +2 -1
  78. package/dist/es2019/view/HoverCard/components/hover-card-content.js +11 -5
  79. package/dist/es2019/view/HoverCard/styled.js +31 -5
  80. package/dist/es2019/view/HoverCard/utils.js +46 -4
  81. package/dist/es2019/view/InlineCard/index.js +2 -1
  82. package/dist/esm/constants.js +4 -1
  83. package/dist/esm/extractors/block/index.js +2 -7
  84. package/dist/esm/extractors/common/actions/extractPreviewAction.js +1 -2
  85. package/dist/esm/extractors/common/byline/extractByline.js +1 -4
  86. package/dist/esm/extractors/common/context/index.js +0 -2
  87. package/dist/esm/extractors/common/icon/extractIcon.js +7 -3
  88. package/dist/esm/extractors/common/icon/priority.js +1 -0
  89. package/dist/esm/extractors/common/lozenge/extractLozenge.js +8 -2
  90. package/dist/esm/extractors/common/lozenge/extractState.js +2 -2
  91. package/dist/esm/extractors/common/lozenge/extractTaskType.js +1 -1
  92. package/dist/esm/extractors/common/primitives/index.js +0 -2
  93. package/dist/esm/extractors/embed/index.js +1 -3
  94. package/dist/esm/extractors/flexible/collaboratorGroup/index.js +1 -1
  95. package/dist/esm/extractors/flexible/extract-preview.js +1 -1
  96. package/dist/esm/extractors/flexible/extract-priority.js +1 -1
  97. package/dist/esm/extractors/flexible/icon/extract-jsonld-data-icon.js +7 -1
  98. package/dist/esm/extractors/flexible/icon/extract-provider-icon.js +1 -1
  99. package/dist/esm/extractors/flexible/icon/extract-url-icon.js +1 -1
  100. package/dist/esm/extractors/flexible/index.js +8 -7
  101. package/dist/esm/extractors/flexible/utils.js +17 -1
  102. package/dist/esm/extractors/hover/extractMetadata.js +3 -2
  103. package/dist/esm/extractors/inline/index.js +2 -2
  104. package/dist/esm/version.json +1 -1
  105. package/dist/esm/view/FlexibleCard/components/blocks/block/index.js +2 -2
  106. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +1 -1
  107. package/dist/esm/view/FlexibleCard/components/elements/avatar-group/index.js +2 -0
  108. package/dist/esm/view/FlexibleCard/components/elements/badge/index.js +2 -0
  109. package/dist/esm/view/FlexibleCard/components/elements/date-time/index.js +2 -0
  110. package/dist/esm/view/FlexibleCard/components/elements/icon/index.js +2 -0
  111. package/dist/esm/view/FlexibleCard/components/elements/index.js +18 -0
  112. package/dist/esm/view/FlexibleCard/components/elements/link/index.js +2 -0
  113. package/dist/esm/view/FlexibleCard/components/elements/lozenge/index.js +2 -0
  114. package/dist/esm/view/FlexibleCard/components/elements/media/index.js +3 -1
  115. package/dist/esm/view/FlexibleCard/components/elements/text/index.js +2 -0
  116. package/dist/esm/view/FlexibleCard/components/elements/utils.js +41 -12
  117. package/dist/esm/view/FlexibleCard/utils.js +2 -1
  118. package/dist/esm/view/HoverCard/components/hover-card-content.js +11 -5
  119. package/dist/esm/view/HoverCard/styled.js +8 -5
  120. package/dist/esm/view/HoverCard/utils.js +46 -3
  121. package/dist/esm/view/InlineCard/index.js +2 -1
  122. package/dist/types/constants.d.ts +4 -1
  123. package/dist/types/extractors/block/index.d.ts +1 -1
  124. package/dist/types/extractors/common/__mocks__/jsonld.d.ts +1 -0
  125. package/dist/types/extractors/common/context/index.d.ts +0 -2
  126. package/dist/types/extractors/common/icon/extractIcon.d.ts +1 -1
  127. package/dist/types/extractors/common/lozenge/extractState.d.ts +1 -1
  128. package/dist/types/extractors/common/primitives/index.d.ts +0 -2
  129. package/dist/types/extractors/flexible/collaboratorGroup/index.d.ts +1 -1
  130. package/dist/types/extractors/flexible/utils.d.ts +3 -0
  131. package/dist/types/state/flexible-ui-context/types.d.ts +30 -11
  132. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +22 -1
  133. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +15 -0
  134. package/dist/types/view/FlexibleCard/components/elements/lozenge/types.d.ts +2 -1
  135. package/dist/types/view/FlexibleCard/components/elements/types.d.ts +7 -1
  136. package/dist/types/view/HoverCard/types.d.ts +1 -0
  137. package/dist/types/view/HoverCard/utils.d.ts +1 -1
  138. package/package.json +3 -3
  139. package/report.api.md +6 -0
  140. package/dist/cjs/extractors/common/context/extractContext.js +0 -38
  141. package/dist/cjs/extractors/common/context/extractProvider.js +0 -83
  142. package/dist/cjs/extractors/common/date/extractDateCreated.js +0 -14
  143. package/dist/cjs/extractors/common/date/extractDateUpdated.js +0 -14
  144. package/dist/cjs/extractors/common/person/extractMembers.js +0 -37
  145. package/dist/cjs/extractors/common/person/extractPersonAssignedTo.js +0 -18
  146. package/dist/cjs/extractors/common/person/extractPersonCreatedBy.js +0 -28
  147. package/dist/cjs/extractors/common/person/extractPersonUpdatedBy.js +0 -18
  148. package/dist/cjs/extractors/common/person/index.js +0 -37
  149. package/dist/cjs/extractors/common/person/types.js +0 -5
  150. package/dist/cjs/extractors/common/preview/extractImage.js +0 -26
  151. package/dist/cjs/extractors/common/preview/index.js +0 -21
  152. package/dist/cjs/extractors/common/primitives/extractLink.js +0 -22
  153. package/dist/cjs/extractors/common/primitives/extractTitle.js +0 -55
  154. package/dist/cjs/extractors/common/primitives/extractType.js +0 -20
  155. package/dist/cjs/extractors/common/utils.js +0 -43
  156. package/dist/es2019/extractors/common/context/extractContext.js +0 -27
  157. package/dist/es2019/extractors/common/context/extractProvider.js +0 -65
  158. package/dist/es2019/extractors/common/date/extractDateCreated.js +0 -5
  159. package/dist/es2019/extractors/common/date/extractDateUpdated.js +0 -5
  160. package/dist/es2019/extractors/common/person/extractMembers.js +0 -23
  161. package/dist/es2019/extractors/common/person/extractPersonAssignedTo.js +0 -8
  162. package/dist/es2019/extractors/common/person/extractPersonCreatedBy.js +0 -16
  163. package/dist/es2019/extractors/common/person/extractPersonUpdatedBy.js +0 -8
  164. package/dist/es2019/extractors/common/person/index.js +0 -4
  165. package/dist/es2019/extractors/common/person/types.js +0 -1
  166. package/dist/es2019/extractors/common/preview/extractImage.js +0 -16
  167. package/dist/es2019/extractors/common/preview/index.js +0 -2
  168. package/dist/es2019/extractors/common/primitives/extractLink.js +0 -12
  169. package/dist/es2019/extractors/common/primitives/extractTitle.js +0 -37
  170. package/dist/es2019/extractors/common/primitives/extractType.js +0 -11
  171. package/dist/es2019/extractors/common/utils.js +0 -30
  172. package/dist/esm/extractors/common/context/extractContext.js +0 -27
  173. package/dist/esm/extractors/common/context/extractProvider.js +0 -65
  174. package/dist/esm/extractors/common/date/extractDateCreated.js +0 -5
  175. package/dist/esm/extractors/common/date/extractDateUpdated.js +0 -5
  176. package/dist/esm/extractors/common/person/extractMembers.js +0 -27
  177. package/dist/esm/extractors/common/person/extractPersonAssignedTo.js +0 -8
  178. package/dist/esm/extractors/common/person/extractPersonCreatedBy.js +0 -18
  179. package/dist/esm/extractors/common/person/extractPersonUpdatedBy.js +0 -8
  180. package/dist/esm/extractors/common/person/index.js +0 -4
  181. package/dist/esm/extractors/common/person/types.js +0 -1
  182. package/dist/esm/extractors/common/preview/extractImage.js +0 -16
  183. package/dist/esm/extractors/common/preview/index.js +0 -2
  184. package/dist/esm/extractors/common/primitives/extractLink.js +0 -12
  185. package/dist/esm/extractors/common/primitives/extractTitle.js +0 -41
  186. package/dist/esm/extractors/common/primitives/extractType.js +0 -11
  187. package/dist/esm/extractors/common/utils.js +0 -30
  188. package/dist/types/extractors/common/context/extractContext.d.ts +0 -7
  189. package/dist/types/extractors/common/context/extractProvider.d.ts +0 -8
  190. package/dist/types/extractors/common/date/extractDateCreated.d.ts +0 -3
  191. package/dist/types/extractors/common/date/extractDateUpdated.d.ts +0 -2
  192. package/dist/types/extractors/common/person/extractMembers.d.ts +0 -3
  193. package/dist/types/extractors/common/person/extractPersonAssignedTo.d.ts +0 -4
  194. package/dist/types/extractors/common/person/extractPersonCreatedBy.d.ts +0 -3
  195. package/dist/types/extractors/common/person/extractPersonUpdatedBy.d.ts +0 -5
  196. package/dist/types/extractors/common/person/index.d.ts +0 -5
  197. package/dist/types/extractors/common/person/types.d.ts +0 -4
  198. package/dist/types/extractors/common/preview/extractImage.d.ts +0 -2
  199. package/dist/types/extractors/common/preview/index.d.ts +0 -3
  200. package/dist/types/extractors/common/primitives/extractLink.d.ts +0 -2
  201. package/dist/types/extractors/common/primitives/extractTitle.d.ts +0 -2
  202. package/dist/types/extractors/common/primitives/extractType.d.ts +0 -2
  203. package/dist/types/extractors/common/utils.d.ts +0 -4
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import React, { useContext } from 'react';
3
+ import { FormattedDate } from 'react-intl-next';
3
4
  import { css } from '@emotion/core';
4
5
  import { ElementName, IconType } from '../../../../constants';
5
6
  import Icon from './icon';
@@ -48,12 +49,27 @@ const elementMappings = {
48
49
  [ElementName.CreatedBy]: {
49
50
  component: Text
50
51
  },
52
+ [ElementName.CreatedOn]: {
53
+ component: DateTime
54
+ },
55
+ [ElementName.DueOn]: {
56
+ component: Lozenge
57
+ },
58
+ [ElementName.LatestCommit]: {
59
+ component: Badge,
60
+ props: {
61
+ icon: IconType.Commit
62
+ }
63
+ },
51
64
  [ElementName.LinkIcon]: {
52
65
  component: Icon
53
66
  },
54
67
  [ElementName.ModifiedBy]: {
55
68
  component: Text
56
69
  },
70
+ [ElementName.ModifiedOn]: {
71
+ component: DateTime
72
+ },
57
73
  [ElementName.Preview]: {
58
74
  component: Media
59
75
  },
@@ -66,6 +82,9 @@ const elementMappings = {
66
82
  icon: IconType.ProgrammingLanguage
67
83
  }
68
84
  },
85
+ [ElementName.Provider]: {
86
+ component: Badge
87
+ },
69
88
  [ElementName.Snippet]: {
70
89
  component: Text,
71
90
  props: {
@@ -75,6 +94,9 @@ const elementMappings = {
75
94
  `
76
95
  }
77
96
  },
97
+ [ElementName.SourceBranch]: {
98
+ component: Text
99
+ },
78
100
  [ElementName.State]: {
79
101
  component: Lozenge
80
102
  },
@@ -84,23 +106,11 @@ const elementMappings = {
84
106
  icon: IconType.Subscriber
85
107
  }
86
108
  },
109
+ [ElementName.TargetBranch]: {
110
+ component: Text
111
+ },
87
112
  [ElementName.Title]: {
88
113
  component: Link
89
- },
90
- [ElementName.CreatedOn]: {
91
- component: DateTime
92
- },
93
- [ElementName.ModifiedOn]: {
94
- component: DateTime
95
- },
96
- [ElementName.Provider]: {
97
- component: Badge
98
- },
99
- [ElementName.LatestCommit]: {
100
- component: Badge,
101
- props: {
102
- icon: IconType.Commit
103
- }
104
114
  }
105
115
  };
106
116
 
@@ -137,6 +147,9 @@ const getData = (elementName, contextKey, context) => {
137
147
  case ElementName.CreatedOn:
138
148
  return toDateTimeProps('created', context.createdOn);
139
149
 
150
+ case ElementName.DueOn:
151
+ return toDateLozengeProps(context.dueOn);
152
+
140
153
  case ElementName.ModifiedBy:
141
154
  return toFormattedTextProps(messages.modified_by, context.modifiedBy);
142
155
 
@@ -144,6 +157,8 @@ const getData = (elementName, contextKey, context) => {
144
157
  return toDateTimeProps('modified', context.modifiedOn);
145
158
 
146
159
  case ElementName.Snippet:
160
+ case ElementName.SourceBranch:
161
+ case ElementName.TargetBranch:
147
162
  return toTextProps(data);
148
163
 
149
164
  case ElementName.Title:
@@ -166,6 +181,21 @@ const toBadgeProps = label => {
166
181
  } : undefined;
167
182
  };
168
183
 
184
+ const toDateLozengeProps = dateString => {
185
+ if (dateString) {
186
+ const text = Date.parse(dateString) ? /*#__PURE__*/React.createElement(FormattedDate, {
187
+ value: new Date(dateString),
188
+ year: "numeric",
189
+ month: "short",
190
+ day: "numeric",
191
+ formatMatcher: "best fit"
192
+ }) : dateString;
193
+ return {
194
+ text
195
+ };
196
+ }
197
+ };
198
+
169
199
  const toDateTimeProps = (type, dateString) => {
170
200
  return dateString ? {
171
201
  date: new Date(dateString),
@@ -211,6 +241,8 @@ export const createElement = name => {
211
241
  return overrides => {
212
242
  const context = useContext(FlexibleUiContext);
213
243
  const data = getData(name, contextKey, context);
214
- return data ? /*#__PURE__*/React.createElement(BaseElement, _extends({}, props, data, overrides)) : null;
244
+ return data ? /*#__PURE__*/React.createElement(BaseElement, _extends({}, props, data, overrides, {
245
+ name: name
246
+ })) : null;
215
247
  };
216
248
  };
@@ -1,10 +1,11 @@
1
1
  import { SmartLinkStatus } from '../../constants';
2
2
  import { getEmptyJsonLd, getUnauthorizedJsonLd } from '../../utils/jsonld';
3
- import { extractProvider, extractRequestAccessContext } from '../../extractors/common/context';
3
+ import { extractRequestAccessContext } from '../../extractors/common/context';
4
4
  import { messages } from '../../messages';
5
5
  import extractFlexibleLinkContext from '../../extractors/flexible';
6
6
  import { extractErrorIcon } from '../../extractors/flexible/icon';
7
7
  import { handleOnClick } from '../../utils';
8
+ import { extractProvider } from '@atlaskit/linking-common/extractors';
8
9
  export const getContextByStatus = (url, status, details, renderers) => {
9
10
  switch (status) {
10
11
  case SmartLinkStatus.Pending:
@@ -9,6 +9,7 @@ import { isSpecialEvent } from '../../../utils';
9
9
  import ShortcutIcon from '@atlaskit/icon/glyph/shortcut';
10
10
  import { getExtensionKey } from '../../../state/helpers';
11
11
  import { titleBlockCss, metadataBlockCss, footerBlockCss } from '../styled';
12
+ import { extractType } from '@atlaskit/linking-common/extractors';
12
13
  const flexibleUiOptions = {
13
14
  hideElevation: true,
14
15
  size: SmartLinkSize.Medium,
@@ -59,13 +60,16 @@ const HoverCardContent = ({
59
60
  analytics.ui.cardClickedEvent(undefined, HOVER_CARD_ANALYTICS_DISPLAY, cardState.status, undefined, undefined, isModifierKeyPressed, undefined, undefined, undefined, 'titleGoToLink');
60
61
  }, [cardState.status, analytics.ui]);
61
62
  const titleActions = useMemo(() => [getOpenAction(url, analytics)], [url, analytics]);
62
- const footerActions = useMemo(() => toFooterActions(cardActions), [cardActions]); //TODO: EDM-3224 deleted simulated and use real JsonLd
63
+ const footerActions = useMemo(() => toFooterActions(cardActions), [cardActions]);
64
+ const data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
65
+ const types = data ? extractType(data) : undefined; //TODO: EDM-3224 deleted simulated and use real JsonLd
63
66
 
64
67
  const {
65
68
  primary,
66
- secondary
67
- } = extractMetadata(getSimulatedMetadata(extensionKey));
68
- const data = (_cardState$details = cardState.details) === null || _cardState$details === void 0 ? void 0 : _cardState$details.data;
69
+ secondary,
70
+ subtitle
71
+ } = extractMetadata(getSimulatedMetadata(extensionKey, types));
72
+ const titleMaxLines = subtitle && subtitle.length > 0 ? 1 : 2;
69
73
  const body = data && extractPreview(data) ? /*#__PURE__*/React.createElement(PreviewBlock, null) : /*#__PURE__*/React.createElement(SnippetBlock, null);
70
74
  return /*#__PURE__*/React.createElement(FlexibleCard, {
71
75
  cardState: cardState,
@@ -76,9 +80,11 @@ const HoverCardContent = ({
76
80
  url: url
77
81
  }, /*#__PURE__*/React.createElement(TitleBlock, {
78
82
  actions: titleActions,
83
+ maxLines: titleMaxLines,
79
84
  overrideCss: titleBlockCss,
80
85
  size: SmartLinkSize.Large,
81
- position: SmartLinkPosition.Center
86
+ position: SmartLinkPosition.Center,
87
+ subtitle: subtitle
82
88
  }), /*#__PURE__*/React.createElement(MetadataBlock, {
83
89
  primary: primary,
84
90
  secondary: secondary,
@@ -1,5 +1,12 @@
1
1
  import { css } from '@emotion/core';
2
2
  import { loadingPlaceholderClassName } from '../../index';
3
+ const blockGap = '0.5rem';
4
+ const elementGap = '0.5rem';
5
+ const separatorCss = css`
6
+ [data-separator] + [data-separator]:before {
7
+ margin-right: ${elementGap};
8
+ }
9
+ `;
3
10
  export const HoverCardContainer = css`
4
11
  background: none;
5
12
  border-width: 0;
@@ -12,25 +19,44 @@ export const HoverCardContainer = css`
12
19
  }
13
20
  `;
14
21
  export const titleBlockCss = css`
15
- gap: 0.5rem;
22
+ gap: ${blockGap};
23
+
24
+ ${separatorCss}
25
+
26
+ // title and subtitle element group
27
+ [data-smart-element-group] {
28
+ // gap between title and subtitle
29
+ gap: 0.06rem;
30
+
31
+ /* subtitle element group */
32
+ > [data-smart-element-group] {
33
+ > span {
34
+ margin-right: ${elementGap};
35
+ }
36
+ }
37
+ }
16
38
  `;
17
39
  export const metadataBlockCss = css`
18
40
  gap: 0px;
19
41
 
20
42
  /* primary element group */
21
- [data-smart-element-group]:first-of-type {
43
+ [data-smart-element-group]:nth-of-type(1) {
22
44
  flex-grow: 7;
45
+
46
+ // a separator between text-based element
47
+ ${separatorCss}
48
+
23
49
  /* horizontal spacing between elements in group */
24
50
  > span {
25
- margin-right: 0.5rem;
51
+ margin-right: ${elementGap};
26
52
  }
27
53
  }
28
54
  /* secondary element group */
29
- [data-smart-element-group]:last-of-type {
55
+ [data-smart-element-group]:nth-of-type(2) {
30
56
  flex-grow: 3;
31
57
  /* horizontal spacing between elements in group */
32
58
  > span {
33
- margin-left: 0.5rem;
59
+ margin-left: ${elementGap};
34
60
  }
35
61
  }
36
62
  `;
@@ -1,12 +1,33 @@
1
1
  import { ElementName } from '../../constants';
2
2
  export const HOVER_CARD_ANALYTICS_DISPLAY = 'flexible';
3
- export const getSimulatedMetadata = (extensionKey = '') => {
3
+ export const getSimulatedMetadata = (extensionKey = '', types = []) => {
4
4
  switch (extensionKey) {
5
+ case 'bitbucket-object-provider':
6
+ case 'native-bitbucket-object-provider':
7
+ if (types.includes('atlassian:SourceCodePullRequest')) {
8
+ return {
9
+ metadata: {
10
+ primary: [ElementName.AuthorGroup, ElementName.ModifiedOn, ElementName.SubscriberCount, ElementName.State],
11
+ secondary: [],
12
+ subtitle: [ElementName.SourceBranch, ElementName.TargetBranch]
13
+ }
14
+ };
15
+ }
16
+
17
+ return {
18
+ metadata: {
19
+ primary: [ElementName.ModifiedOn, ElementName.CreatedBy],
20
+ secondary: [],
21
+ subtitle: []
22
+ }
23
+ };
24
+
5
25
  case 'confluence-object-provider':
6
26
  return {
7
27
  metadata: {
8
28
  primary: [ElementName.AuthorGroup, ElementName.CreatedBy],
9
- secondary: [ElementName.CommentCount, ElementName.ReactCount]
29
+ secondary: [ElementName.CommentCount, ElementName.ReactCount],
30
+ subtitle: []
10
31
  }
11
32
  };
12
33
 
@@ -14,7 +35,27 @@ export const getSimulatedMetadata = (extensionKey = '') => {
14
35
  return {
15
36
  metadata: {
16
37
  primary: [ElementName.AuthorGroup, ElementName.State, ElementName.Priority],
17
- secondary: []
38
+ secondary: [],
39
+ subtitle: []
40
+ }
41
+ };
42
+
43
+ case 'watermelon-object-provider':
44
+ if (types.includes('atlassian:Project')) {
45
+ return {
46
+ metadata: {
47
+ primary: [ElementName.AuthorGroup, ElementName.ModifiedOn, ElementName.State, ElementName.DueOn],
48
+ secondary: [],
49
+ subtitle: []
50
+ }
51
+ };
52
+ }
53
+
54
+ return {
55
+ metadata: {
56
+ primary: [ElementName.AuthorGroup, ElementName.State, ElementName.DueOn],
57
+ secondary: [],
58
+ subtitle: []
18
59
  }
19
60
  };
20
61
 
@@ -22,7 +63,8 @@ export const getSimulatedMetadata = (extensionKey = '') => {
22
63
  return {
23
64
  metadata: {
24
65
  primary: [ElementName.ModifiedOn, ElementName.CreatedBy],
25
- secondary: []
66
+ secondary: [],
67
+ subtitle: []
26
68
  }
27
69
  };
28
70
  }
@@ -2,13 +2,14 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import React from 'react';
3
3
  import { getEmptyJsonLd, getUnauthorizedJsonLd } from '../../utils/jsonld';
4
4
  import { extractInlineProps } from '../../extractors/inline';
5
- import { extractProvider, extractRequestAccessContext } from '../../extractors/common/context';
5
+ import { extractRequestAccessContext } from '../../extractors/common/context';
6
6
  import { CardLinkView } from '../LinkView';
7
7
  import { InlineCardErroredView } from './ErroredView';
8
8
  import { InlineCardForbiddenView } from './ForbiddenView';
9
9
  import { InlineCardResolvedView } from './ResolvedView';
10
10
  import { InlineCardResolvingView } from './ResolvingView';
11
11
  import { InlineCardUnauthorizedView } from './UnauthorisedView';
12
+ import { extractProvider } from '@atlaskit/linking-common/extractors';
12
13
  export { InlineCardResolvedView, InlineCardResolvingView, InlineCardErroredView, InlineCardForbiddenView, InlineCardUnauthorizedView };
13
14
  export const InlineCard = ({
14
15
  id,
@@ -83,7 +83,7 @@ export var SmartLinkWidth;
83
83
  * When adding an element...
84
84
  * 1) Create base element if it doesn't already exist.
85
85
  * Base element are inside src/view/FlexibleCard/components/elements.
86
- * E.g. Badge,DateTime, Icon, Lozenge, etc.
86
+ * E.g. Badge, DateTime, Icon, Lozenge, etc.
87
87
  * 2) Update FlexibleUiContext with the new prop for data representing
88
88
  * the element, preferably with the same name as the element itself.
89
89
  * (src/state/flexible-ui-context/types.ts)
@@ -111,6 +111,7 @@ export var ElementName;
111
111
  ElementName["CommentCount"] = "CommentCount";
112
112
  ElementName["CreatedBy"] = "CreatedBy";
113
113
  ElementName["CreatedOn"] = "CreatedOn";
114
+ ElementName["DueOn"] = "DueOn";
114
115
  ElementName["LinkIcon"] = "LinkIcon";
115
116
  ElementName["ModifiedBy"] = "ModifiedBy";
116
117
  ElementName["ModifiedOn"] = "ModifiedOn";
@@ -120,8 +121,10 @@ export var ElementName;
120
121
  ElementName["Provider"] = "Provider";
121
122
  ElementName["ReactCount"] = "ReactCount";
122
123
  ElementName["Snippet"] = "Snippet";
124
+ ElementName["SourceBranch"] = "SourceBranch";
123
125
  ElementName["State"] = "State";
124
126
  ElementName["SubscriberCount"] = "SubscriberCount";
127
+ ElementName["TargetBranch"] = "TargetBranch";
125
128
  ElementName["Title"] = "Title";
126
129
  ElementName["ViewCount"] = "ViewCount";
127
130
  ElementName["VoteCount"] = "VoteCount";
@@ -4,18 +4,13 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
4
4
 
5
5
  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) { _defineProperty(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; }
6
6
 
7
- import { extractLink, extractTitle, extractTitleTextColor, extractSummary } from '../common/primitives';
7
+ import { extractTitleTextColor, extractSummary } from '../common/primitives';
8
8
  import { extractLozenge } from '../common/lozenge';
9
9
  import { extractIcon } from '../common/icon';
10
- import { extractProvider } from '../common/context/extractProvider';
11
10
  import { extractCommentCount, extractProgrammingLanguage, extractSubscriberCount } from '../common/detail';
12
- import { extractMembers } from '../common/person/extractMembers';
13
- import { extractPersonAssignedTo } from '../common/person/extractPersonAssignedTo';
14
- import { extractPersonCreatedBy } from '../common/person/extractPersonCreatedBy';
15
- import { extractPersonUpdatedBy } from '../common/person/extractPersonUpdatedBy';
11
+ import { extractLink, extractTitle, extractProvider, extractMembers, extractPersonAssignedTo, extractPersonCreatedBy, extractPersonUpdatedBy, extractImage } from '@atlaskit/linking-common/extractors';
16
12
  import { extractByline } from '../common/byline/extractByline';
17
13
  import { extractTitlePrefix } from '../common/title-prefix/extractTitlePrefix';
18
- import { extractImage } from '../common/preview/extractImage';
19
14
  import { extractActions } from '../common/actions/extractActions';
20
15
  import { extractPreviewAction } from '../common/actions/extractPreviewAction';
21
16
  import { extractIsTrusted } from '../common/meta/extractIsTrusted';
@@ -6,8 +6,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
6
6
 
7
7
  import { uiRenderSuccessEvent, uiRenderFailedEvent } from '../../../utils/analytics';
8
8
  import { extractDownloadUrl } from '../detail';
9
- import { extractProvider } from '../context';
10
- import { extractPreview } from '../preview';
9
+ import { extractProvider, extractPreview } from '@atlaskit/linking-common/extractors';
11
10
  import { PreviewAction } from '../../../view/BlockCard';
12
11
 
13
12
  var getMetadataFromJsonLd = function getMetadataFromJsonLd(jsonLd, platform) {
@@ -1,10 +1,7 @@
1
1
  import React from 'react';
2
2
  import { FormattedRelativeTime } from 'react-intl-next';
3
3
  import { selectUnit } from '@formatjs/intl-utils';
4
- import { extractPersonUpdatedBy } from '../person/extractPersonUpdatedBy';
5
- import { extractPersonCreatedBy } from '../person/extractPersonCreatedBy';
6
- import { extractDateCreated } from '../date/extractDateCreated';
7
- import { extractDateUpdated } from '../date/extractDateUpdated';
4
+ import { extractDateCreated, extractDateUpdated, extractPersonCreatedBy, extractPersonUpdatedBy } from '@atlaskit/linking-common/extractors';
8
5
  export var extractByline = function extractByline(jsonLd) {
9
6
  var updatedAt = extractDateUpdated(jsonLd);
10
7
  var createdAt = extractDateCreated(jsonLd);
@@ -1,3 +1 @@
1
- export { extractContext } from './extractContext';
2
- export { extractProvider } from './extractProvider';
3
1
  export { extractRequestAccessContext } from './extractAccessContext';
@@ -4,14 +4,13 @@ import CommitIcon from '@atlaskit/icon-object/glyph/commit/16';
4
4
  import PullRequestIcon from '@atlaskit/icon-object/glyph/pull-request/16';
5
5
  import BranchIcon from '@atlaskit/icon-object/glyph/branch/16';
6
6
  import RepoIcon from '@atlaskit/icon-object/glyph/code/16';
7
+ import TaskIcon from '@atlaskit/icon-object/glyph/task/16';
7
8
  import { extractorPriorityMap } from './priority';
8
- import { extractProvider } from '../context/extractProvider';
9
- import { extractTitle } from '../primitives/extractTitle';
9
+ import { extractProvider, extractUrlFromIconJsonLd, extractTitle } from '@atlaskit/linking-common/extractors';
10
10
  import { extractFileFormat } from './extractFileFormat';
11
11
  import { extractIconFromDocument } from './extractIconFromDocument';
12
12
  import { extractIconFromTask } from './extractIconFromTask';
13
13
  import { extractTaskType } from '../lozenge/extractTaskType';
14
- import { extractUrlFromIconJsonLd } from '../utils';
15
14
  export var extractIcon = function extractIcon(jsonLd) {
16
15
  var priority = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'type';
17
16
  var type = jsonLd['@type'];
@@ -46,6 +45,11 @@ var extractIconByType = function extractIconByType(type, opts) {
46
45
  case 'atlassian:UndefinedLink':
47
46
  return extractIconFromDocument(type, opts);
48
47
 
48
+ case 'atlassian:Goal':
49
+ return opts.icon || /*#__PURE__*/React.createElement(TaskIcon, {
50
+ label: opts.title || 'goal'
51
+ });
52
+
49
53
  case 'atlassian:Project':
50
54
  return opts.icon || /*#__PURE__*/React.createElement(ProjectIcon, {
51
55
  label: opts.title || 'project',
@@ -6,6 +6,7 @@ export var extractorPriorityMap = {
6
6
  'schema:BlogPosting': 10,
7
7
  'schema:SpreadsheetDigitalDocument': 10,
8
8
  'schema:PresentationDigitalDocument': 10,
9
+ 'atlassian:Goal': 10,
9
10
  'atlassian:Task': 10,
10
11
  'atlassian:Project': 10,
11
12
  'atlassian:Template': 10,
@@ -1,7 +1,7 @@
1
1
  import { extractState } from './extractState';
2
2
  import { extractTag } from './extractTag';
3
3
  import { extractTaskStatus } from './extractTaskStatus';
4
- import { extractType } from '../primitives/extractType';
4
+ import { extractType } from '@atlaskit/linking-common/extractors';
5
5
  import { extractTaskType } from './extractTaskType';
6
6
  var DOC_TYPES = ['schema:BlogPosting', 'schema:TextDigitalDocument', 'schema:DigitalDocument', 'schema:PresentationDigitalDocument', 'schema:SpreadsheetDigitalDocument'];
7
7
  export var extractLozenge = function extractLozenge(jsonLd) {
@@ -22,12 +22,18 @@ export var extractLozenge = function extractLozenge(jsonLd) {
22
22
  var jsonLdDocument = jsonLd;
23
23
  var lozengeFromState = extractState(jsonLdDocument);
24
24
  return lozengeFromState;
25
- } else if (type.includes('atlassian:Project')) {
25
+ } else if (type.includes('atlassian:Goal')) {
26
26
  var jsonLdProject = jsonLd;
27
27
 
28
28
  var _lozengeFromState = extractState(jsonLdProject);
29
29
 
30
30
  return _lozengeFromState;
31
+ } else if (type.includes('atlassian:Project')) {
32
+ var _jsonLdProject = jsonLd;
33
+
34
+ var _lozengeFromState2 = extractState(_jsonLdProject);
35
+
36
+ return _lozengeFromState2;
31
37
  } else if (type.includes('atlassian:UndefinedLink')) {
32
38
  return {
33
39
  text: 'UNDEFINED',
@@ -16,14 +16,14 @@ export var extractState = function extractState(jsonLd) {
16
16
  if (state.name) {
17
17
  return {
18
18
  text: state.name,
19
- appearance: 'default'
19
+ appearance: state.appearance || 'default'
20
20
  };
21
21
  }
22
22
  } else if (state['@type'] === 'Object') {
23
23
  if (state.name) {
24
24
  return {
25
25
  text: state.name,
26
- appearance: 'default'
26
+ appearance: state.appearance || 'default'
27
27
  };
28
28
  }
29
29
  }
@@ -1,4 +1,4 @@
1
- import { extractUrlFromIconJsonLd } from '../utils';
1
+ import { extractUrlFromIconJsonLd } from '@atlaskit/linking-common/extractors';
2
2
  export var extractTaskType = function extractTaskType(jsonLd) {
3
3
  // TODO: Remove once Jira migrate to the correct type.
4
4
  var taskType = jsonLd['atlassian:taskType'] || jsonLd.taskType;
@@ -1,4 +1,2 @@
1
- export { extractLink } from './extractLink';
2
1
  export { extractSummary } from './extractSummary';
3
- export { extractTitle } from './extractTitle';
4
2
  export { extractTitleTextColor } from './extractTitleTextColor';
@@ -4,9 +4,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
4
4
 
5
5
  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) { _defineProperty(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; }
6
6
 
7
- import { extractLink, extractTitle } from '../common/primitives';
8
- import { extractProvider } from '../common/context';
9
- import { extractPreview } from '@atlaskit/linking-common';
7
+ import { extractLink, extractTitle, extractProvider, extractPreview } from '@atlaskit/linking-common/extractors';
10
8
  import { extractIsTrusted } from '../common/meta/extractIsTrusted';
11
9
 
12
10
  var extractEmbedPreview = function extractEmbedPreview(jsonLd, platform) {
@@ -1,4 +1,4 @@
1
- import { extractPersonFromJsonLd } from '../../common/utils';
1
+ import { extractPersonFromJsonLd } from '@atlaskit/linking-common/extractors';
2
2
  // Temporary Extractor until https://product-fabric.atlassian.net/browse/EDM-2652 is ready
3
3
  export var extractPersonsUpdatedBy = function extractPersonsUpdatedBy(jsonLd) {
4
4
  var updatedBy = jsonLd['atlassian:updatedBy'];
@@ -1,4 +1,4 @@
1
- import { extractImage } from '../common/preview';
1
+ import { extractImage } from '@atlaskit/linking-common/extractors';
2
2
  import { MediaType } from '../../constants';
3
3
 
4
4
  var extractPreview = function extractPreview(data) {
@@ -1,5 +1,5 @@
1
1
  import { IconType } from '../../constants';
2
- import { extractUrlFromIconJsonLd } from '../common/utils';
2
+ import { extractUrlFromIconJsonLd } from '@atlaskit/linking-common/extractors';
3
3
  var priorityMapper = {
4
4
  blocker: IconType.PriorityBlocker,
5
5
  critical: IconType.PriorityCritical,
@@ -5,7 +5,7 @@ import extractJiraTaskIcon from './extract-jira-task-icon';
5
5
  import extractProviderIcon from './extract-provider-icon';
6
6
  import extractUrlIcon from './extract-url-icon';
7
7
  import { extractTaskType } from '../../common/lozenge';
8
- import { extractTitle } from '../../common/primitives';
8
+ import { extractTitle } from '@atlaskit/linking-common/extractors';
9
9
  import { extractorPriorityMap as priorityMap } from '../../common/icon/priority';
10
10
  import { IconType } from '../../../constants';
11
11
 
@@ -90,6 +90,12 @@ var extractJsonldDataIcon = function extractJsonldDataIcon(data) {
90
90
  label: taskLabel
91
91
  };
92
92
 
93
+ case 'atlassian:Goal':
94
+ return urlIcon || {
95
+ icon: IconType.Task,
96
+ label: label || 'Goal'
97
+ };
98
+
93
99
  case 'atlassian:Project':
94
100
  return urlIcon || {
95
101
  icon: IconType.Project,
@@ -1,7 +1,7 @@
1
1
  import { CONFLUENCE_GENERATOR_ID, JIRA_GENERATOR_ID } from '../../constants';
2
2
  import { IconType } from '../../../constants';
3
3
  import extractUrlIcon from './extract-url-icon';
4
- import { extractTitle } from '../../common/primitives';
4
+ import { extractTitle } from '@atlaskit/linking-common/extractors';
5
5
 
6
6
  var extractProviderIcon = function extractProviderIcon(data) {
7
7
  if (!data) {
@@ -1,4 +1,4 @@
1
- import { extractUrlFromIconJsonLd } from '../../common/utils';
1
+ import { extractUrlFromIconJsonLd } from '@atlaskit/linking-common/extractors';
2
2
 
3
3
  var extractUrlIcon = function extractUrlIcon(icon, label) {
4
4
  var url = icon && extractUrlFromIconJsonLd(icon);
@@ -1,11 +1,9 @@
1
- import { extractLink, extractSummary, extractTitle } from '../common/primitives';
1
+ import { extractSummary } from '../common/primitives';
2
2
  import { extractLozenge } from '../common/lozenge';
3
3
  import { extractLinkIcon } from './icon';
4
- import { extractCommentCount, extractCreatedBy, extractModifiedBy, extractProgrammingLanguage, extractSubscriberCount, extractViewCount, extractReactCount, extractVoteCount } from './utils';
5
- import { extractPersonCreatedBy } from '../common/person';
4
+ import { extractCommentCount, extractCreatedBy, extractModifiedBy, extractProgrammingLanguage, extractSubscriberCount, extractViewCount, extractReactCount, extractVoteCount, extractSourceBranch, extractTargetBranch, extractDueOn } from './utils';
6
5
  import { extractPersonsUpdatedBy } from './collaboratorGroup';
7
- import { extractDateUpdated } from '../common/date/extractDateUpdated';
8
- import { extractDateCreated } from '../common/date/extractDateCreated';
6
+ import { extractPersonCreatedBy, extractLink, extractTitle, extractDateUpdated, extractDateCreated } from '@atlaskit/linking-common/extractors';
9
7
  import extractPriority from './extract-priority';
10
8
  import extractProviderIcon from './icon/extract-provider-icon';
11
9
  import extractPreview from './extract-preview';
@@ -27,19 +25,22 @@ var extractFlexibleUiContext = function extractFlexibleUiContext(response, rende
27
25
  voteCount: extractVoteCount(data),
28
26
  createdBy: extractCreatedBy(data),
29
27
  createdOn: extractDateCreated(data),
28
+ dueOn: extractDueOn(data),
29
+ latestCommit: extractLatestCommit(data),
30
30
  linkIcon: extractLinkIcon(response, renderers),
31
31
  modifiedBy: extractModifiedBy(data),
32
32
  modifiedOn: extractDateUpdated(data),
33
33
  preview: extractPreview(data),
34
34
  priority: extractPriority(data),
35
+ provider: extractProviderIcon(data),
35
36
  programmingLanguage: extractProgrammingLanguage(data),
36
37
  snippet: extractSummary(data) || undefined,
37
38
  // Explicitly set here to remove an empty string
39
+ sourceBranch: extractSourceBranch(data),
38
40
  state: extractLozenge(data),
39
41
  subscriberCount: extractSubscriberCount(data),
42
+ targetBranch: extractTargetBranch(data),
40
43
  title: extractTitle(data) || url,
41
- provider: extractProviderIcon(data),
42
- latestCommit: extractLatestCommit(data),
43
44
  url: url
44
45
  };
45
46
  };