@atlaskit/smart-card 17.2.1 → 17.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/cjs/constants.js +16 -1
  3. package/dist/cjs/extractors/flexible/icon/extract-document-type-icon.js +28 -7
  4. package/dist/cjs/extractors/flexible/icon/extract-file-formatIcon.js +88 -22
  5. package/dist/cjs/extractors/flexible/icon/extract-jira-task-icon.js +36 -9
  6. package/dist/cjs/extractors/flexible/icon/extract-jsonld-data-icon.js +33 -9
  7. package/dist/cjs/extractors/flexible/icon/extract-provider-icon.js +20 -3
  8. package/dist/cjs/extractors/flexible/icon/extract-url-icon.js +4 -1
  9. package/dist/cjs/extractors/flexible/icon/index.js +11 -20
  10. package/dist/cjs/extractors/flexible/index.js +5 -0
  11. package/dist/cjs/version.json +1 -1
  12. package/dist/cjs/view/FlexibleCard/components/blocks/metadata-block/index.js +17 -3
  13. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +27 -7
  14. package/dist/cjs/view/FlexibleCard/components/common/atlaskit-icon/index.js +2 -0
  15. package/dist/cjs/view/FlexibleCard/components/elements/avatar-group/index.js +24 -2
  16. package/dist/cjs/view/FlexibleCard/components/elements/badge/index.js +2 -4
  17. package/dist/cjs/view/FlexibleCard/components/elements/index.js +6 -2
  18. package/dist/cjs/view/FlexibleCard/components/elements/text/index.js +6 -2
  19. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +64 -39
  20. package/dist/es2019/constants.js +15 -1
  21. package/dist/es2019/extractors/flexible/icon/extract-document-type-icon.js +28 -7
  22. package/dist/es2019/extractors/flexible/icon/extract-file-formatIcon.js +88 -22
  23. package/dist/es2019/extractors/flexible/icon/extract-jira-task-icon.js +36 -9
  24. package/dist/es2019/extractors/flexible/icon/extract-jsonld-data-icon.js +33 -9
  25. package/dist/es2019/extractors/flexible/icon/extract-provider-icon.js +19 -3
  26. package/dist/es2019/extractors/flexible/icon/extract-url-icon.js +4 -1
  27. package/dist/es2019/extractors/flexible/icon/index.js +6 -9
  28. package/dist/es2019/extractors/flexible/index.js +5 -1
  29. package/dist/es2019/version.json +1 -1
  30. package/dist/es2019/view/FlexibleCard/components/blocks/metadata-block/index.js +17 -3
  31. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +38 -6
  32. package/dist/es2019/view/FlexibleCard/components/common/atlaskit-icon/index.js +2 -0
  33. package/dist/es2019/view/FlexibleCard/components/elements/avatar-group/index.js +28 -2
  34. package/dist/es2019/view/FlexibleCard/components/elements/badge/index.js +2 -4
  35. package/dist/es2019/view/FlexibleCard/components/elements/index.js +3 -1
  36. package/dist/es2019/view/FlexibleCard/components/elements/text/index.js +5 -3
  37. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +66 -37
  38. package/dist/esm/constants.js +15 -1
  39. package/dist/esm/extractors/flexible/icon/extract-document-type-icon.js +28 -7
  40. package/dist/esm/extractors/flexible/icon/extract-file-formatIcon.js +88 -22
  41. package/dist/esm/extractors/flexible/icon/extract-jira-task-icon.js +36 -9
  42. package/dist/esm/extractors/flexible/icon/extract-jsonld-data-icon.js +33 -9
  43. package/dist/esm/extractors/flexible/icon/extract-provider-icon.js +19 -3
  44. package/dist/esm/extractors/flexible/icon/extract-url-icon.js +4 -1
  45. package/dist/esm/extractors/flexible/icon/index.js +12 -20
  46. package/dist/esm/extractors/flexible/index.js +5 -1
  47. package/dist/esm/version.json +1 -1
  48. package/dist/esm/view/FlexibleCard/components/blocks/metadata-block/index.js +17 -3
  49. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +25 -7
  50. package/dist/esm/view/FlexibleCard/components/common/atlaskit-icon/index.js +2 -0
  51. package/dist/esm/view/FlexibleCard/components/elements/avatar-group/index.js +24 -2
  52. package/dist/esm/view/FlexibleCard/components/elements/badge/index.js +2 -4
  53. package/dist/esm/view/FlexibleCard/components/elements/index.js +3 -1
  54. package/dist/esm/view/FlexibleCard/components/elements/text/index.js +7 -2
  55. package/dist/esm/view/FlexibleCard/components/elements/utils.js +64 -39
  56. package/dist/types/__fixtures__/flexible-ui-data-context.d.ts +3 -0
  57. package/dist/types/constants.d.ts +3 -1
  58. package/dist/types/extractors/flexible/icon/extract-provider-icon.d.ts +1 -1
  59. package/dist/types/extractors/flexible/icon/index.d.ts +3 -3
  60. package/dist/types/extractors/flexible/icon/types.d.ts +5 -1
  61. package/dist/types/state/flexible-ui-context/types.d.ts +4 -2
  62. package/dist/types/view/FlexibleCard/components/blocks/utils.d.ts +4 -2
  63. package/dist/types/view/FlexibleCard/components/elements/avatar-group/index.d.ts +1 -0
  64. package/dist/types/view/FlexibleCard/components/elements/avatar-group/types.d.ts +1 -2
  65. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +2 -0
  66. package/dist/types/view/FlexibleCard/components/elements/text/types.d.ts +1 -0
  67. package/package.json +1 -1
