@atlaskit/smart-card 18.0.14 → 18.0.15

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 (154) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/state/analytics/useSmartLinkAnalytics.js +9 -0
  3. package/dist/cjs/state/flexible-ui-context/index.js +4 -0
  4. package/dist/cjs/utils/analytics/analytics.js +52 -2
  5. package/dist/cjs/utils/analytics/index.js +18 -0
  6. package/dist/cjs/version.json +1 -1
  7. package/dist/cjs/view/CardWithUrl/component.js +4 -2
  8. package/dist/cjs/view/CardWithUrl/loader.js +4 -2
  9. package/dist/cjs/view/FlexibleCard/components/actions/action/index.js +26 -4
  10. package/dist/cjs/view/FlexibleCard/components/actions/index.js +18 -2
  11. package/dist/cjs/view/FlexibleCard/components/blocks/action-group/index.js +6 -0
  12. package/dist/cjs/view/FlexibleCard/components/blocks/block/index.js +9 -2
  13. package/dist/cjs/view/FlexibleCard/components/blocks/element-group/index.js +9 -2
  14. package/dist/cjs/view/FlexibleCard/components/blocks/footer-block/index.js +6 -0
  15. package/dist/cjs/view/FlexibleCard/components/blocks/metadata-block/index.js +9 -2
  16. package/dist/cjs/view/FlexibleCard/components/blocks/preview-block/index.js +5 -0
  17. package/dist/cjs/view/FlexibleCard/components/blocks/snippet-block/index.js +5 -0
  18. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/errored/index.js +39 -19
  19. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/index.js +92 -17
  20. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/resolved/index.js +45 -9
  21. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/resolving/index.js +23 -12
  22. package/dist/cjs/view/FlexibleCard/components/container/index.js +5 -0
  23. package/dist/cjs/view/FlexibleCard/components/elements/avatar-group/index.js +12 -1
  24. package/dist/cjs/view/FlexibleCard/components/elements/badge/index.js +18 -3
  25. package/dist/cjs/view/FlexibleCard/components/elements/date-time/index.js +9 -1
  26. package/dist/cjs/view/FlexibleCard/components/elements/icon/index.js +9 -1
  27. package/dist/cjs/view/FlexibleCard/components/elements/index.js +96 -0
  28. package/dist/cjs/view/FlexibleCard/components/elements/link/index.js +9 -1
  29. package/dist/cjs/view/FlexibleCard/components/elements/lozenge/index.js +11 -3
  30. package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +9 -2
  31. package/dist/cjs/view/FlexibleCard/components/elements/text/index.js +12 -6
  32. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +7 -3
  33. package/dist/cjs/view/FlexibleCard/index.js +6 -0
  34. package/dist/cjs/view/HoverCard/index.js +48 -10
  35. package/dist/cjs/view/HoverCard/styled.js +3 -1
  36. package/dist/es2019/state/analytics/useSmartLinkAnalytics.js +7 -2
  37. package/dist/es2019/state/flexible-ui-context/index.js +5 -0
  38. package/dist/es2019/utils/analytics/analytics.js +35 -0
  39. package/dist/es2019/utils/analytics/index.js +1 -1
  40. package/dist/es2019/version.json +1 -1
  41. package/dist/es2019/view/CardWithUrl/component.js +4 -2
  42. package/dist/es2019/view/CardWithUrl/loader.js +4 -2
  43. package/dist/es2019/view/FlexibleCard/components/actions/action/index.js +37 -4
  44. package/dist/es2019/view/FlexibleCard/components/actions/index.js +18 -2
  45. package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +6 -0
  46. package/dist/es2019/view/FlexibleCard/components/blocks/block/index.js +9 -2
  47. package/dist/es2019/view/FlexibleCard/components/blocks/element-group/index.js +8 -2
  48. package/dist/es2019/view/FlexibleCard/components/blocks/footer-block/index.js +6 -0
  49. package/dist/es2019/view/FlexibleCard/components/blocks/metadata-block/index.js +9 -2
  50. package/dist/es2019/view/FlexibleCard/components/blocks/preview-block/index.js +5 -0
  51. package/dist/es2019/view/FlexibleCard/components/blocks/snippet-block/index.js +5 -0
  52. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/errored/index.js +31 -15
  53. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/index.js +77 -15
  54. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/resolved/index.js +35 -8
  55. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/resolving/index.js +20 -11
  56. package/dist/es2019/view/FlexibleCard/components/container/index.js +5 -0
  57. package/dist/es2019/view/FlexibleCard/components/elements/avatar-group/index.js +12 -1
  58. package/dist/es2019/view/FlexibleCard/components/elements/badge/index.js +18 -3
  59. package/dist/es2019/view/FlexibleCard/components/elements/date-time/index.js +9 -1
  60. package/dist/es2019/view/FlexibleCard/components/elements/icon/index.js +9 -1
  61. package/dist/es2019/view/FlexibleCard/components/elements/index.js +96 -0
  62. package/dist/es2019/view/FlexibleCard/components/elements/link/index.js +9 -1
  63. package/dist/es2019/view/FlexibleCard/components/elements/lozenge/index.js +11 -3
  64. package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +8 -1
  65. package/dist/es2019/view/FlexibleCard/components/elements/text/index.js +11 -4
  66. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +5 -2
  67. package/dist/es2019/view/FlexibleCard/index.js +6 -0
  68. package/dist/es2019/view/HoverCard/index.js +40 -10
  69. package/dist/es2019/view/HoverCard/styled.js +6 -1
  70. package/dist/esm/state/analytics/useSmartLinkAnalytics.js +10 -1
  71. package/dist/esm/state/flexible-ui-context/index.js +5 -0
  72. package/dist/esm/utils/analytics/analytics.js +41 -0
  73. package/dist/esm/utils/analytics/index.js +1 -1
  74. package/dist/esm/version.json +1 -1
  75. package/dist/esm/view/CardWithUrl/component.js +4 -2
  76. package/dist/esm/view/CardWithUrl/loader.js +4 -2
  77. package/dist/esm/view/FlexibleCard/components/actions/action/index.js +25 -4
  78. package/dist/esm/view/FlexibleCard/components/actions/index.js +18 -2
  79. package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +6 -0
  80. package/dist/esm/view/FlexibleCard/components/blocks/block/index.js +9 -2
  81. package/dist/esm/view/FlexibleCard/components/blocks/element-group/index.js +8 -2
  82. package/dist/esm/view/FlexibleCard/components/blocks/footer-block/index.js +6 -0
  83. package/dist/esm/view/FlexibleCard/components/blocks/metadata-block/index.js +9 -2
  84. package/dist/esm/view/FlexibleCard/components/blocks/preview-block/index.js +5 -0
  85. package/dist/esm/view/FlexibleCard/components/blocks/snippet-block/index.js +5 -0
  86. package/dist/esm/view/FlexibleCard/components/blocks/title-block/errored/index.js +33 -16
  87. package/dist/esm/view/FlexibleCard/components/blocks/title-block/index.js +79 -17
  88. package/dist/esm/view/FlexibleCard/components/blocks/title-block/resolved/index.js +39 -8
  89. package/dist/esm/view/FlexibleCard/components/blocks/title-block/resolving/index.js +22 -11
  90. package/dist/esm/view/FlexibleCard/components/container/index.js +5 -0
  91. package/dist/esm/view/FlexibleCard/components/elements/avatar-group/index.js +12 -1
  92. package/dist/esm/view/FlexibleCard/components/elements/badge/index.js +18 -3
  93. package/dist/esm/view/FlexibleCard/components/elements/date-time/index.js +9 -1
  94. package/dist/esm/view/FlexibleCard/components/elements/icon/index.js +9 -1
  95. package/dist/esm/view/FlexibleCard/components/elements/index.js +96 -0
  96. package/dist/esm/view/FlexibleCard/components/elements/link/index.js +9 -1
  97. package/dist/esm/view/FlexibleCard/components/elements/lozenge/index.js +11 -3
  98. package/dist/esm/view/FlexibleCard/components/elements/media/index.js +9 -2
  99. package/dist/esm/view/FlexibleCard/components/elements/text/index.js +12 -6
  100. package/dist/esm/view/FlexibleCard/components/elements/utils.js +5 -3
  101. package/dist/esm/view/FlexibleCard/index.js +6 -0
  102. package/dist/esm/view/HoverCard/index.js +42 -10
  103. package/dist/esm/view/HoverCard/styled.js +2 -1
  104. package/dist/types/state/analytics/useSmartLinkAnalytics.d.ts +4 -0
  105. package/dist/types/state/flexible-ui-context/index.d.ts +4 -0
  106. package/dist/types/state/flexible-ui-context/types.d.ts +102 -0
  107. package/dist/types/state/hooks/useSmartLink.d.ts +3 -0
  108. package/dist/types/utils/analytics/analytics.d.ts +4 -0
  109. package/dist/types/utils/analytics/index.d.ts +1 -1
  110. package/dist/types/utils/types.d.ts +2 -2
  111. package/dist/types/view/Card/index.d.ts +1 -1
  112. package/dist/types/view/Card/types.d.ts +1 -0
  113. package/dist/types/view/CardWithUrl/component.d.ts +1 -1
  114. package/dist/types/view/CardWithUrl/types.d.ts +1 -0
  115. package/dist/types/view/FlexibleCard/components/actions/action/index.d.ts +8 -0
  116. package/dist/types/view/FlexibleCard/components/actions/action/types.d.ts +4 -2
  117. package/dist/types/view/FlexibleCard/components/actions/index.d.ts +15 -0
  118. package/dist/types/view/FlexibleCard/components/blocks/action-group/index.d.ts +6 -0
  119. package/dist/types/view/FlexibleCard/components/blocks/action-group/types.d.ts +1 -1
  120. package/dist/types/view/FlexibleCard/components/blocks/block/index.d.ts +6 -0
  121. package/dist/types/view/FlexibleCard/components/blocks/element-group/index.d.ts +6 -0
  122. package/dist/types/view/FlexibleCard/components/blocks/element-group/types.d.ts +2 -2
  123. package/dist/types/view/FlexibleCard/components/blocks/footer-block/index.d.ts +6 -0
  124. package/dist/types/view/FlexibleCard/components/blocks/metadata-block/index.d.ts +6 -0
  125. package/dist/types/view/FlexibleCard/components/blocks/preview-block/index.d.ts +5 -0
  126. package/dist/types/view/FlexibleCard/components/blocks/snippet-block/index.d.ts +5 -0
  127. package/dist/types/view/FlexibleCard/components/blocks/title-block/errored/index.d.ts +9 -2
  128. package/dist/types/view/FlexibleCard/components/blocks/title-block/index.d.ts +11 -0
  129. package/dist/types/view/FlexibleCard/components/blocks/title-block/resolved/index.d.ts +7 -3
  130. package/dist/types/view/FlexibleCard/components/blocks/title-block/resolving/index.d.ts +8 -2
  131. package/dist/types/view/FlexibleCard/components/blocks/title-block/types.d.ts +10 -1
  132. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +7 -5
  133. package/dist/types/view/FlexibleCard/components/container/index.d.ts +4 -0
  134. package/dist/types/view/FlexibleCard/components/container/types.d.ts +2 -2
  135. package/dist/types/view/FlexibleCard/components/elements/avatar-group/index.d.ts +7 -0
  136. package/dist/types/view/FlexibleCard/components/elements/badge/index.d.ts +13 -0
  137. package/dist/types/view/FlexibleCard/components/elements/date-time/index.d.ts +7 -0
  138. package/dist/types/view/FlexibleCard/components/elements/icon/index.d.ts +6 -0
  139. package/dist/types/view/FlexibleCard/components/elements/icon/types.d.ts +5 -1
  140. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +77 -0
  141. package/dist/types/view/FlexibleCard/components/elements/link/index.d.ts +6 -0
  142. package/dist/types/view/FlexibleCard/components/elements/lozenge/index.d.ts +6 -0
  143. package/dist/types/view/FlexibleCard/components/elements/media/index.d.ts +6 -0
  144. package/dist/types/view/FlexibleCard/components/elements/text/index.d.ts +6 -0
  145. package/dist/types/view/FlexibleCard/components/elements/text/types.d.ts +1 -2
  146. package/dist/types/view/FlexibleCard/components/elements/types.d.ts +2 -0
  147. package/dist/types/view/FlexibleCard/index.d.ts +6 -0
  148. package/dist/types/view/HoverCard/index.d.ts +3 -2
  149. package/dist/types/view/HoverCard/types.d.ts +5 -2
  150. package/package.json +1 -1
  151. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/utils.js +0 -105
  152. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/utils.js +0 -71
  153. package/dist/esm/view/FlexibleCard/components/blocks/title-block/utils.js +0 -76
  154. package/dist/types/view/FlexibleCard/components/blocks/title-block/utils.d.ts +0 -11
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -9,9 +11,15 @@ exports.default = void 0;
9
11
 
