@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
@@ -1,30 +1,34 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["status", "testId"];
4
- import React from 'react';
4
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
5
+ var _excluded = ["actions", "anchorTarget", "maxLines", "onClick", "overrideCss", "status", "showActionOnHover", "testId", "text", "theme"];
6
+
7
+ var _templateObject, _templateObject2;
8
+
9
+ import React, { useState } from 'react';
10
+ import { css } from '@emotion/core';
5
11
  import { SmartLinkStatus } from '../../../../../constants';
6
12
  import TitleBlockResolvedView from './resolved';
7
13
  import TitleBlockErroredView from './errored';
8
14
  import TitleBlockResolvingView from './resolving';
15
+ import ActionGroup from '../action-group';
16
+ import { Title } from '../../elements';
9
17
 
10
- var TitleBlock = function TitleBlock(_ref) {
11
- var _ref$status = _ref.status,
12
- status = _ref$status === void 0 ? SmartLinkStatus.Fallback : _ref$status,
13
- _ref$testId = _ref.testId,
14
- testId = _ref$testId === void 0 ? 'smart-block-title' : _ref$testId,
15
- props = _objectWithoutProperties(_ref, _excluded);
18
+ var getActionStyles = function getActionStyles(showOnHover, isOpen) {
19
+ if (showOnHover && !isOpen) {
20
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .actions-button-group {\n visibility: hidden;\n }\n\n &:hover {\n .actions-button-group {\n visibility: visible;\n }\n }\n "])));
21
+ }
22
+ };
16
23
 
24
+ var getTitleBlockViewComponent = function getTitleBlockViewComponent(status) {
17
25
  switch (status) {
18
26
  case SmartLinkStatus.Pending:
19
27
  case SmartLinkStatus.Resolving:
20
- return /*#__PURE__*/React.createElement(TitleBlockResolvingView, _extends({}, props, {
21
- testId: testId
22
- }));
28
+ return TitleBlockResolvingView;
23
29
 
24
30
  case SmartLinkStatus.Resolved:
25
- return /*#__PURE__*/React.createElement(TitleBlockResolvedView, _extends({}, props, {
26
- testId: testId
27
- }));
31
+ return TitleBlockResolvedView;
28
32
 
29
33
  case SmartLinkStatus.Unauthorized:
30
34
  case SmartLinkStatus.Forbidden:
@@ -32,10 +36,68 @@ var TitleBlock = function TitleBlock(_ref) {
32
36
  case SmartLinkStatus.Errored:
33
37
  case SmartLinkStatus.Fallback:
34
38
  default:
35
- return /*#__PURE__*/React.createElement(TitleBlockErroredView, _extends({}, props, {
36
- testId: testId
37
- }));
39
+ return TitleBlockErroredView;
38
40
  }
39
41
  };
42
+ /**
43
+ * Represents a TitleBlock, which is the foundation of all Flexible Smart Links.
44
+ * This contains an icon, the link, and any associated metadata and actions in one block.
45
+ * The TitleBlock will also render differently given the state of the smart link.
46
+ * This can be found in the corresponding Resolving, Resolved and Errored views.
47
+ * @param {TitleBlockProps} TitleBlockProps
48
+ * @see Block
49
+ * @see TitleBlockResolvingView
50
+ * @see TitleBlockResolvedView
51
+ * @see TitleBlockErroredView
52
+ */
53
+
54
+
55
+ var TitleBlock = function TitleBlock(_ref) {
56
+ var _ref$actions = _ref.actions,
57
+ actions = _ref$actions === void 0 ? [] : _ref$actions,
58
+ anchorTarget = _ref.anchorTarget,
59
+ maxLines = _ref.maxLines,
60
+ onClick = _ref.onClick,
61
+ overrideCss = _ref.overrideCss,
62
+ _ref$status = _ref.status,
63
+ status = _ref$status === void 0 ? SmartLinkStatus.Fallback : _ref$status,
64
+ showActionOnHover = _ref.showActionOnHover,
65
+ _ref$testId = _ref.testId,
66
+ testId = _ref$testId === void 0 ? 'smart-block-title' : _ref$testId,
67
+ text = _ref.text,
68
+ theme = _ref.theme,
69
+ props = _objectWithoutProperties(_ref, _excluded);
70
+
71
+ var _useState = useState(false),
72
+ _useState2 = _slicedToArray(_useState, 2),
73
+ actionDropdownOpen = _useState2[0],
74
+ setActionDropdownOpen = _useState2[1];
75
+
76
+ var actionGroup = actions.length > 0 && /*#__PURE__*/React.createElement(ActionGroup, {
77
+ items: actions,
78
+ visibleButtonsNum: showActionOnHover ? 1 : 2,
79
+ onDropdownOpenChange: function onDropdownOpenChange(isOpen) {
80
+ return setActionDropdownOpen(isOpen);
81
+ }
82
+ });
83
+ var actionStyles = getActionStyles(showActionOnHover, actionDropdownOpen);
84
+ var combinedCss = css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n ", " ", "\n "])), actionStyles, overrideCss);
85
+ var overrideText = !!text ? {
86
+ text: text
87
+ } : {};
88
+ var title = /*#__PURE__*/React.createElement(Title, _extends({
89
+ maxLines: maxLines,
90
+ onClick: onClick,
91
+ target: anchorTarget,
92
+ theme: theme
93
+ }, overrideText));
94
+ var Component = getTitleBlockViewComponent(status);
95
+ return /*#__PURE__*/React.createElement(Component, _extends({}, props, {
96
+ actionGroup: actionGroup,
97
+ overrideCss: combinedCss,
98
+ testId: testId,
99
+ title: title
100
+ }));
101
+ };
40
102
 
41
103
  export default TitleBlock;
@@ -1,14 +1,45 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
-
3
- /** @jsx jsx */
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["actionGroup", "metadata", "position", "subtitle", "testId", "text", "title"];
4
4
  import React from 'react';
5
- import { jsx } from '@emotion/core';
6
- import { BaseTitleBlockComponent } from '../utils';
5
+ import { LinkIcon } from '../../../elements';
6
+ import Block from '../../block';
7
+ import ElementGroup from '../../element-group';
8
+ import { SmartLinkAlignment, SmartLinkDirection, SmartLinkWidth } from '../../../../../../constants';
9
+ import { renderElementItems } from '../../utils';
10
+ /**
11
+ * This renders a fully resolved TitleBlock.
12
+ * This should render when a Smart Link returns a valid response.
13
+ * @see TitleBlock
14
+ */
15
+
16
+ var TitleBlockResolvedView = function TitleBlockResolvedView(_ref) {
17
+ var actionGroup = _ref.actionGroup,
18
+ _ref$metadata = _ref.metadata,
19
+ metadata = _ref$metadata === void 0 ? [] : _ref$metadata,
20
+ position = _ref.position,
21
+ _ref$subtitle = _ref.subtitle,
22
+ subtitle = _ref$subtitle === void 0 ? [] : _ref$subtitle,
23
+ testId = _ref.testId,
24
+ text = _ref.text,
25
+ title = _ref.title,
26
+ blockProps = _objectWithoutProperties(_ref, _excluded);
7
27
 
8
- var TitleBlockResolvedView = function TitleBlockResolvedView(props) {
9
- return jsx(BaseTitleBlockComponent, _extends({}, props, {
10
- blockTestIdPostfix: "resolved-view"
11
- }));
28
+ var metadataElements = renderElementItems(metadata);
29
+ var subtitleElements = renderElementItems(subtitle);
30
+ return /*#__PURE__*/React.createElement(Block, _extends({}, blockProps, {
31
+ testId: "".concat(testId, "-resolved-view")
32
+ }), /*#__PURE__*/React.createElement(LinkIcon, {
33
+ position: position
34
+ }), /*#__PURE__*/React.createElement(ElementGroup, {
35
+ direction: SmartLinkDirection.Vertical,
36
+ width: SmartLinkWidth.Flexible
37
+ }, title, subtitleElements && /*#__PURE__*/React.createElement(ElementGroup, {
38
+ direction: SmartLinkDirection.Horizontal
39
+ }, subtitleElements)), metadataElements && /*#__PURE__*/React.createElement(ElementGroup, {
40
+ direction: SmartLinkDirection.Horizontal,
41
+ align: SmartLinkAlignment.Right
42
+ }, metadataElements), actionGroup);
12
43
  };
13
44
 
14
45
  export default TitleBlockResolvedView;
@@ -1,11 +1,13 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["actionGroup", "testId", "title"];
2
4
 
3
5
  /** @jsx jsx */
4
6
  import React from 'react';
5
7
  import { jsx } from '@emotion/core';
6
8
  import Spinner from '@atlaskit/spinner';
9
+ import Block from '../../block';
7
10
  import { SmartLinkSize } from '../../../../../../constants';
8
- import { BaseTitleBlockComponent } from '../utils';
9
11
 
10
12
  var getSpinnerSize = function getSpinnerSize(size) {
11
13
  // Spinner sizes should be equivalent or smaller than Icon size
@@ -25,19 +27,28 @@ var getSpinnerSize = function getSpinnerSize(size) {
25
27
  return 12;
26
28
  }
27
29
  };
30
+ /**
31
+ * This represents a TitleBlock for a Smart Link that is currently waiting
32
+ * for a request to finish.
33
+ * This should render when a Smart Link has sent a request.
34
+ * @see TitleBlock
35
+ */
28
36
 
29
- var TitleBlockResolvingView = function TitleBlockResolvingView(props) {
30
- var _props$size = props.size,
31
- size = _props$size === void 0 ? SmartLinkSize.Medium : _props$size,
32
- testId = props.testId;
33
- var spinnerIcon = jsx(Spinner, {
37
+
38
+ var TitleBlockResolvingView = function TitleBlockResolvingView(_ref) {
39
+ var actionGroup = _ref.actionGroup,
40
+ testId = _ref.testId,
41
+ title = _ref.title,
42
+ blockProps = _objectWithoutProperties(_ref, _excluded);
43
+
44
+ var _blockProps$size = blockProps.size,
45
+ size = _blockProps$size === void 0 ? SmartLinkSize.Medium : _blockProps$size;
46
+ return jsx(Block, _extends({}, blockProps, {
47
+ testId: "".concat(testId, "-resolving-view")
48
+ }), jsx(Spinner, {
34
49
  size: getSpinnerSize(size),
35
50
  testId: "".concat(testId, "-resolving-spinner")
36
- });
37
- return jsx(BaseTitleBlockComponent, _extends({}, props, {
38
- blockIcon: spinnerIcon,
39
- blockTestIdPostfix: "resolving-view"
40
- }));
51
+ }), title, actionGroup);
41
52
  };
42
53
 
43
54
  export default TitleBlockResolvingView;
@@ -62,6 +62,11 @@ var renderChildren = function renderChildren(children, containerSize, containerT
62
62
  }
63
63
  });
64
64
  };
65
+ /**
66
+ * This represents the container in which all Flexible UI Smart Links are rendered.
67
+ * @see Block
68
+ */
69
+
65
70
 
66
71
  var Container = function Container(_ref) {
67
72
  var children = _ref.children,
@@ -22,12 +22,21 @@ var getStyles = function getStyles(size) {
22
22
  return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n li {\n span,\n svg {\n max-height: 1.25rem;\n max-width: 1.25rem;\n }\n }\n "])));
23
23
  }
24
24
  };
25
+ /**
26
+ * An element that displays a group of avatars.
27
+ * @public
28
+ * @param {AvatarGroupProps} AvatarGroupProps - The props necessary for the AvatarGroup.
29
+ * @see AuthorGroup
30
+ * @see CollaboratorGroup
31
+ */
32
+
25
33
 
26
34
  var AvatarGroup = function AvatarGroup(_ref) {
27
35
  var _ref$items = _ref.items,
28
36
  items = _ref$items === void 0 ? [] : _ref$items,
29
37
  _ref$maxCount = _ref.maxCount,
30
38
  maxCount = _ref$maxCount === void 0 ? MAX_COUNT : _ref$maxCount,
39
+ overrideCss = _ref.overrideCss,
31
40
  _ref$size = _ref.size,
32
41
  size = _ref$size === void 0 ? SmartLinkSize.Medium : _ref$size,
33
42
  _ref$testId = _ref.testId,
@@ -38,7 +47,9 @@ var AvatarGroup = function AvatarGroup(_ref) {
38
47
  }
39
48
 
40
49
  return jsx("span", {
41
- css: getStyles(size)
50
+ css: [getStyles(size), overrideCss],
51
+ "data-smart-element-avatar-group": true,
52
+ "data-testid": testId
42
53
  }, jsx(AtlaskitAvatarGroup, {
43
54
  maxCount: maxCount,
44
55
  appearance: "stack",
@@ -47,13 +47,28 @@ var renderImageIcon = function renderImageIcon(url, testId) {
47
47
  });
48
48
  }
49
49
  };
50
+ /**
51
+ * An element that displays some text with an associated icon.
52
+ * @public
53
+ * @param {BadgeProps} BadgeProps - The props necessary for the Badge.
54
+ * @see CommentCount
55
+ * @see ViewCount
56
+ * @see ReactCount
57
+ * @see VoteCount
58
+ * @see SubscriberCount
59
+ * @see Priority
60
+ * @see ProgrammingLanguage
61
+ * @see Provider
62
+ */
63
+
50
64
 
51
65
  var Badge = function Badge(_ref) {
52
66
  var icon = _ref.icon,
53
- url = _ref.url,
54
67
  label = _ref.label,
68
+ overrideCss = _ref.overrideCss,
55
69
  _ref$testId = _ref.testId,
56
- testId = _ref$testId === void 0 ? 'smart-element-badge' : _ref$testId;
70
+ testId = _ref$testId === void 0 ? 'smart-element-badge' : _ref$testId,
71
+ url = _ref.url;
57
72
  var formattedMessageOrLabel = getFormattedMessageFromIcon(icon) || label;
58
73
  var badgeIcon = renderAtlaskitIcon(icon, testId) || renderImageIcon(url, testId);
59
74
 
@@ -62,7 +77,7 @@ var Badge = function Badge(_ref) {
62
77
  }
63
78
 
64
79
  return jsx("div", {
65
- css: badgeStyles,
80
+ css: [badgeStyles, overrideCss],
66
81
  "data-fit-to-content": true,
67
82
  "data-smart-element-badge": true,
68
83
  "data-testid": testId
@@ -16,9 +16,17 @@ var typeToDescriptorMap = {
16
16
  created: messages.created_on,
17
17
  modified: messages.modified_on
18
18
  };
19
+ /**
20
+ * An element that displays an ISO Timestamp in text.
21
+ * @public
22
+ * @param {DateTimeProps} DateTimeProps - The props necessary for the DateTime element.
23
+ * @see CreatedOn
24
+ * @see ModifiedOn
25
+ */
19
26
 
20
27
  var DateTime = function DateTime(_ref) {
21
28
  var date = _ref.date,
29
+ overrideCss = _ref.overrideCss,
22
30
  type = _ref.type,
23
31
  _ref$testId = _ref.testId,
24
32
  testId = _ref$testId === void 0 ? 'smart-element-date-time' : _ref$testId;
@@ -38,7 +46,7 @@ var DateTime = function DateTime(_ref) {
38
46
  numeric: 'auto'
39
47
  });
40
48
  return jsx("span", {
41
- css: styles,
49
+ css: [styles, overrideCss],
42
50
  "data-separator": true,
43
51
  "data-smart-element-date-time": true,
44
52
  "data-testid": testId
@@ -73,6 +73,13 @@ var renderImageIcon = function renderImageIcon(defaultIcon, icon, url, testId) {
73
73
  });
74
74
  }
75
75
  };
76
+ /**
77
+ * An element that displays an Icon or favicon.
78
+ * @public
79
+ * @param {IconProps} IconProps - The props necessary for the Icon element.
80
+ * @see LinkIcon
81
+ */
82
+
76
83
 
77
84
  var Icon = function Icon(_ref) {
78
85
  var icon = _ref.icon,
@@ -80,6 +87,7 @@ var Icon = function Icon(_ref) {
80
87
  label = _ref$label === void 0 ? 'Link' : _ref$label,
81
88
  _ref$position = _ref.position,
82
89
  position = _ref$position === void 0 ? SmartLinkPosition.Top : _ref$position,
90
+ overrideCss = _ref.overrideCss,
83
91
  render = _ref.render,
84
92
  _ref$size = _ref.size,
85
93
  size = _ref$size === void 0 ? SmartLinkSize.Medium : _ref$size,
@@ -94,7 +102,7 @@ var Icon = function Icon(_ref) {
94
102
  var styles = getIconStyles(size, position, width);
95
103
  var renderStyles = render ? getCustomRenderStyles(width) : undefined;
96
104
  return jsx("div", {
97
- css: [styles, renderStyles],
105
+ css: [styles, renderStyles, overrideCss],
98
106
  "data-fit-to-content": true,
99
107
  "data-smart-element-icon": true,
100
108
  "data-testid": testId
@@ -3,22 +3,118 @@ import { ElementName } from '../../../../constants';
3
3
  // Attention: Keep the export name and element name the same.
4
4
  // This will help reducing the code for mapping elements inside
5
5
  // createElement and renderElementItems
6
+
7
+ /**
8
+ * Creates an AvatarGroup element using the data from AuthorGroup in the Flexible UI Context.
9
+ * @see AvatarGroup
10
+ */
6
11
  export var AuthorGroup = createElement(ElementName.AuthorGroup);
12
+ /**
13
+ * Creates an AvatarGroup element using the data from CollaboratorGroup in the Flexible UI Context.
14
+ * @see AvatarGroup
15
+ */
16
+
7
17
  export var CollaboratorGroup = createElement(ElementName.CollaboratorGroup);
18
+ /**
19
+ * Creates a CommentCount Badge element using the data from CommentCount in the Flexible UI Context.
20
+ * @see Badge
21
+ */
22
+
8
23
  export var CommentCount = createElement(ElementName.CommentCount);
24
+ /**
25
+ * Creates a ViewCount Badge element using the data from ViewCount in the Flexible UI Context.
26
+ * @see Badge
27
+ */
28
+
9
29
  export var ViewCount = createElement(ElementName.ViewCount);
30
+ /**
31
+ * Creates a ReactCount Badge element using the data from ReactCount in the Flexible UI Context.
32
+ * @see Badge
33
+ */
34
+
10
35
  export var ReactCount = createElement(ElementName.ReactCount);
36
+ /**
37
+ * Creates a VoteCount Badge element using the data from VoteCount in the Flexible UI Context.
38
+ * @see Badge
39
+ */
40
+
11
41
  export var VoteCount = createElement(ElementName.VoteCount);
42
+ /**
43
+ * Creates a CreatedBy text element using the data from CreatedBy in the Flexible UI Context.
44
+ * @see Text
45
+ */
46
+
12
47
  export var CreatedBy = createElement(ElementName.CreatedBy);
48
+ /**
49
+ * Creates a CreatedOn DateTime element using the data from CreatedOn in the Flexible UI Context.
50
+ * @see DateTime
51
+ */
52
+
13
53
  export var CreatedOn = createElement(ElementName.CreatedOn);
54
+ /**
55
+ * Creates a LinkIcon Icon element using the data from LinkIcon in the Flexible UI Context.
56
+ * @see Icon
57
+ */
58
+
14
59
  export var LinkIcon = createElement(ElementName.LinkIcon);
60
+ /**
61
+ * Creates a ModifiedBy Text element using the data from ModifiedBy in the Flexible UI Context.
62
+ * @see Text
63
+ */
64
+
15
65
  export var ModifiedBy = createElement(ElementName.ModifiedBy);
66
+ /**
67
+ * Creates a ModifiedOn DateTime element using the data from ModifiedOn in the Flexible UI Context.
68
+ * @see DateTime
69
+ */
70
+
16
71
  export var ModifiedOn = createElement(ElementName.ModifiedOn);
72
+ /**
73
+ * Creates a Preview element using the data from Preview in the Flexible UI Context.
74
+ * @see Preview
75
+ */
76
+
17
77
  export var Preview = createElement(ElementName.Preview);
78
+ /**
79
+ * Creates a Priority Badge element using the data from Priority in the Flexible UI Context.
80
+ * @see Badge
81
+ */
82
+
18
83
  export var Priority = createElement(ElementName.Priority);
84
+ /**
85
+ * Creates a ProgrammingLanguage Badge element using the data from ProgrammingLanguage in the Flexible UI Context.
86
+ * @see Badge
87
+ */
88
+
19
89
  export var ProgrammingLanguage = createElement(ElementName.ProgrammingLanguage);
90
+ /**
91
+ * Creates a Snippet element using the data from Snippet in the Flexible UI Context.
92
+ * @see Text
93
+ */
94
+
20
95
  export var Snippet = createElement(ElementName.Snippet);
96
+ /**
97
+ * Creates a State Lozenge element using the data from State in the Flexible UI Context.
98
+ * @see Lozenge
99
+ */
100
+
21
101
  export var State = createElement(ElementName.State);
102
+ /**
103
+ * Creates a SubscriberCount Badge element using the data from SubscriberCount in the Flexible UI Context.
104
+ * @see Badge
105
+ */
106
+
22
107
  export var SubscriberCount = createElement(ElementName.SubscriberCount);
108
+ /**
109
+ * Creates a Title Link element using the data from Title in the Flexible UI Context.
110
+ * This represents the main link text within the Smart Link.
111
+ * @see Link
112
+ */
113
+
23
114
  export var Title = createElement(ElementName.Title);
115
+ /**
116
+ * Creates a Provider Badge element using the data from Provider in the Flexible UI Context.
117
+ * @see Badge
118
+ */
119
+
24
120
  export var Provider = createElement(ElementName.Provider);
@@ -41,10 +41,18 @@ var getMaxLines = function getMaxLines(maxLines) {
41
41
 
42
42
  return maxLines;
43
43
  };
44
+ /**
45
+ * An element that represent.
46
+ * @public
47
+ * @param {LinkProps} LinkProps - The props necessary for the Icon element.
48
+ * @see LinkIcon
49
+ */
50
+
44
51
 
45
52
  var Link = function Link(_ref) {
46
53
  var _ref$maxLines = _ref.maxLines,
47
54
  maxLines = _ref$maxLines === void 0 ? DEFAULT_MAX_LINES : _ref$maxLines,
55
+ overrideCss = _ref.overrideCss,
48
56
  _ref$size = _ref.size,
49
57
  size = _ref$size === void 0 ? SmartLinkSize.Medium : _ref$size,
50
58
  _ref$testId = _ref.testId,
@@ -62,7 +70,7 @@ var Link = function Link(_ref) {
62
70
  testId: "".concat(testId, "-tooltip"),
63
71
  tag: "span"
64
72
  }, jsx("a", {
65
- css: getAnchorStyles(size, theme, getMaxLines(maxLines)),
73
+ css: [getAnchorStyles(size, theme, getMaxLines(maxLines)), overrideCss],
66
74
  "data-smart-element-link": true,
67
75
  "data-testid": testId,
68
76
  onClick: onClick,
@@ -7,10 +7,17 @@ import React from 'react';
7
7
  import { css, jsx } from '@emotion/core';
8
8
  import AtlaskitLozenge from '@atlaskit/lozenge';
9
9
  var styles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n line-height: inherit;\n"])));
10
+ /**
11
+ * An element that displays a Lozenge.
12
+ * @public
13
+ * @param {LozengeProps} LozengeProps - The props necessary for the Lozenge element.
14
+ * @see State
15
+ */
10
16
 
11
17
  var Lozenge = function Lozenge(_ref) {
12
18
  var _ref$appearance = _ref.appearance,
13
19
  appearance = _ref$appearance === void 0 ? 'default' : _ref$appearance,
20
+ overrideCss = _ref.overrideCss,
14
21
  text = _ref.text,
15
22
  _ref$testId = _ref.testId,
16
23
  testId = _ref$testId === void 0 ? 'smart-element-lozenge' : _ref$testId;
@@ -20,12 +27,13 @@ var Lozenge = function Lozenge(_ref) {
20
27
  }
21
28
 
22
29
  return jsx("span", {
23
- css: styles,
30
+ css: [styles, overrideCss],
24
31
  "data-fit-to-content": true,
25
- "data-smart-element-lozenge": true
32
+ "data-smart-element-lozenge": true,
33
+ "data-testid": testId
26
34
  }, jsx(AtlaskitLozenge, {
27
35
  appearance: appearance,
28
- testId: testId
36
+ testId: "".concat(testId, "-lozenge")
29
37
  }, text));
30
38
  };
31
39
 
@@ -18,9 +18,16 @@ import ImageIcon from '../../common/image-icon';
18
18
  * contents within the element's box.
19
19
  */
20
20
  var styles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\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"])));
21
+ /**
22
+ * An element that displays a Media.
23
+ * @public
24
+ * @param {MediaProps} MediaProps - The props necessary for the Media element.
25
+ * @see Preview
26
+ */
21
27
 
22
28
  var Media = function Media(_ref) {
23
- var _ref$testId = _ref.testId,
29
+ var overrideCss = _ref.overrideCss,
30
+ _ref$testId = _ref.testId,
24
31
  testId = _ref$testId === void 0 ? 'smart-element-media' : _ref$testId,
25
32
  type = _ref.type,
26
33
  url = _ref.url;
@@ -30,7 +37,7 @@ var Media = function Media(_ref) {
30
37
  }
31
38
 
32
39
  return jsx("div", {
33
- css: styles,
40
+ css: [styles, overrideCss],
34
41
  "data-smart-element-media": true,
35
42
  "data-testid": testId
36
43
  }, jsx(ImageIcon, {
@@ -8,17 +8,23 @@ import { css, jsx } from '@emotion/core';
8
8
  import { getFormattedMessage, getTruncateStyles } from '../../utils';
9
9
  import { tokens } from '../../../../../utils/token';
10
10
 
11
- var getStyles = function getStyles(maxLines, color) {
12
- return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 0.75rem;\n line-height: 1rem;\n ", "\n"])), color, getTruncateStyles(maxLines));
11
+ var getStyles = function getStyles(maxLines) {
12
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 0.75rem;\n line-height: 1rem;\n ", "\n"])), tokens.text, getTruncateStyles(maxLines));
13
13
  };
14
+ /**
15
+ * An element that displays some Text.
16
+ * @public
17
+ * @param {TextProps} TextProps - The props necessary for the Text element.
18
+ * @see Title
19
+ */
20
+
14
21
 
15
22
  var Text = function Text(_ref) {
16
- var _ref$color = _ref.color,
17
- color = _ref$color === void 0 ? tokens.text : _ref$color,
18
- content = _ref.content,
23
+ var content = _ref.content,
19
24
  _ref$maxLines = _ref.maxLines,
20
25
  maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
21
26
  message = _ref.message,
27
+ overrideCss = _ref.overrideCss,
22
28
  _ref$testId = _ref.testId,
23
29
  testId = _ref$testId === void 0 ? 'smart-element-text' : _ref$testId;
24
30
 
@@ -27,7 +33,7 @@ var Text = function Text(_ref) {
27
33
  }
28
34
 
29
35
  return jsx("span", {
30
- css: getStyles(maxLines, color),
36
+ css: [getStyles(maxLines), overrideCss],
31
37
  "data-separator": true,
32
38
  "data-smart-element-text": true,
33
39
  "data-testid": testId
@@ -1,9 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
3
4
 
4
- var _elementMappings;
5
+ var _templateObject, _elementMappings;
5
6
 
6
7
  import React, { useContext } from 'react';
8
+ import { css } from '@emotion/core';
7
9
  import { ElementName, IconType } from '../../../../constants';
8
10
  import Icon from './icon';
9
11
  import Link from './link';
@@ -59,8 +61,8 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_elementMappings,
59
61
  }), _defineProperty(_elementMappings, ElementName.Snippet, {
60
62
  component: Text,
61
63
  props: {
62
- color: tokens.snippet,
63
- maxLines: SNIPPET_DEFAULT_MAX_LINES
64
+ maxLines: SNIPPET_DEFAULT_MAX_LINES,
65
+ overrideCss: css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n "])), tokens.snippet)
64
66
  }
65
67
  }), _defineProperty(_elementMappings, ElementName.State, {
66
68
  component: Lozenge
@@ -3,6 +3,12 @@ import React from 'react';
3
3
  import Container from './components/container';
4
4
  import { FlexibleUiContext } from '../../state/flexible-ui-context';
5
5
  import { getContextByStatus, getRetryOptions } from './utils';
6
+ /**
7
+ * This represents a Flexible Card: a link represented by a card with metadata.
8
+ * This is the container in which all Flexible UI Blocks and Elements exist.
9
+ * Note: TitleBlock is mandatory for a Flexible Card to render.
10
+ * @see Container
11
+ */
6
12
 
7
13
  var FlexibleCard = function FlexibleCard(_ref) {
8
14
  var cardState = _ref.cardState,