@@ -1,8 +1,28 @@
1
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
+
3
+ var _templateObject;
4
+
5
+ /** @jsx jsx */
1
6
  import React from 'react';
7
+ import { css, jsx } from '@emotion/core';
2
8
  import AtlaskitAvatarGroup from '@atlaskit/avatar-group';
3
9
  import { SmartLinkSize } from '../../../../../constants';
4
10
  var MAX_COUNT = 4;
5
11
 
12
+ var getStyles = function getStyles(size) {
13
+ switch (size) {
14
+ case SmartLinkSize.XLarge:
15
+ case SmartLinkSize.Large:
16
+ // Default AK small size
17
+ return;
18
+
19
+ case SmartLinkSize.Medium:
20
+ case SmartLinkSize.Small:
21
+ default:
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
+ }
24
+ };
25
+
6
26
  var AvatarGroup = function AvatarGroup(_ref) {
7
27
  var _ref$items = _ref.items,
8
28
  items = _ref$items === void 0 ? [] : _ref$items,
@@ -17,13 +37,15 @@ var AvatarGroup = function AvatarGroup(_ref) {
17
37
  return null;
18
38
  }
19
39
 
20
- return /*#__PURE__*/React.createElement(AtlaskitAvatarGroup, {
40
+ return jsx("span", {
41
+ css: getStyles(size)
42
+ }, jsx(AtlaskitAvatarGroup, {
21
43
  maxCount: maxCount,
22
44
  appearance: "stack",
23
45
  size: "small",
24
46
  data: items,
25
47
  testId: testId
26
- });
48
+ }));
27
49
  };
28
50
 
29
51
  export default AvatarGroup;