10
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
13
 
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
12
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
17
 
14
- var _react = _interopRequireDefault(require("react"));
18
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _core = require("@emotion/core");
15
23
 
16
24
  var _constants = require("../../../../../constants");
17
25
 
@@ -21,26 +29,32 @@ var _errored = _interopRequireDefault(require("./errored"));
21
29
 
22
30
  var _resolving = _interopRequireDefault(require("./resolving"));
23
31
 
24
- var _excluded = ["status", "testId"];
32
+ var _actionGroup = _interopRequireDefault(require("../action-group"));
25
33
 
26
- var TitleBlock = function TitleBlock(_ref) {
27
- var _ref$status = _ref.status,
28
- status = _ref$status === void 0 ? _constants.SmartLinkStatus.Fallback : _ref$status,
29
- _ref$testId = _ref.testId,
30
- testId = _ref$testId === void 0 ? 'smart-block-title' : _ref$testId,
31
- props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
34
+ var _elements = require("../../elements");
35
+
36
+ var _excluded = ["actions", "anchorTarget", "maxLines", "onClick", "overrideCss", "status", "showActionOnHover", "testId", "text", "theme"];
37
+
38
+ var _templateObject, _templateObject2;
39
+
40
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
32
41
 
42
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
+
44
+ var getActionStyles = function getActionStyles(showOnHover, isOpen) {
45
+ if (showOnHover && !isOpen) {
46
+ return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n .actions-button-group {\n visibility: hidden;\n }\n\n &:hover {\n .actions-button-group {\n visibility: visible;\n }\n }\n "])));
47
+ }
48
+ };
49
+
50
+ var getTitleBlockViewComponent = function getTitleBlockViewComponent(status) {
33
51
  switch (status) {
34
52
  case _constants.SmartLinkStatus.Pending:
35
53
  case _constants.SmartLinkStatus.Resolving:
36
- return /*#__PURE__*/_react.default.createElement(_resolving.default, (0, _extends2.default)({}, props, {
37
- testId: testId
38
- }));
54
+ return _resolving.default;
39
55
 
40
56
  case _constants.SmartLinkStatus.Resolved:
41
- return /*#__PURE__*/_react.default.createElement(_resolved.default, (0, _extends2.default)({}, props, {
42
- testId: testId
43
- }));
57
+ return _resolved.default;
44
58
 
45
59
  case _constants.SmartLinkStatus.Unauthorized:
46
60
  case _constants.SmartLinkStatus.Forbidden:
@@ -48,11 +62,72 @@ var TitleBlock = function TitleBlock(_ref) {
48
62
  case _constants.SmartLinkStatus.Errored:
49
63
  case _constants.SmartLinkStatus.Fallback:
50
64
  default:
51
- return /*#__PURE__*/_react.default.createElement(_errored.default, (0, _extends2.default)({}, props, {
52
- testId: testId
53
- }));
65
+ return _errored.default;
54
66
  }
55
67
  };
68
+ /**
69
+ * Represents a TitleBlock, which is the foundation of all Flexible Smart Links.
70
+ * This contains an icon, the link, and any associated metadata and actions in one block.
71
+ * The TitleBlock will also render differently given the state of the smart link.
72
+ * This can be found in the corresponding Resolving, Resolved and Errored views.
73
+ * @param {TitleBlockProps} TitleBlockProps
74
+ * @see Block
75
+ * @see TitleBlockResolvingView
76
+ * @see TitleBlockResolvedView
77
+ * @see TitleBlockErroredView
78
+ */
79
+
80
+
81
+ var TitleBlock = function TitleBlock(_ref) {
82
+ var _ref$actions = _ref.actions,
83
+ actions = _ref$actions === void 0 ? [] : _ref$actions,
84
+ anchorTarget = _ref.anchorTarget,
85
+ maxLines = _ref.maxLines,
86
+ onClick = _ref.onClick,
87
+ overrideCss = _ref.overrideCss,
88
+ _ref$status = _ref.status,
89
+ status = _ref$status === void 0 ? _constants.SmartLinkStatus.Fallback : _ref$status,
90
+ showActionOnHover = _ref.showActionOnHover,
91
+ _ref$testId = _ref.testId,
92
+ testId = _ref$testId === void 0 ? 'smart-block-title' : _ref$testId,
93
+ text = _ref.text,
94
+ theme = _ref.theme,
95
+ props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
96
+
97
+ var _useState = (0, _react.useState)(false),
98
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
99
+ actionDropdownOpen = _useState2[0],
100
+ setActionDropdownOpen = _useState2[1];
101
+
102
+ var actionGroup = actions.length > 0 && /*#__PURE__*/_react.default.createElement(_actionGroup.default, {
103
+ items: actions,
104
+ visibleButtonsNum: showActionOnHover ? 1 : 2,
105
+ onDropdownOpenChange: function onDropdownOpenChange(isOpen) {
106
+ return setActionDropdownOpen(isOpen);
107
+ }
108
+ });
109
+
110
+ var actionStyles = getActionStyles(showActionOnHover, actionDropdownOpen);
111
+ var combinedCss = (0, _core.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n ", " ", "\n "])), actionStyles, overrideCss);
112
+ var overrideText = !!text ? {
113
+ text: text
114
+ } : {};
115
+
116
+ var title = /*#__PURE__*/_react.default.createElement(_elements.Title, (0, _extends2.default)({
117
+ maxLines: maxLines,
118
+ onClick: onClick,
119
+ target: anchorTarget,
120
+ theme: theme
121
+ }, overrideText));
122
+
123
+ var Component = getTitleBlockViewComponent(status);
124
+ return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, props, {
125
+ actionGroup: actionGroup,
126
+ overrideCss: combinedCss,
127
+ testId: testId,
128
+ title: title
129
+ }));
130
+ };
56
131
 
57
132
  var _default = TitleBlock;
58
133
  exports.default = _default;
@@ -9,17 +9,53 @@ exports.default = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
12
- var _react = _interopRequireDefault(require("react"));
13
-
14
- var _core = require("@emotion/core");
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
13
 
16
- var _utils = require("../utils");
14
+ var _react = _interopRequireDefault(require("react"));
17
15
 
18
- /** @jsx jsx */
19
- var TitleBlockResolvedView = function TitleBlockResolvedView(props) {
20
- return (0, _core.jsx)(_utils.BaseTitleBlockComponent, (0, _extends2.default)({}, props, {
21
- blockTestIdPostfix: "resolved-view"
22
- }));
16
+ var _elements = require("../../../elements");
17
+
18
+ var _block = _interopRequireDefault(require("../../block"));
19
+
20
+ var _elementGroup = _interopRequireDefault(require("../../element-group"));
21
+
22
+ var _constants = require("../../../../../../constants");
23
+
24
+ var _utils = require("../../utils");
25
+
26
+ var _excluded = ["actionGroup", "metadata", "position", "subtitle", "testId", "text", "title"];
27
+
28
+ /**
29
+ * This renders a fully resolved TitleBlock.
30
+ * This should render when a Smart Link returns a valid response.
31
+ * @see TitleBlock
32
+ */
33
+ var TitleBlockResolvedView = function TitleBlockResolvedView(_ref) {
34
+ var actionGroup = _ref.actionGroup,
35
+ _ref$metadata = _ref.metadata,
36
+ metadata = _ref$metadata === void 0 ? [] : _ref$metadata,
37
+ position = _ref.position,
38
+ _ref$subtitle = _ref.subtitle,
39
+ subtitle = _ref$subtitle === void 0 ? [] : _ref$subtitle,
40
+ testId = _ref.testId,
41
+ text = _ref.text,
42
+ title = _ref.title,
43
+ blockProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
44
+ var metadataElements = (0, _utils.renderElementItems)(metadata);
45
+ var subtitleElements = (0, _utils.renderElementItems)(subtitle);
46
+ return /*#__PURE__*/_react.default.createElement(_block.default, (0, _extends2.default)({}, blockProps, {
47
+ testId: "".concat(testId, "-resolved-view")
48
+ }), /*#__PURE__*/_react.default.createElement(_elements.LinkIcon, {
49
+ position: position
50
+ }), /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
51
+ direction: _constants.SmartLinkDirection.Vertical,
52
+ width: _constants.SmartLinkWidth.Flexible
53
+ }, title, subtitleElements && /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
54
+ direction: _constants.SmartLinkDirection.Horizontal
55
+ }, subtitleElements)), metadataElements && /*#__PURE__*/_react.default.createElement(_elementGroup.default, {
56
+ direction: _constants.SmartLinkDirection.Horizontal,
57
+ align: _constants.SmartLinkAlignment.Right
58
+ }, metadataElements), actionGroup);
23
59
  };
