@atlaskit/smart-card 17.2.0 → 17.3.2

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 (58) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/cjs/constants.js +15 -1
  3. package/dist/cjs/extractors/flexible/index.js +2 -0
  4. package/dist/cjs/version.json +1 -1
  5. package/dist/cjs/view/FlexibleCard/components/actions/{delete-action → action}/index.js +40 -25
  6. package/dist/cjs/view/FlexibleCard/components/actions/{types.js → action/types.js} +0 -0
  7. package/dist/cjs/view/FlexibleCard/components/actions/index.js +3 -1
  8. package/dist/cjs/view/FlexibleCard/components/actions/utils.js +34 -6
  9. package/dist/cjs/view/FlexibleCard/components/blocks/action-group/index.js +1 -1
  10. package/dist/cjs/view/FlexibleCard/components/blocks/metadata-block/index.js +17 -3
  11. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +27 -7
  12. package/dist/cjs/view/FlexibleCard/components/elements/avatar-group/index.js +24 -2
  13. package/dist/cjs/view/FlexibleCard/components/elements/index.js +3 -1
  14. package/dist/cjs/view/FlexibleCard/components/elements/text/index.js +6 -2
  15. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +62 -39
  16. package/dist/es2019/constants.js +14 -1
  17. package/dist/es2019/extractors/flexible/index.js +3 -1
  18. package/dist/es2019/version.json +1 -1
  19. package/dist/es2019/view/FlexibleCard/components/actions/{delete-action → action}/index.js +31 -15
  20. package/dist/es2019/view/FlexibleCard/components/actions/{types.js → action/types.js} +0 -0
  21. package/dist/es2019/view/FlexibleCard/components/actions/index.js +5 -3
  22. package/dist/es2019/view/FlexibleCard/components/actions/utils.js +27 -4
  23. package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +1 -1
  24. package/dist/es2019/view/FlexibleCard/components/blocks/metadata-block/index.js +17 -3
  25. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +37 -6
  26. package/dist/es2019/view/FlexibleCard/components/elements/avatar-group/index.js +28 -2
  27. package/dist/es2019/view/FlexibleCard/components/elements/index.js +1 -0
  28. package/dist/es2019/view/FlexibleCard/components/elements/text/index.js +5 -3
  29. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +63 -37
  30. package/dist/esm/constants.js +14 -1
  31. package/dist/esm/extractors/flexible/index.js +3 -1
  32. package/dist/esm/version.json +1 -1
  33. package/dist/esm/view/FlexibleCard/components/actions/action/index.js +82 -0
  34. package/dist/esm/view/FlexibleCard/components/actions/{types.js → action/types.js} +0 -0
  35. package/dist/esm/view/FlexibleCard/components/actions/index.js +5 -3
  36. package/dist/esm/view/FlexibleCard/components/actions/utils.js +26 -4
  37. package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +1 -1
  38. package/dist/esm/view/FlexibleCard/components/blocks/metadata-block/index.js +17 -3
  39. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +25 -7
  40. package/dist/esm/view/FlexibleCard/components/elements/avatar-group/index.js +24 -2
  41. package/dist/esm/view/FlexibleCard/components/elements/index.js +1 -0
  42. package/dist/esm/view/FlexibleCard/components/elements/text/index.js +7 -2
  43. package/dist/esm/view/FlexibleCard/components/elements/utils.js +62 -39
  44. package/dist/types/constants.d.ts +1 -0
  45. package/dist/types/state/flexible-ui-context/types.d.ts +3 -2
  46. package/dist/types/view/FlexibleCard/components/actions/action/index.d.ts +5 -0
  47. package/dist/types/view/FlexibleCard/components/actions/action/types.d.ts +18 -0
  48. package/dist/types/view/FlexibleCard/components/actions/index.d.ts +1 -1
  49. package/dist/types/view/FlexibleCard/components/actions/utils.d.ts +2 -1
  50. package/dist/types/view/FlexibleCard/components/blocks/utils.d.ts +4 -2
  51. package/dist/types/view/FlexibleCard/components/elements/avatar-group/index.d.ts +1 -0
  52. package/dist/types/view/FlexibleCard/components/elements/avatar-group/types.d.ts +1 -2
  53. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +1 -0
  54. package/dist/types/view/FlexibleCard/components/elements/text/types.d.ts +1 -0
  55. package/package.json +1 -1
  56. package/dist/esm/view/FlexibleCard/components/actions/delete-action/index.js +0 -64
  57. package/dist/types/view/FlexibleCard/components/actions/delete-action/index.d.ts +0 -5
  58. package/dist/types/view/FlexibleCard/components/actions/types.d.ts +0 -10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 17.3.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [`02ed34221ef`](https://bitbucket.org/atlassian/atlassian-frontend/commits/02ed34221ef) - Flexible UI: Add Snippet element
8
+
9
+ ## 17.3.1
10
+
11
+ ### Patch Changes
12
+
13
+ - [`66dc86e0331`](https://bitbucket.org/atlassian/atlassian-frontend/commits/66dc86e0331) - Flexible UI: Check for null element
14
+
15
+ ## 17.3.0
16
+
17
+ ### Minor Changes
18
+
19
+ - [`dab29fc6697`](https://bitbucket.org/atlassian/atlassian-frontend/commits/dab29fc6697) - [ux] Flexible UI: AvatarGroup sizing updated for small and medium size
20
+
21
+ ### Patch Changes
22
+
23
+ - [`25408fac413`](https://bitbucket.org/atlassian/atlassian-frontend/commits/25408fac413) - Flexible UI: Add MetadataBlock example
24
+
25
+ ## 17.2.1
26
+
27
+ ### Patch Changes
28
+
29
+ - [`1d701660954`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1d701660954) - Refactored deleteAction into a re-usable action component
30
+
3
31
  ## 17.2.0
4
32
 
5
33
  ### Minor Changes
@@ -60,7 +60,20 @@ exports.SmartLinkTheme = SmartLinkTheme;
60
60
  SmartLinkTheme["Link"] = "link";
61
61
  })(SmartLinkTheme || (exports.SmartLinkTheme = SmartLinkTheme = {}));
62
62
 
63
- var SmartLinkWidth;
63
+ var SmartLinkWidth; // When adding an element...
64
+ // 1) Create base element if it doesn't already existed.
65
+ // Base element are inside src/view/FlexibleCard/components/elements.
66
+ // E.g. Badge,DateTime, Icon, Lozenge, etc.
67
+ // 2) Update FlexibleUiContext with the new prop for data representing
68
+ // the element, preferably with the same name as the element itself.
69
+ // (src/state/flexible-ui-context/types.ts)
70
+ // 3) Update Flexible UI extractor (src/extractors/flexible/index.ts)
71
+ // 4) Set base element and data mapping.
72
+ // (src/view/FlexibleCard/components/elements/utils.tsx)
73
+ // 5) Create element. (src/view/FlexibleCard/components/elements/index.ts)
74
+ // 6) Update element ElementDisplaySchema for inline/block display
75
+ // (src/view/FlexibleCard/components/blocks/utils.tsx)
76
+
64
77
  exports.SmartLinkWidth = SmartLinkWidth;
65
78
 
66
79
  (function (SmartLinkWidth) {
@@ -82,6 +95,7 @@ exports.ElementName = ElementName;
82
95
  ElementName["ModifiedOn"] = "ModifiedOn";
83
96
  ElementName["Priority"] = "Priority";
84
97
  ElementName["ProgrammingLanguage"] = "ProgrammingLanguage";
98
+ ElementName["Snippet"] = "Snippet";
85
99
  ElementName["State"] = "State";
86
100
  ElementName["SubscriberCount"] = "SubscriberCount";
87
101
  ElementName["Title"] = "Title";
@@ -43,6 +43,8 @@ var extractFlexibleUiContext = function extractFlexibleUiContext(response, rende
43
43
  modifiedOn: (0, _extractDateUpdated.extractDateUpdated)(data),
44
44
  priority: (0, _extractPriority.default)(data),
45
45
  programmingLanguage: (0, _utils.extractProgrammingLanguage)(data),
46
+ snippet: (0, _primitives.extractSummary)(data) || undefined,
47
+ // Explicitly set here to remove an empty string
46
48
  state: (0, _lozenge.extractLozenge)(data),
47
49
  subscriberCount: (0, _utils.extractSubscriberCount)(data),
48
50
  title: (0, _primitives.extractTitle)(data) || url,
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "17.2.0",
3
+ "version": "17.3.2",
4
4
  "sideEffects": false
5
5
  }
@@ -11,22 +11,16 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/hel
11
11
 
12
12
  var _react = _interopRequireDefault(require("react"));
13
13
 
14
- var _reactIntlNext = require("react-intl-next");
15
-
16
14
  var _core = require("@emotion/core");
17
15
 
18
16
  var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
19
17
 
20
- var _cross = _interopRequireDefault(require("@atlaskit/icon/glyph/cross"));
21
-
22
18
  var _constants = require("../../../../../constants");
23
19
 
24
20
  var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
25
21
 
26
22
  var _utils = require("../../utils");
27
23
 
28
- var _messages = require("../../../../../messages");
29
-
30
24
  var _token = require("../../../../../utils/token");
31
25
 
32
26
  var _utils2 = require("../../../../../utils");
@@ -46,38 +40,59 @@ var getWidth = function getWidth(size) {
46
40
  }
47
41
  };
48
42
 
49
- var getStyles = function getStyles(size) {
43
+ var getIconStyles = function getIconStyles(size) {
50
44
  return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n ", ";\n"])), _token.tokens.actionIcon, (0, _utils.getIconSizeStyles)(getWidth(size)));
51
45
  };
52
46
 
53
- var DeleteAction = function DeleteAction(_ref) {
54
- var _ref$appearance = _ref.appearance,
55
- appearance = _ref$appearance === void 0 ? 'subtle' : _ref$appearance,
56
- content = _ref.content,
57
- onClick = _ref.onClick,
58
- _ref$size = _ref.size,
59
- size = _ref$size === void 0 ? _constants.SmartLinkSize.Medium : _ref$size,
60
- _ref$testId = _ref.testId,
61
- testId = _ref$testId === void 0 ? 'smart-action-delete-action' : _ref$testId;
47
+ var ActionIcon = function ActionIcon(_ref) {
48
+ var size = _ref.size,
49
+ testId = _ref.testId,
50
+ icon = _ref.icon;
51
+ return (0, _core.jsx)("span", {
52
+ css: getIconStyles(size),
53
+ "data-testid": "".concat(testId, "-icon")
54
+ }, icon);
55
+ };
56
+
57
+ var Action = function Action(_ref2) {
58
+ var _ref2$appearance = _ref2.appearance,
59
+ appearance = _ref2$appearance === void 0 ? 'subtle' : _ref2$appearance,
60
+ content = _ref2.content,
61
+ onClick = _ref2.onClick,
62
+ _ref2$size = _ref2.size,
63
+ size = _ref2$size === void 0 ? _constants.SmartLinkSize.Medium : _ref2$size,
64
+ _ref2$testId = _ref2.testId,
65
+ testId = _ref2$testId === void 0 ? 'smart-action' : _ref2$testId,
66
+ icon = _ref2.icon,
67
+ _ref2$iconPosition = _ref2.iconPosition,
68
+ iconPosition = _ref2$iconPosition === void 0 ? 'before' : _ref2$iconPosition,
69
+ tooltipMessage = _ref2.tooltipMessage;
62
70
 
63
71
  if (!onClick) {
64
72
  return null;
65
73
  }
66
74
 
75
+ var iconBefore = iconPosition === 'before' ? (0, _core.jsx)(ActionIcon, {
76
+ size: size,
77
+ testId: testId,
78
+ icon: icon
79
+ }) : undefined;
80
+ var iconAfter = iconPosition === 'after' ? (0, _core.jsx)(ActionIcon, {
81
+ size: size,
82
+ testId: testId,
83
+ icon: icon
84
+ }) : undefined;
67
85
  return (0, _core.jsx)(_tooltip.default, {
68
- content: (0, _core.jsx)(_reactIntlNext.FormattedMessage, _messages.messages.delete)
86
+ content: tooltipMessage
69
87
  }, (0, _core.jsx)(_customThemeButton.default, {
70
88
  spacing: "none",
71
89
  appearance: appearance,
72
90
  testId: testId,
73
- onClick: (0, _utils2.handleOnClick)(onClick)
74
- }, content || (0, _core.jsx)("span", {
75
- css: getStyles(size),
76
- "data-testid": "".concat(testId, "-icon")
77
- }, (0, _core.jsx)(_cross.default, {
78
- label: "Delete"
79
- }))));
91
+ onClick: (0, _utils2.handleOnClick)(onClick),
92
+ iconBefore: iconBefore,
93
+ iconAfter: iconAfter
94
+ }, content));
80
95
  };
81
96
 
82
- var _default = DeleteAction;
97
+ var _default = Action;
83
98
  exports.default = _default;
@@ -12,5 +12,7 @@ var _utils = require("./utils");
12
12
  // Attention: Keep the export name and action name the same.
13
13
  // This will help reducing the code for mapping action inside
14
14
  // createAction and renderActionItems
15
- var DeleteAction = (0, _utils.createAction)(_constants.ActionName.DeleteAction);
15
+ // UIActions infer that you do not need to get any data from the context.
16
+ // DataActions infer that the action depends on the data from the context.
17
+ var DeleteAction = (0, _utils.createUIAction)(_constants.ActionName.DeleteAction);
16
18
  exports.DeleteAction = DeleteAction;
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.createAction = void 0;
10
+ exports.createUIAction = exports.createDataAction = void 0;
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
@@ -19,14 +19,27 @@ var _flexibleUiContext = require("../../../../state/flexible-ui-context");
19
19
 
20
20
  var _react = _interopRequireWildcard(require("react"));
21
21
 
22
- var _deleteAction = _interopRequireDefault(require("./delete-action"));
22
+ var _action = _interopRequireDefault(require("./action"));
23
+
24
+ var _reactIntlNext = require("react-intl-next");
25
+
26
+ var _messages = require("../../../../messages");
27
+
28
+ var _cross = _interopRequireDefault(require("@atlaskit/icon/glyph/cross"));
23
29
 
24
30
  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); }