@@ -17,7 +17,7 @@ var iconStyles = css(_templateObject2 || (_templateObject2 = _taggedTemplateLite
17
17
  var labelStyles = css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 0.75rem;\n line-height: 1rem;\n padding-left: 0.125rem;\n"])), tokens.badgeText);
18
18
  var messageMapper = (_messageMapper = {}, _defineProperty(_messageMapper, IconType.PriorityBlocker, messages.priority_blocker), _defineProperty(_messageMapper, IconType.PriorityCritical, messages.priority_critical), _defineProperty(_messageMapper, IconType.PriorityHigh, messages.priority_high), _defineProperty(_messageMapper, IconType.PriorityHighest, messages.priority_highest), _defineProperty(_messageMapper, IconType.PriorityLow, messages.priority_low), _defineProperty(_messageMapper, IconType.PriorityLowest, messages.priority_lowest), _defineProperty(_messageMapper, IconType.PriorityMajor, messages.priority_major), _defineProperty(_messageMapper, IconType.PriorityMedium, messages.priority_medium), _defineProperty(_messageMapper, IconType.PriorityMinor, messages.priority_minor), _defineProperty(_messageMapper, IconType.PriorityTrivial, messages.priority_trivial), _defineProperty(_messageMapper, IconType.PriorityUndefined, messages.priority_undefined), _messageMapper);
19
19
 
20
- var getFormattedMessageOrLabel = function getFormattedMessageOrLabel(icon, content) {
20
+ var getFormattedMessageFromIcon = function getFormattedMessageFromIcon(icon) {
21
21
  if (icon) {
22
22
  var descriptor = messageMapper[icon];
23
23
 
@@ -27,8 +27,6 @@ var getFormattedMessageOrLabel = function getFormattedMessageOrLabel(icon, conte
27
27
  });
28
28
  }
29
29
  }
30
-
31
- return content;
32
30
  };
33
31
 
34
32
  var renderAtlaskitIcon = function renderAtlaskitIcon(icon, testId) {
@@ -56,7 +54,7 @@ var Badge = function Badge(_ref) {
56
54
  label = _ref.label,
57
55
  _ref$testId = _ref.testId,
58
56
  testId = _ref$testId === void 0 ? 'smart-element-badge' : _ref$testId;
59
- var formattedMessageOrLabel = getFormattedMessageOrLabel(icon, label);
57
+ var formattedMessageOrLabel = getFormattedMessageFromIcon(icon) || label;
60
58
  var badgeIcon = renderAtlaskitIcon(icon, testId) || renderImageIcon(url, testId);
61
59
 
62
60
  if (!formattedMessageOrLabel || !badgeIcon) {
@@ -13,6 +13,8 @@ export var ModifiedBy = createElement(ElementName.ModifiedBy);
13
13
  export var ModifiedOn = createElement(ElementName.ModifiedOn);
14
14
  export var Priority = createElement(ElementName.Priority);
15
15
  export var ProgrammingLanguage = createElement(ElementName.ProgrammingLanguage);
16
+ export var Snippet = createElement(ElementName.Snippet);
16
17
  export var State = createElement(ElementName.State);
17
18
  export var SubscriberCount = createElement(ElementName.SubscriberCount);
18
- export var Title = createElement(ElementName.Title);
19
+ export var Title = createElement(ElementName.Title);
20
+ export var Provider = createElement(ElementName.Provider);
@@ -7,10 +7,15 @@ import React from 'react';
7
7
  import { css, jsx } from '@emotion/core';
8
8
  import { getFormattedMessage, getTruncateStyles } from '../../utils';
9
9
  import { tokens } from '../../../../../utils/token';
10
- var styles = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n color: ", ";\n font-size: 0.75rem;\n line-height: 1rem;\n ", "\n"])), tokens.text, getTruncateStyles(1));
10
+
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
+ };
11
14
 
12
15
  var Text = function Text(_ref) {
13
16
  var content = _ref.content,
17
+ _ref$maxLines = _ref.maxLines,
18
+ maxLines = _ref$maxLines === void 0 ? 1 : _ref$maxLines,
14
19
  message = _ref.message,
15
20
  _ref$testId = _ref.testId,
16
21
  testId = _ref$testId === void 0 ? 'smart-element-text' : _ref$testId;
@@ -20,7 +25,7 @@ var Text = function Text(_ref) {
20
25
  }
21
26
 
22
27
  return jsx("span", {
23
- css: styles,
28
+ css: getStyles(maxLines),
24
29
  "data-smart-element-text": true,
25
30
  "data-testid": testId
26
31
  }, getFormattedMessage(message) || content);
@@ -36,6 +36,11 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_elementMappings,
36
36
  props: {
37
37
  icon: IconType.ProgrammingLanguage
38
38
  }
39
+ }), _defineProperty(_elementMappings, ElementName.Snippet, {
40
+ component: Text,
41
+ props: {
42
+ maxLines: 3
43
+ }
39
44
  }), _defineProperty(_elementMappings, ElementName.State, {
40
45
  component: Lozenge
41
46
  }), _defineProperty(_elementMappings, ElementName.SubscriberCount, {
@@ -49,6 +54,8 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_elementMappings,
49
54
  component: DateTime
50
55
  }), _defineProperty(_elementMappings, ElementName.ModifiedOn, {
51
56
  component: DateTime
57
+ }), _defineProperty(_elementMappings, ElementName.Provider, {
58
+ component: Badge
52
59
  }), _elementMappings);
53
60
 
54
61
  var getContextKey = function getContextKey(name) {
@@ -57,17 +64,6 @@ var getContextKey = function getContextKey(name) {
57
64
  return name.length > 0 ? name.charAt(0).toLowerCase() + name.slice(1) : undefined;
58
65
  };
59
66
 
60
- var getFormattedMessage = function getFormattedMessage(descriptor, value) {
61
- return value ? {
62
- message: {
63
- descriptor: descriptor,
64
- values: {
65
- context: value
66
- }
67
- }
68
- } : undefined;
69
- };
70
-
71
67
  var getData = function getData(elementName, contextKey, context) {
72
68
  if (!context) {
73
69
  return undefined;
@@ -76,52 +72,81 @@ var getData = function getData(elementName, contextKey, context) {
76
72
  var data = context[contextKey];
77
73
 
78
74
  switch (elementName) {
75
+ case ElementName.AuthorGroup:
76
+ case ElementName.CollaboratorGroup:
77
+ return toAvatarGroupProps(data);
78
+
79
79
  case ElementName.CommentCount:
80
80
  case ElementName.ProgrammingLanguage:
81
81
  case ElementName.SubscriberCount:
82
- return {
83
- label: data
84
- };
85
-
86
- case ElementName.AuthorGroup:
87
- return {
88
- items: context.authorGroup
89
- };
90
-
91
- case ElementName.CollaboratorGroup:
92
- return {
93
- items: context.collaboratorGroup
94
- };
82
+ return toBadgeProps(data);
95
83
 
96
84
  case ElementName.CreatedBy:
97
- return getFormattedMessage(messages.created_by, context.createdBy);
85
+ return toFormattedTextProps(messages.created_by, context.createdBy);
86
+
87
+ case ElementName.CreatedOn:
88
+ return toDateTimeProps('created', context.createdOn);
98
89
 
99
90
  case ElementName.ModifiedBy:
100
- return getFormattedMessage(messages.modified_by, context.modifiedBy);
91
+ return toFormattedTextProps(messages.modified_by, context.modifiedBy);
101
92
 
102
93
  case ElementName.ModifiedOn:
103
- return context.modifiedOn ? {
104
- date: new Date(context.modifiedOn),
105
- type: 'modified'
106
- } : undefined;
94
+ return toDateTimeProps('modified', context.modifiedOn);
107
95
 
108
- case ElementName.CreatedOn:
109
- return context.createdOn ? {
110
- date: new Date(context.createdOn),
111
- type: 'created'
112
- } : undefined;
96
+ case ElementName.Snippet:
97
+ return toTextProps(data);
113
98
 
114
99
  case ElementName.Title:
115
- return {
116
- text: context.title,
117
- url: context.url
118
- };
100
+ return toLinkProps(context.title, context.url);
119
101
 
120
102
  default:
121
103
  return data;
122
104
  }
123
105
  };
124
106
 
107
+ var toAvatarGroupProps = function toAvatarGroupProps(items) {
108
+ return items ? {
109
+ items: items
110
+ } : undefined;
111
+ };
112
+
113
+ var toBadgeProps = function toBadgeProps(label) {
114
+ return label ? {
115
+ label: label
116
+ } : undefined;
117
+ };
118
+
119
+ var toDateTimeProps = function toDateTimeProps(type, dateString) {
120
+ return dateString ? {
121
+ date: new Date(dateString),
122
+ type: type
123
+ } : undefined;
124
+ };
125
+
126
+ var toFormattedTextProps = function toFormattedTextProps(descriptor, context) {
127
+ return context ? {
128
+ message: {
129
+ descriptor: descriptor,
130
+ values: {
131
+ context: context
132
+ }
133
+ }
134
+ } : undefined;
135
+ };
136
+
137
+ var toLinkProps = function toLinkProps(text, url) {
138
+ return text ? {
139
+ text: text,
140
+ url: url
141
+ } : undefined;
142
+ };
143
+
144
+ var toTextProps = function toTextProps(content) {
145
+ return content ? {
146
+ content: content
147
+ } : undefined;
148
+ };
149
+
125
150
  export var createElement = function createElement(name) {
126
151
  var _ref = elementMappings[name] || {},
127
152
  BaseElement = _ref.component,
@@ -0,0 +1,3 @@
1
+ import { FlexibleUiDataContext } from '../state/flexible-ui-context/types';
2
+ declare const context: FlexibleUiDataContext;
3
+ export default context;
@@ -45,9 +45,11 @@ export declare enum ElementName {
45
45
  ModifiedOn = "ModifiedOn",
46
46
  Priority = "Priority",
47
47
  ProgrammingLanguage = "ProgrammingLanguage",
48
+ Snippet = "Snippet",
48
49
  State = "State",
49
50
  SubscriberCount = "SubscriberCount",
50
- Title = "Title"
51
+ Title = "Title",
52
+ Provider = "Provider"
51
53
  }
52
54
  export declare enum ActionName {
53
55
  DeleteAction = "DeleteAction"
@@ -1,4 +1,4 @@
1
1
  import { JsonLd } from 'json-ld-types';
2
2
  import { IconDescriptor } from './types';
3
- declare const extractProviderIcon: (provider?: string | undefined, icon?: string | JsonLd.Primitives.LinkModel | JsonLd.Primitives.Image | undefined, label?: string | undefined) => IconDescriptor | undefined;
3
+ declare const extractProviderIcon: (data?: JsonLd.Data.BaseData | undefined) => IconDescriptor | undefined;
4
4
  export default extractProviderIcon;
@@ -3,10 +3,10 @@ import { JsonLd } from 'json-ld-types';
3
3
  import { IconType, SmartLinkStatus } from '../../../constants';
4
4
  import { CardProviderRenderers } from '../../../state/context/types';
5
5
  export declare const extractLinkIcon: (response: JsonLd.Response, renderers?: CardProviderRenderers | undefined) => {
6
- icon: IconType | undefined;
7
- label: string | undefined;
8
6
  render: (() => import("react").ReactNode) | undefined;
9
- url: string | undefined;
7
+ icon?: IconType | undefined;
8
+ label?: string | undefined;
9
+ url?: string | undefined;
10
10
  };
11
11
  export declare const extractErrorIcon: (response?: JsonLd.Response<JsonLd.Data.BaseData> | undefined, status?: SmartLinkStatus | undefined) => {
12
12
  icon: IconType | undefined;
@@ -1,2 +1,6 @@
1
1
  import { IconType } from '../../../constants';
2
- export declare type IconDescriptor = [IconType?, string?, string?];
2
+ export declare type IconDescriptor = {
3
+ icon?: IconType;
4
+ label?: string;
5
+ url?: string;
6
+ };
@@ -2,6 +2,8 @@ import { LinkLozenge } from '../../extractors/common/lozenge/types';
2
2
  import { LinkPerson } from '../../extractors/common/person/types';
3
3
  import { IconType } from '../../constants';
4
4
  export declare type FlexibleUiDataContext = {
5
+ authorGroup?: LinkPerson[];
6
+ collaboratorGroup?: LinkPerson[];
5
7
  commentCount?: number;
6
8
  createdBy?: string;
7
9
  createdOn?: string;
@@ -10,12 +12,12 @@ export declare type FlexibleUiDataContext = {
10
12
  modifiedOn?: string;
11
13
  priority?: Icon;
12
14
  programmingLanguage?: string;
15
+ snippet?: string;
13
16
  subscriberCount?: number;
14
17
  state?: LinkLozenge;
15
18
  title?: string;
16
19
  url?: string;
17
- authorGroup?: LinkPerson[];
18
- collaboratorGroup?: LinkPerson[];
20
+ provider?: Icon;
19
21
  };
20
22
  export declare type Icon = {
21
23
  icon?: IconType;
@@ -1,9 +1,11 @@
1
1
  import React from 'react';
2
2
  import { SerializedStyles } from '@emotion/core';
3
3
  import { ActionItem, ElementItem } from './types';
4
- import { SmartLinkDirection, SmartLinkSize } from '../../../../constants';
4
+ import { ElementName, SmartLinkDirection, SmartLinkSize } from '../../../../constants';
5
+ export declare type ElementDisplaySchemaType = 'inline' | 'block';
6
+ export declare const ElementDisplaySchema: Record<ElementName, ElementDisplaySchemaType[]>;
5
7
  export declare const getGapSize: (size: SmartLinkSize) => number;
6
8
  export declare const getBaseStyles: (direction: SmartLinkDirection, size: SmartLinkSize) => SerializedStyles;
7
9
  export declare const renderChildren: (children: React.ReactNode, size: SmartLinkSize) => React.ReactNode;
8
- export declare const renderElementItems: (items?: ElementItem[]) => React.ReactNode | undefined;
10
+ export declare const renderElementItems: (items?: ElementItem[], display?: ElementDisplaySchemaType) => React.ReactNode | undefined;
9
11
  export declare const renderActionItems: (items?: ActionItem[], size?: SmartLinkSize) => React.ReactNode | undefined;
@@ -1,3 +1,4 @@
1
+ /** @jsx jsx */
1
2
  import React from 'react';
2
3
  import { AvatarGroupProps } from './types';
3
4
  declare const AvatarGroup: React.FC<AvatarGroupProps>;
@@ -1,5 +1,5 @@
1
1
  import { ElementProps } from '../types';
2
- declare type AvatarItemProps = {
2
+ export declare type AvatarItemProps = {
3
3
  src?: string;
4
4
  name: string;
5
5
  };
@@ -7,4 +7,3 @@ export declare type AvatarGroupProps = ElementProps & {
7
7
  items?: AvatarItemProps[];
8
8
  maxCount?: number;
9
9
  };
10
- export {};
@@ -16,6 +16,8 @@ export declare const ModifiedBy: import("react").FC<TextProps>;
16
16
  export declare const ModifiedOn: import("react").FC<DateTimeProps>;
17
17
  export declare const Priority: import("react").FC<BadgeProps>;
18
18
  export declare const ProgrammingLanguage: import("react").FC<BadgeProps>;
19
+ export declare const Snippet: import("react").FC<TextProps>;
19
20
  export declare const State: import("react").FC<LozengeProps>;
20
21
  export declare const SubscriberCount: import("react").FC<BadgeProps>;
21
22
  export declare const Title: import("react").FC<LinkProps>;
23
+ export declare const Provider: import("react").FC<BadgeProps>;
@@ -2,5 +2,6 @@ import { ElementProps } from '../types';
2
2
  import { MessageProps } from '../../types';
3
3
  export declare type TextProps = ElementProps & {
4
4
  content?: string;
5
+ maxLines?: number;
5
6
  message?: MessageProps;
6
7
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "17.2.1",
3
+ "version": "17.4.0",
4
4
  "description": "Smart card component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"