24
60
 
25
61
  var _default = TitleBlockResolvedView;
@@ -9,17 +9,20 @@ exports.default = void 0;
9
9
 
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+
12
14
  var _react = _interopRequireDefault(require("react"));
13
15
 
14
16
  var _core = require("@emotion/core");
15
17
 
16
18
  var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
17
19
 
20
+ var _block = _interopRequireDefault(require("../../block"));
21
+
18
22
  var _constants = require("../../../../../../constants");
19
23
 
20
- var _utils = require("../utils");
24
+ var _excluded = ["actionGroup", "testId", "title"];
21
25
 
22
- /** @jsx jsx */
23
26
  var getSpinnerSize = function getSpinnerSize(size) {
24
27
  // Spinner sizes should be equivalent or smaller than Icon size
25
28
  // to avoid the jumping.
@@ -38,19 +41,27 @@ var getSpinnerSize = function getSpinnerSize(size) {
38
41
  return 12;
39
42
  }
40
43
  };
44
+ /**
45
+ * This represents a TitleBlock for a Smart Link that is currently waiting
46
+ * for a request to finish.
47
+ * This should render when a Smart Link has sent a request.
48
+ * @see TitleBlock
49
+ */
50
+
41
51
 
42
- var TitleBlockResolvingView = function TitleBlockResolvingView(props) {
43
- var _props$size = props.size,
44
- size = _props$size === void 0 ? _constants.SmartLinkSize.Medium : _props$size,
45
- testId = props.testId;
46
- var spinnerIcon = (0, _core.jsx)(_spinner.default, {
52
+ var TitleBlockResolvingView = function TitleBlockResolvingView(_ref) {
53
+ var actionGroup = _ref.actionGroup,
54
+ testId = _ref.testId,
55
+ title = _ref.title,
56
+ blockProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
57
+ var _blockProps$size = blockProps.size,
58
+ size = _blockProps$size === void 0 ? _constants.SmartLinkSize.Medium : _blockProps$size;
59
+ return (0, _core.jsx)(_block.default, (0, _extends2.default)({}, blockProps, {
60
+ testId: "".concat(testId, "-resolving-view")
61
+ }), (0, _core.jsx)(_spinner.default, {
47
62
  size: getSpinnerSize(size),
48
63
  testId: "".concat(testId, "-resolving-spinner")
49
- });
50
- return (0, _core.jsx)(_utils.BaseTitleBlockComponent, (0, _extends2.default)({}, props, {
51
- blockIcon: spinnerIcon,
52
- blockTestIdPostfix: "resolving-view"
53
- }));
64
+ }), title, actionGroup);
54
65
  };
55
66
 
56
67
  var _default = TitleBlockResolvingView;
@@ -77,6 +77,11 @@ var renderChildren = function renderChildren(children, containerSize, containerT
77
77
  }
78
78
  });