25
31
 
26
32
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
33
 
28
34
  var actionMappings = (0, _defineProperty2.default)({}, _constants.ActionName.DeleteAction, {
29
- component: _deleteAction.default
35
+ component: _action.default,
36
+ props: {
37
+ testId: 'smart-action-delete-action',
38
+ icon: /*#__PURE__*/_react.default.createElement(_cross.default, {
39
+ label: "Delete"
40
+ }),
41
+ toolTipMessage: /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _messages.messages.delete)
42
+ }
30
43
  });
31
44
 
32
45
  var getContextKey = function getContextKey(name) {
@@ -43,13 +56,12 @@ var getActionData = function getActionData(actionName, contextKey, context) {
43
56
  var data = context[contextKey];
44
57
 
45
58
  switch (actionName) {
46
- case _constants.ActionName.DeleteAction:
47
59
  default:
48
60
  return data;
49
61
  }
50
62
  };
51
63
 
52
- var createAction = function createAction(name) {
64
+ var createDataAction = function createDataAction(name) {
53
65
  var _ref = actionMappings[name] || {},
54
66
  BaseAction = _ref.component,
55
67
  props = _ref.props;
@@ -67,4 +79,20 @@ var createAction = function createAction(name) {
67
79
  };
68
80
  };
69
81
 
70
- exports.createAction = createAction;
82
+ exports.createDataAction = createDataAction;
83
+
84
+ var createUIAction = function createUIAction(name) {
85
+ var _ref2 = actionMappings[name] || {},
86
+ BaseAction = _ref2.component,
87
+ props = _ref2.props;
88
+
89
+ if (!BaseAction) {
90
+ throw Error("Action ".concat(name, " does not exist."));
91
+ }
92
+
93
+ return function (overrides) {
94
+ return /*#__PURE__*/_react.default.createElement(BaseAction, (0, _extends2.default)({}, props, overrides));
95
+ };
96
+ };
97
+
98
+ exports.createUIAction = createUIAction;
@@ -19,7 +19,7 @@ var _constants = require("../../../../../constants");
19
19
 
20
20
  var _templateObject;
21
21
 
22
- var styles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: inline-flex;\n line-height: 0;\n"])));
22
+ var styles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: inline-flex;\n line-height: 1rem;\n"])));
23
23
 
24
24
  var ActionGroup = function ActionGroup(_ref) {
25
25
  var _ref$items = _ref.items,
@@ -37,18 +37,32 @@ var getElementGroupStyles = function getElementGroupStyles(size, maxLines) {
37
37
  // MetadataBlock allows metadata elements to be displayed in
38
38
  // multiple lines, with maximum of 2 lines.
39
39
  // a) We need the height of the line to be equal on both left and right
40
- // sides so they line up nicely. 1.75 is the The maximum height of
41
- // all elements in specific size. This height belongs to AvatarGroup.
40
+ // sides so they line up nicely.
42
41
  // b) There is no way to truncate non-text elements nicely. Here
43
42
  // it's fix max height of the element group so that anything that is
44
43
  // overflown will not be visible.
45
- var lineHeight = 1.75;
44
+ var lineHeight = getLineHeight(size);
46
45
  var gap = (0, _utils.getGapSize)(size);
47
46
  var gapHeight = gap * (maxLines - 1);
48
47
  var height = lineHeight * maxLines + gapHeight;
49
48
  return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n flex-wrap: wrap;\n line-height: ", "rem;\n max-height: ", "rem;\n > span,\n > div {\n min-height: ", "rem;\n max-height: ", "rem;\n line-height: ", "rem;\n }\n "])), lineHeight, height, lineHeight, lineHeight, lineHeight);
50
49
  };
51
50
 
51
+ var getLineHeight = function getLineHeight(size) {
52
+ // The maximum height of all elements in specific size.
53
+ // These heights belongs to AvatarGroup.
54
+ switch (size) {
55
+ case _constants.SmartLinkSize.XLarge:
56
+ case _constants.SmartLinkSize.Large:
57
+ return 1.75;
58
+
59
+ case _constants.SmartLinkSize.Medium:
60
+ case _constants.SmartLinkSize.Small:
61
+ default:
62
+ return 1.5;
63
+ }
64
+ };
65
+
52
66
  var getMaxLines = function getMaxLines(maxLines) {
53
67
  if (maxLines > MAXIMUM_MAX_LINES) {
54
68
  return DEFAULT_MAX_LINES;
@@ -7,16 +7,18 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.renderElementItems = exports.renderChildren = exports.renderActionItems = exports.getGapSize = exports.getBaseStyles = void 0;
11
-
12
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ exports.renderElementItems = exports.renderChildren = exports.renderActionItems = exports.getGapSize = exports.getBaseStyles = exports.ElementDisplaySchema = void 0;
13
11
 
14
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
13
 
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
+
16
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
17
 
18
18
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
19
19
 
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
+
20
22
  var _react = _interopRequireDefault(require("react"));
21
23
 
22
24
  var _core = require("@emotion/core");
@@ -36,12 +38,15 @@ var _elementGroup = _interopRequireDefault(require("./element-group"));
36
38
  var _excluded = ["name"],
37
39
  _excluded2 = ["name"];
38
40
 
39
- var _templateObject, _templateObject2, _templateObject3;
41
+ var _ElementDisplaySchema, _templateObject, _templateObject2, _templateObject3;
40
42
 
41
43
  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); }
42
44
 
43
45
  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; }
44
46
 
47
+ var ElementDisplaySchema = (_ElementDisplaySchema = {}, (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.AuthorGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CollaboratorGroup, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CommentCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CreatedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.CreatedOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.LinkIcon, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ModifiedBy, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ModifiedOn, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Priority, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.ProgrammingLanguage, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Snippet, ['block']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.State, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.SubscriberCount, ['inline']), (0, _defineProperty2.default)(_ElementDisplaySchema, _constants.ElementName.Title, ['inline']), _ElementDisplaySchema);
48
+ exports.ElementDisplaySchema = ElementDisplaySchema;
49
+
45
50
  var getDirectionStyles = function getDirectionStyles(direction) {
46
51
  switch (direction) {
47
52
  case _constants.SmartLinkDirection.Vertical:
@@ -82,6 +87,16 @@ var isActionGroup = function isActionGroup(node) {
82
87
  return /*#__PURE__*/_react.default.isValidElement(node) && node.type === _actionGroup.default;
83
88
  };
84
89
 
90
+ var isElementDisplayValid = function isElementDisplayValid(name, display) {
91
+ var _ElementDisplaySchema2, _ElementDisplaySchema3;
92
+
93
+ return (_ElementDisplaySchema2 = (_ElementDisplaySchema3 = ElementDisplaySchema[name]) === null || _ElementDisplaySchema3 === void 0 ? void 0 : _ElementDisplaySchema3.includes(display)) !== null && _ElementDisplaySchema2 !== void 0 ? _ElementDisplaySchema2 : false;
94
+ };
95
+
96
+ var isElementNull = function isElementNull(children) {
97
+ return Boolean(children.type() === null);
98
+ };
99
+
85
100
  var isElementOrElementGroup = function isElementOrElementGroup(node) {
86
101
  return /*#__PURE__*/_react.default.isValidElement(node) && ((0, _flexible.isFlexibleUiElement)(node) || node.type === _elementGroup.default);
87
102
  };
@@ -104,15 +119,20 @@ exports.renderChildren = renderChildren;
104
119
 
105
120
  var renderElementItems = function renderElementItems() {
106
121
  var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
122
+ var display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'inline';
107
123
  var elements = items.reduce(function (acc, curr, idx) {
108
124
  var name = curr.name,
109
125
  props = (0, _objectWithoutProperties2.default)(curr, _excluded);
110
126
  var Element = Elements[name];
111
127
 
112
- if (Element) {
113
- return [].concat((0, _toConsumableArray2.default)(acc), [/*#__PURE__*/_react.default.createElement(Element, (0, _extends2.default)({
128
+ if (Element && isElementDisplayValid(name, display)) {
129
+ var element = /*#__PURE__*/_react.default.createElement(Element, (0, _extends2.default)({
114
130
  key: idx
115
- }, props))]);
131
+ }, props));
132
+
133
+ if (!isElementNull(element)) {
134
+ return [].concat((0, _toConsumableArray2.default)(acc), [element]);
135
+ }
116
136
  }
117
137
 
118
138
  return acc;
@@ -7,14 +7,34 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+
10
12
  var _react = _interopRequireDefault(require("react"));
11
13
 
14
+ var _core = require("@emotion/core");
15
+
12
16
  var _avatarGroup = _interopRequireDefault(require("@atlaskit/avatar-group"));
13
17
 
14
18
  var _constants = require("../../../../../constants");
15
19
 
20
+ var _templateObject;
21
+
16
22
  var MAX_COUNT = 4;
17
23
 
24
+ var getStyles = function getStyles(size) {
25
+ switch (size) {
26
+ case _constants.SmartLinkSize.XLarge:
27
+ case _constants.SmartLinkSize.Large:
28
+ // Default AK small size
29
+ return;
30
+
31
+ case _constants.SmartLinkSize.Medium:
32
+ case _constants.SmartLinkSize.Small:
33
+ default:
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
+ }
36
+ };
37
+
18
38
  var AvatarGroup = function AvatarGroup(_ref) {
19
39
  var _ref$items = _ref.items,
20
40
  items = _ref$items === void 0 ? [] : _ref$items,
@@ -29,13 +49,15 @@ var AvatarGroup = function AvatarGroup(_ref) {
29
49
  return null;
30
50
  }
31
51
 
32
- return /*#__PURE__*/_react.default.createElement(_avatarGroup.default, {
52
+ return (0, _core.jsx)("span", {
53
+ css: getStyles(size)
54
+ }, (0, _core.jsx)(_avatarGroup.default, {
33
55
  maxCount: maxCount,
34
56
  appearance: "stack",
35
57
  size: "small",
36
58
  data: items,
37
59
  testId: testId
38
- });
60
+ }));
39
61
  };
40
62
 
41
63
  var _default = AvatarGroup;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Title = exports.SubscriberCount = exports.State = exports.ProgrammingLanguage = exports.Priority = exports.ModifiedOn = exports.ModifiedBy = exports.LinkIcon = exports.CreatedOn = exports.CreatedBy = exports.CommentCount = exports.CollaboratorGroup = exports.AuthorGroup = void 0;
6
+ exports.Title = exports.SubscriberCount = exports.State = exports.Snippet = exports.ProgrammingLanguage = exports.Priority = exports.ModifiedOn = exports.ModifiedBy = exports.LinkIcon = exports.CreatedOn = exports.CreatedBy = exports.CommentCount = exports.CollaboratorGroup = exports.AuthorGroup = void 0;
7
7
 
8
8
  var _utils = require("./utils");
9
9
 
@@ -32,6 +32,8 @@ var Priority = (0, _utils.createElement)(_constants.ElementName.Priority);
32
32
  exports.Priority = Priority;
33
33
  var ProgrammingLanguage = (0, _utils.createElement)(_constants.ElementName.ProgrammingLanguage);
34
34
  exports.ProgrammingLanguage = ProgrammingLanguage;
35
+ var Snippet = (0, _utils.createElement)(_constants.ElementName.Snippet);
36
+ exports.Snippet = Snippet;
35
37
  var State = (0, _utils.createElement)(_constants.ElementName.State);
36
38
  exports.State = State;
37
39
  var SubscriberCount = (0, _utils.createElement)(_constants.ElementName.SubscriberCount);
@@ -19,10 +19,14 @@ var _token = require("../../../../../utils/token");
19
19
 
20
20
  var _templateObject;
21
21
 
22
- var styles = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n font-size: 0.75rem;\n line-height: 1rem;\n ", "\n"])), _token.tokens.text, (0, _utils.getTruncateStyles)(1));
22
+ var getStyles = function getStyles(maxLines) {
23
+ return (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n color: ", ";\n font-size: 0.75rem;\n line-height: 1rem;\n ", "\n"])), _token.tokens.text, (0, _utils.getTruncateStyles)(maxLines));
24
+ };
23
25
 
24
26
  var Text = function Text(_ref) {
25
27
  var content = _ref.content,
28
+ _ref$maxLines = _ref.maxLines,
29
+ maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
26
30
  message = _ref.message,
27
31
  _ref$testId = _ref.testId,
28
32
  testId = _ref$testId === void 0 ? 'smart-element-text' : _ref$testId;
@@ -32,7 +36,7 @@ var Text = function Text(_ref) {
32
36
  }
33
37
 
34
38
  return (0, _core.jsx)("span", {
35
- css: styles,
39
+ css: getStyles(maxLines),
36
40
  "data-smart-element-text": true,
37
41
  "data-testid": testId
38
42
  }, (0, _utils.getFormattedMessage)(message) || content);
@@ -63,6 +63,11 @@ var elementMappings = (_elementMappings = {}, (0, _defineProperty2.default)(_ele
63
63
  props: {
64
64
  icon: _constants.IconType.ProgrammingLanguage
65
65
  }
66
+ }), (0, _defineProperty2.default)(_elementMappings, _constants.ElementName.Snippet, {
67
+ component: _text.default,
68
+ props: {
69
+ maxLines: 3
70
+ }
66
71
  }), (0, _defineProperty2.default)(_elementMappings, _constants.ElementName.State, {
67
72
  component: _lozenge.default
68
73
  }), (0, _defineProperty2.default)(_elementMappings, _constants.ElementName.SubscriberCount, {
@@ -84,17 +89,6 @@ var getContextKey = function getContextKey(name) {
84
89
  return name.length > 0 ? name.charAt(0).toLowerCase() + name.slice(1) : undefined;
85
90
  };
86
91
 
87
- var getFormattedMessage = function getFormattedMessage(descriptor, value) {
88
- return value ? {
89
- message: {
90
- descriptor: descriptor,
91
- values: {
92
- context: value
93
- }
94
- }
95
- } : undefined;
96
- };
97
-
98
92
  var getData = function getData(elementName, contextKey, context) {
99
93
  if (!context) {
100
94
  return undefined;
@@ -103,52 +97,81 @@ var getData = function getData(elementName, contextKey, context) {
103
97
  var data = context[contextKey];
104
98
 
105
99
  switch (elementName) {
100
+ case _constants.ElementName.AuthorGroup:
101
+ case _constants.ElementName.CollaboratorGroup:
102
+ return toAvatarGroupProps(data);
103
+
106
104
  case _constants.ElementName.CommentCount:
107
105
  case _constants.ElementName.ProgrammingLanguage:
108
106
  case _constants.ElementName.SubscriberCount:
109
- return {
110
- label: data
111
- };
112
-
113
- case _constants.ElementName.AuthorGroup:
114
- return {
115
- items: context.authorGroup
116
- };
117
-
118
- case _constants.ElementName.CollaboratorGroup:
119
- return {
120
- items: context.collaboratorGroup
121
- };
107
+ return toBadgeProps(data);
122
108
 
123
109
  case _constants.ElementName.CreatedBy:
124
- return getFormattedMessage(_messages.messages.created_by, context.createdBy);
110
+ return toFormattedTextProps(_messages.messages.created_by, context.createdBy);
111
+
112
+ case _constants.ElementName.CreatedOn:
113
+ return toDateTimeProps('created', context.createdOn);
125
114
 
126
115
  case _constants.ElementName.ModifiedBy:
127
- return getFormattedMessage(_messages.messages.modified_by, context.modifiedBy);
116
+ return toFormattedTextProps(_messages.messages.modified_by, context.modifiedBy);
128
117
 
129
118
  case _constants.ElementName.ModifiedOn:
130
- return context.modifiedOn ? {
131
- date: new Date(context.modifiedOn),
132
- type: 'modified'
133
- } : undefined;
119
+ return toDateTimeProps('modified', context.modifiedOn);
134
120
 
135
- case _constants.ElementName.CreatedOn:
136
- return context.createdOn ? {
137
- date: new Date(context.createdOn),
138
- type: 'created'
139
- } : undefined;
121
+ case _constants.ElementName.Snippet:
122
+ return toTextProps(data);
140
123
 
141
124
  case _constants.ElementName.Title:
142
- return {
143
- text: context.title,
144
- url: context.url
145
- };
125
+ return toLinkProps(context.title, context.url);
146
126
 
147
127
  default:
148
128
  return data;
149
129
  }
150
130
  };
151
131
 
132
+ var toAvatarGroupProps = function toAvatarGroupProps(items) {
133
+ return items ? {
134
+ items: items
135
+ } : undefined;
136
+ };
137
+
138
+ var toBadgeProps = function toBadgeProps(label) {
139
+ return label ? {
140
+ label: label
141
+ } : undefined;
142
+ };
143
+
144
+ var toDateTimeProps = function toDateTimeProps(type, dateString) {
145
+ return dateString ? {
146
+ date: new Date(dateString),
147
+ type: type
148
+ } : undefined;
149
+ };
150
+
151
+ var toFormattedTextProps = function toFormattedTextProps(descriptor, context) {
152
+ return context ? {
153
+ message: {
154
+ descriptor: descriptor,
155
+ values: {
156
+ context: context
157
+ }
158
+ }
159
+ } : undefined;
160
+ };
161
+
162
+ var toLinkProps = function toLinkProps(text, url) {
163
+ return text ? {
164
+ text: text,
165
+ url: url
166
+ } : undefined;
167
+ };
168
+
169
+ var toTextProps = function toTextProps(content) {
170
+ return content ? {
171
+ content: content
172
+ } : undefined;
173
+ };
174
+
152
175
  var createElement = function createElement(name) {
153
176
  var _ref = elementMappings[name] || {},
154
177
  BaseElement = _ref.component,