79
79
  };
80
+ /**
81
+ * This represents the container in which all Flexible UI Smart Links are rendered.
82
+ * @see Block
83
+ */
84
+
80
85
 
81
86
  var Container = function Container(_ref) {
82
87
  var children = _ref.children,
@@ -34,12 +34,21 @@ var getStyles = function getStyles(size) {
34
34
  return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n li {\n span,\n svg {\n max-height: 1.25rem;\n max-width: 1.25rem;\n }\n }\n "])));
35
35
  }
36
36
  };
37
+ /**
38
+ * An element that displays a group of avatars.
39
+ * @public
40
+ * @param {AvatarGroupProps} AvatarGroupProps - The props necessary for the AvatarGroup.
41
+ * @see AuthorGroup
42
+ * @see CollaboratorGroup
43
+ */
44
+
37
45
 
38
46
  var AvatarGroup = function AvatarGroup(_ref) {
39
47
  var _ref$items = _ref.items,
40
48
  items = _ref$items === void 0 ? [] : _ref$items,
41
49
  _ref$maxCount = _ref.maxCount,
42
50
  maxCount = _ref$maxCount === void 0 ? MAX_COUNT : _ref$maxCount,
51
+ overrideCss = _ref.overrideCss,
43
52
  _ref$size = _ref.size,
44
53
  size = _ref$size === void 0 ? _constants.SmartLinkSize.Medium : _ref$size,
45
54
  _ref$testId = _ref.testId,
@@ -50,7 +59,9 @@ var AvatarGroup = function AvatarGroup(_ref) {
50
59
  }
51
60
 
52
61
  return (0, _core.jsx)("span", {
53
- css: getStyles(size)
62
+ css: [getStyles(size), overrideCss],
63
+ "data-smart-element-avatar-group": true,
64
+ "data-testid": testId
54
65
  }, (0, _core.jsx)(_avatarGroup.default, {
55
66
  maxCount: maxCount,
56
67
  appearance: "stack",
@@ -64,13 +64,28 @@ var renderImageIcon = function renderImageIcon(url, testId) {
64
64
  });
65
65
  }
66
66
  };
67
+ /**
68
+ * An element that displays some text with an associated icon.
69
+ * @public
70
+ * @param {BadgeProps} BadgeProps - The props necessary for the Badge.
71
+ * @see CommentCount
72
+ * @see ViewCount
73
+ * @see ReactCount
74
+ * @see VoteCount
75
+ * @see SubscriberCount
76
+ * @see Priority
77
+ * @see ProgrammingLanguage
78
+ * @see Provider
79
+ */
80
+
67
81
 
68
82
  var Badge = function Badge(_ref) {
69
83
  var icon = _ref.icon,
70
- url = _ref.url,
71
84
  label = _ref.label,
85
+ overrideCss = _ref.overrideCss,
72
86
  _ref$testId = _ref.testId,
73
- testId = _ref$testId === void 0 ? 'smart-element-badge' : _ref$testId;
87
+ testId = _ref$testId === void 0 ? 'smart-element-badge' : _ref$testId,
88
+ url = _ref.url;
74
89
  var formattedMessageOrLabel = getFormattedMessageFromIcon(icon) || label;
75
90
  var badgeIcon = renderAtlaskitIcon(icon, testId) || renderImageIcon(url, testId);
76
91
 
@@ -79,7 +94,7 @@ var Badge = function Badge(_ref) {
79
94
  }
80
95
 
81
96
  return (0, _core.jsx)("div", {
82
- css: badgeStyles,
97
+ css: [badgeStyles, overrideCss],
83
98
  "data-fit-to-content": true,
84
99
  "data-smart-element-badge": true,
85
100
  "data-testid": testId
@@ -32,9 +32,17 @@ var typeToDescriptorMap = {
32
32
  created: _messages.messages.created_on,
33
33
  modified: _messages.messages.modified_on
34
34
  };
35
+ /**
36
+ * An element that displays an ISO Timestamp in text.
37
+ * @public
38
+ * @param {DateTimeProps} DateTimeProps - The props necessary for the DateTime element.
39
+ * @see CreatedOn
40
+ * @see ModifiedOn
41
+ */
35
42
 
36
43
  var DateTime = function DateTime(_ref) {
37
44
  var date = _ref.date,
45
+ overrideCss = _ref.overrideCss,
38
46
  type = _ref.type,
39
47
  _ref$testId = _ref.testId,
40
48
  testId = _ref$testId === void 0 ? 'smart-element-date-time' : _ref$testId;
@@ -54,7 +62,7 @@ var DateTime = function DateTime(_ref) {
54
62
  numeric: 'auto'
55
63
  });
56
64
  return (0, _core.jsx)("span", {
57
- css: styles,
65
+ css: [styles, overrideCss],
58
66
  "data-separator": true,
59
67
  "data-smart-element-date-time": true,
60
68
  "data-testid": testId
@@ -93,6 +93,13 @@ var renderImageIcon = function renderImageIcon(defaultIcon, icon, url, testId) {
93
93
  });
94
94
  }
95
95
  };
96
+ /**
97
+ * An element that displays an Icon or favicon.
98
+ * @public
99
+ * @param {IconProps} IconProps - The props necessary for the Icon element.
100
+ * @see LinkIcon
101
+ */
102
+
96
103
 
97
104
  var Icon = function Icon(_ref) {
98
105
  var icon = _ref.icon,
@@ -100,6 +107,7 @@ var Icon = function Icon(_ref) {
100
107
  label = _ref$label === void 0 ? 'Link' : _ref$label,
101
108
  _ref$position = _ref.position,
102
109
  position = _ref$position === void 0 ? _constants.SmartLinkPosition.Top : _ref$position,
110
+ overrideCss = _ref.overrideCss,
103
111
  render = _ref.render,
104
112
  _ref$size = _ref.size,
105
113
  size = _ref$size === void 0 ? _constants.SmartLinkSize.Medium : _ref$size,
@@ -114,7 +122,7 @@ var Icon = function Icon(_ref) {
114
122
  var styles = getIconStyles(size, position, width);
115
123
  var renderStyles = render ? getCustomRenderStyles(width) : undefined;
116
124
  return (0, _core.jsx)("div", {
117
- css: [styles, renderStyles],
125
+ css: [styles, renderStyles, overrideCss],
118
126
  "data-fit-to-content": true,
119
127
  "data-smart-element-icon": true,
120
128
  "data-testid": testId
@@ -12,41 +12,137 @@ var _constants = require("../../../../constants");
12
12
  // Attention: Keep the export name and element name the same.
13
13
  // This will help reducing the code for mapping elements inside
14
14
  // createElement and renderElementItems
15
+
16
+ /**
17
+ * Creates an AvatarGroup element using the data from AuthorGroup in the Flexible UI Context.
18
+ * @see AvatarGroup
19
+ */
15
20
  var AuthorGroup = (0, _utils.createElement)(_constants.ElementName.AuthorGroup);
21
+ /**
22
+ * Creates an AvatarGroup element using the data from CollaboratorGroup in the Flexible UI Context.
23
+ * @see AvatarGroup
24
+ */
25
+
16
26
  exports.AuthorGroup = AuthorGroup;
17
27
  var CollaboratorGroup = (0, _utils.createElement)(_constants.ElementName.CollaboratorGroup);
28
+ /**
29
+ * Creates a CommentCount Badge element using the data from CommentCount in the Flexible UI Context.
30
+ * @see Badge
31
+ */
32
+
18
33
  exports.CollaboratorGroup = CollaboratorGroup;
19
34
  var CommentCount = (0, _utils.createElement)(_constants.ElementName.CommentCount);
35
+ /**
36
+ * Creates a ViewCount Badge element using the data from ViewCount in the Flexible UI Context.
37
+ * @see Badge
38
+ */
39
+
20
40
  exports.CommentCount = CommentCount;
21
41
  var ViewCount = (0, _utils.createElement)(_constants.ElementName.ViewCount);
42
+ /**
43
+ * Creates a ReactCount Badge element using the data from ReactCount in the Flexible UI Context.
44
+ * @see Badge
45
+ */
46
+
22
47
  exports.ViewCount = ViewCount;
23
48
  var ReactCount = (0, _utils.createElement)(_constants.ElementName.ReactCount);
49
+ /**
50
+ * Creates a VoteCount Badge element using the data from VoteCount in the Flexible UI Context.
51
+ * @see Badge
52
+ */
53
+
24
54
  exports.ReactCount = ReactCount;
25
55
  var VoteCount = (0, _utils.createElement)(_constants.ElementName.VoteCount);
56
+ /**
57
+ * Creates a CreatedBy text element using the data from CreatedBy in the Flexible UI Context.
58
+ * @see Text
59
+ */
60
+
26
61
  exports.VoteCount = VoteCount;
27
62
  var CreatedBy = (0, _utils.createElement)(_constants.ElementName.CreatedBy);
63
+ /**
64
+ * Creates a CreatedOn DateTime element using the data from CreatedOn in the Flexible UI Context.
65
+ * @see DateTime
66
+ */
67
+
28
68
  exports.CreatedBy = CreatedBy;
29
69
  var CreatedOn = (0, _utils.createElement)(_constants.ElementName.CreatedOn);
70
+ /**
71
+ * Creates a LinkIcon Icon element using the data from LinkIcon in the Flexible UI Context.
72
+ * @see Icon
73
+ */
74
+
30
75
  exports.CreatedOn = CreatedOn;
31
76
  var LinkIcon = (0, _utils.createElement)(_constants.ElementName.LinkIcon);
77
+ /**
78
+ * Creates a ModifiedBy Text element using the data from ModifiedBy in the Flexible UI Context.
79
+ * @see Text
80
+ */
81
+
32
82
  exports.LinkIcon = LinkIcon;
33
83
  var ModifiedBy = (0, _utils.createElement)(_constants.ElementName.ModifiedBy);
84
+ /**
85
+ * Creates a ModifiedOn DateTime element using the data from ModifiedOn in the Flexible UI Context.
86
+ * @see DateTime
87
+ */
88
+
34
89
  exports.ModifiedBy = ModifiedBy;
35
90
  var ModifiedOn = (0, _utils.createElement)(_constants.ElementName.ModifiedOn);
91
+ /**
92
+ * Creates a Preview element using the data from Preview in the Flexible UI Context.
93
+ * @see Preview
94
+ */
95
+
36
96
  exports.ModifiedOn = ModifiedOn;
37
97
  var Preview = (0, _utils.createElement)(_constants.ElementName.Preview);
98
+ /**
99
+ * Creates a Priority Badge element using the data from Priority in the Flexible UI Context.
100
+ * @see Badge
101
+ */
102
+
38
103
  exports.Preview = Preview;
39
104
  var Priority = (0, _utils.createElement)(_constants.ElementName.Priority);
105
+ /**
106
+ * Creates a ProgrammingLanguage Badge element using the data from ProgrammingLanguage in the Flexible UI Context.
107
+ * @see Badge
108
+ */
109
+
40
110
  exports.Priority = Priority;
41
111
  var ProgrammingLanguage = (0, _utils.createElement)(_constants.ElementName.ProgrammingLanguage);
112
+ /**
113
+ * Creates a Snippet element using the data from Snippet in the Flexible UI Context.
114
+ * @see Text
115
+ */
116
+
42
117
  exports.ProgrammingLanguage = ProgrammingLanguage;
43
118
  var Snippet = (0, _utils.createElement)(_constants.ElementName.Snippet);
119
+ /**
120
+ * Creates a State Lozenge element using the data from State in the Flexible UI Context.
121
+ * @see Lozenge
122
+ */
123
+
44
124
  exports.Snippet = Snippet;
45
125
  var State = (0, _utils.createElement)(_constants.ElementName.State);
126
+ /**
127
+ * Creates a SubscriberCount Badge element using the data from SubscriberCount in the Flexible UI Context.
128
+ * @see Badge
129
+ */
130
+
46
131
  exports.State = State;
47
132
  var SubscriberCount = (0, _utils.createElement)(_constants.ElementName.SubscriberCount);
133
+ /**
134
+ * Creates a Title Link element using the data from Title in the Flexible UI Context.
135
+ * This represents the main link text within the Smart Link.
136
+ * @see Link
137
+ */
138
+
48
139
  exports.SubscriberCount = SubscriberCount;
49
140
  var Title = (0, _utils.createElement)(_constants.ElementName.Title);
141
+ /**
142
+ * Creates a Provider Badge element using the data from Provider in the Flexible UI Context.
143
+ * @see Badge
144
+ */
145
+
50
146
  exports.Title = Title;
51
147
  var Provider = (0, _utils.createElement)(_constants.ElementName.Provider);
52
148
  exports.Provider = Provider;
@@ -55,10 +55,18 @@ var getMaxLines = function getMaxLines(maxLines) {
55
55
 
56
56
  return maxLines;
57
57
  };
58
+ /**
59
+ * An element that represent.
60
+ * @public
61
+ * @param {LinkProps} LinkProps - The props necessary for the Icon element.
62
+ * @see LinkIcon
63
+ */
64
+
58
65
 
59
66
  var Link = function Link(_ref) {
60
67
  var _ref$maxLines = _ref.maxLines,
61
68
  maxLines = _ref$maxLines === void 0 ? DEFAULT_MAX_LINES : _ref$maxLines,
69
+ overrideCss = _ref.overrideCss,
62
70
  _ref$size = _ref.size,
63
71
  size = _ref$size === void 0 ? _constants.SmartLinkSize.Medium : _ref$size,
64
72
  _ref$testId = _ref.testId,
@@ -76,7 +84,7 @@ var Link = function Link(_ref) {
76
84
  testId: "".concat(testId, "-tooltip"),
77
85
  tag: "span"
78
86
  }, (0, _core.jsx)("a", {
79
- css: getAnchorStyles(size, theme, getMaxLines(maxLines)),
87
+ css: [getAnchorStyles(size, theme, getMaxLines(maxLines)), overrideCss],
80
88
  "data-smart-element-link": true,
81
89
  "data-testid": testId,
82
90
  onClick: onClick,
@@ -18,10 +18,17 @@ var _lozenge = _interopRequireDefault(require("@atlaskit/lozenge"));
18
18
  var _templateObject;
19
19
 
20
20
  var styles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n line-height: inherit;\n"])));
21
+ /**
22
+ * An element that displays a Lozenge.
23
+ * @public
24
+ * @param {LozengeProps} LozengeProps - The props necessary for the Lozenge element.
25
+ * @see State
26
+ */
21
27
 
22
28
  var Lozenge = function Lozenge(_ref) {
23
29
  var _ref$appearance = _ref.appearance,
24
30
  appearance = _ref$appearance === void 0 ? 'default' : _ref$appearance,
31
+ overrideCss = _ref.overrideCss,
25
32
  text = _ref.text,
26
33
  _ref$testId = _ref.testId,
27
34
  testId = _ref$testId === void 0 ? 'smart-element-lozenge' : _ref$testId;
@@ -31,12 +38,13 @@ var Lozenge = function Lozenge(_ref) {
31
38
  }
32
39
 
33
40
  return (0, _core.jsx)("span", {
34
- css: styles,
41
+ css: [styles, overrideCss],
35
42
  "data-fit-to-content": true,
36
- "data-smart-element-lozenge": true
43
+ "data-smart-element-lozenge": true,
44
+ "data-testid": testId
37
45
  }, (0, _core.jsx)(_lozenge.default, {
38
46
  appearance: appearance,
39
- testId: testId
47
+ testId: "".concat(testId, "-lozenge")
40
48
  }, text));
41
49
  };
42
50
 
@@ -28,9 +28,16 @@ var _templateObject;
28
28
  * contents within the element's box.
29
29
  */
30
30
  var styles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n aspect-ratio: 16 / 9;\n display: flex;\n width: 100%;\n\n // fallback\n @supports not (aspect-ratio: auto) {\n padding-top: 56.25%; // 16:9 ratio (9 / 16 = 0.5625)\n height: 0;\n position: relative;\n overflow: hidden;\n }\n\n > img {\n min-height: 100%;\n min-width: 100%;\n max-height: 100%;\n max-width: 100%;\n object-fit: cover;\n object-position: center center;\n\n // fallback\n @supports not (aspect-ratio: auto) {\n position: absolute;\n transform: translate(-50%, -50%);\n left: 50%;\n top: 50%;\n width: auto;\n height: auto;\n }\n }\n"])));
31
+ /**
32
+ * An element that displays a Media.
33
+ * @public
34
+ * @param {MediaProps} MediaProps - The props necessary for the Media element.
35
+ * @see Preview
36
+ */
31
37
 
32
38
  var Media = function Media(_ref) {
33
- var _ref$testId = _ref.testId,
39
+ var overrideCss = _ref.overrideCss,
40
+ _ref$testId = _ref.testId,
34
41
  testId = _ref$testId === void 0 ? 'smart-element-media' : _ref$testId,
35
42
  type = _ref.type,
36
43
  url = _ref.url;
@@ -40,7 +47,7 @@ var Media = function Media(_ref) {
40
47
  }
41
48
 
42
49
  return (0, _core.jsx)("div", {
43
- css: styles,
50
+ css: [styles, overrideCss],
44
51
  "data-smart-element-media": true,
45
52
  "data-testid": testId
46
53
  }, (0, _core.jsx)(_imageIcon.default, {