@atlaskit/smart-card 17.4.3 → 17.5.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 (74) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/constants.js +14 -2
  3. package/dist/cjs/extractors/flexible/extract-preview.js +21 -0
  4. package/dist/cjs/extractors/flexible/index.js +3 -0
  5. package/dist/cjs/index.js +6 -0
  6. package/dist/cjs/version.json +1 -1
  7. package/dist/cjs/view/FlexibleCard/components/actions/action/index.js +18 -7
  8. package/dist/cjs/view/FlexibleCard/components/actions/utils.js +8 -1
  9. package/dist/cjs/view/FlexibleCard/components/blocks/action-group/index.js +3 -2
  10. package/dist/cjs/view/FlexibleCard/components/blocks/footer-block/index.js +50 -0
  11. package/dist/cjs/view/FlexibleCard/components/blocks/footer-block/types.js +5 -0
  12. package/dist/cjs/view/FlexibleCard/components/blocks/index.js +16 -0
  13. package/dist/cjs/view/FlexibleCard/components/blocks/preview-block/index.js +41 -0
  14. package/dist/cjs/view/FlexibleCard/components/blocks/preview-block/types.js +5 -0
  15. package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +24 -4
  16. package/dist/cjs/view/FlexibleCard/components/common/atlaskit-icon/index.js +1 -1
  17. package/dist/cjs/view/FlexibleCard/components/elements/index.js +3 -1
  18. package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +45 -0
  19. package/dist/cjs/view/FlexibleCard/components/elements/media/types.js +5 -0
  20. package/dist/cjs/view/FlexibleCard/components/elements/utils.js +4 -0
  21. package/dist/es2019/constants.js +11 -1
  22. package/dist/es2019/extractors/flexible/extract-preview.js +12 -0
  23. package/dist/es2019/extractors/flexible/index.js +2 -0
  24. package/dist/es2019/index.js +1 -1
  25. package/dist/es2019/version.json +1 -1
  26. package/dist/es2019/view/FlexibleCard/components/actions/action/index.js +34 -6
  27. package/dist/es2019/view/FlexibleCard/components/actions/utils.js +5 -1
  28. package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +3 -2
  29. package/dist/es2019/view/FlexibleCard/components/blocks/footer-block/index.js +35 -0
  30. package/dist/es2019/view/FlexibleCard/components/blocks/footer-block/types.js +1 -0
  31. package/dist/es2019/view/FlexibleCard/components/blocks/index.js +2 -0
  32. package/dist/es2019/view/FlexibleCard/components/blocks/preview-block/index.js +21 -0
  33. package/dist/es2019/view/FlexibleCard/components/blocks/preview-block/types.js +1 -0
  34. package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +20 -5
  35. package/dist/es2019/view/FlexibleCard/components/common/atlaskit-icon/index.js +1 -1
  36. package/dist/es2019/view/FlexibleCard/components/elements/index.js +1 -0
  37. package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +35 -0
  38. package/dist/es2019/view/FlexibleCard/components/elements/media/types.js +1 -0
  39. package/dist/es2019/view/FlexibleCard/components/elements/utils.js +4 -0
  40. package/dist/esm/constants.js +11 -1
  41. package/dist/esm/extractors/flexible/extract-preview.js +12 -0
  42. package/dist/esm/extractors/flexible/index.js +2 -0
  43. package/dist/esm/index.js +1 -1
  44. package/dist/esm/version.json +1 -1
  45. package/dist/esm/view/FlexibleCard/components/actions/action/index.js +17 -7
  46. package/dist/esm/view/FlexibleCard/components/actions/utils.js +9 -1
  47. package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +3 -2
  48. package/dist/esm/view/FlexibleCard/components/blocks/footer-block/index.js +34 -0
  49. package/dist/esm/view/FlexibleCard/components/blocks/footer-block/types.js +1 -0
  50. package/dist/esm/view/FlexibleCard/components/blocks/index.js +2 -0
  51. package/dist/esm/view/FlexibleCard/components/blocks/preview-block/index.js +25 -0
  52. package/dist/esm/view/FlexibleCard/components/blocks/preview-block/types.js +1 -0
  53. package/dist/esm/view/FlexibleCard/components/blocks/utils.js +25 -6
  54. package/dist/esm/view/FlexibleCard/components/common/atlaskit-icon/index.js +1 -1
  55. package/dist/esm/view/FlexibleCard/components/elements/index.js +1 -0
  56. package/dist/esm/view/FlexibleCard/components/elements/media/index.js +34 -0
  57. package/dist/esm/view/FlexibleCard/components/elements/media/types.js +1 -0
  58. package/dist/esm/view/FlexibleCard/components/elements/utils.js +3 -0
  59. package/dist/types/constants.d.ts +7 -0
  60. package/dist/types/extractors/flexible/extract-preview.d.ts +4 -0
  61. package/dist/types/index.d.ts +1 -1
  62. package/dist/types/state/flexible-ui-context/types.d.ts +6 -1
  63. package/dist/types/view/FlexibleCard/components/blocks/action-group/types.d.ts +2 -0
  64. package/dist/types/view/FlexibleCard/components/blocks/footer-block/index.d.ts +4 -0
  65. package/dist/types/view/FlexibleCard/components/blocks/footer-block/types.d.ts +4 -0
  66. package/dist/types/view/FlexibleCard/components/blocks/index.d.ts +2 -0
  67. package/dist/types/view/FlexibleCard/components/blocks/preview-block/index.d.ts +4 -0
  68. package/dist/types/view/FlexibleCard/components/blocks/preview-block/types.d.ts +2 -0
  69. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +2 -0
  70. package/dist/types/view/FlexibleCard/components/blocks/utils.d.ts +1 -1
  71. package/dist/types/view/FlexibleCard/components/elements/index.d.ts +2 -0
  72. package/dist/types/view/FlexibleCard/components/elements/media/index.d.ts +5 -0
  73. package/dist/types/view/FlexibleCard/components/elements/media/types.d.ts +6 -0
  74. package/package.json +1 -1
@@ -4,10 +4,14 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
4
4
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
5
5
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
6
6
  var _excluded = ["name"],
7
- _excluded2 = ["name"];
7
+ _excluded2 = ["name", "hideContent", "hideIcon", "onClick"];
8
8
 
9
9
  var _ElementDisplaySchema, _templateObject, _templateObject2, _templateObject3;
10
10
 
11
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
12
+
13
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14
+
11
15
  import React from 'react';
12
16
  import { css } from '@emotion/core';
13
17
  import { ElementName, SmartLinkDirection, SmartLinkSize } from '../../../../constants';
@@ -15,9 +19,8 @@ import * as Elements from '../elements';
15
19
  import * as Actions from '../actions';
16
20
  import { isFlexibleUiElement } from '../../../../utils/flexible';
17
21
  import ActionGroup from './action-group';
18
- import ElementGroup from './element-group'; // Determine whether the element can be display as inline/block.
19
-
20
- export var ElementDisplaySchema = (_ElementDisplaySchema = {}, _defineProperty(_ElementDisplaySchema, ElementName.AuthorGroup, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CollaboratorGroup, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CommentCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CreatedBy, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CreatedOn, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.LinkIcon, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ModifiedBy, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ModifiedOn, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Priority, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ProgrammingLanguage, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Snippet, ['block']), _defineProperty(_ElementDisplaySchema, ElementName.State, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.SubscriberCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Title, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Provider, ['inline']), _ElementDisplaySchema);
22
+ import ElementGroup from './element-group';
23
+ export var ElementDisplaySchema = (_ElementDisplaySchema = {}, _defineProperty(_ElementDisplaySchema, ElementName.AuthorGroup, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CollaboratorGroup, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CommentCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CreatedBy, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.CreatedOn, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.LinkIcon, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ModifiedBy, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ModifiedOn, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Preview, ['block']), _defineProperty(_ElementDisplaySchema, ElementName.Priority, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.ProgrammingLanguage, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Snippet, ['block']), _defineProperty(_ElementDisplaySchema, ElementName.State, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.SubscriberCount, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Title, ['inline']), _defineProperty(_ElementDisplaySchema, ElementName.Provider, ['inline']), _ElementDisplaySchema);
21
24
 
22
25
  var getDirectionStyles = function getDirectionStyles(direction) {
23
26
  switch (direction) {
@@ -110,17 +113,33 @@ export var renderElementItems = function renderElementItems() {
110
113
  export var renderActionItems = function renderActionItems() {
111
114
  var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
112
115
  var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SmartLinkSize.Medium;
116
+ var appearance = arguments.length > 2 ? arguments[2] : undefined;
113
117
  var actions = items.reduce(function (acc, curr, idx) {
114
118
  var name = curr.name,
119
+ hideContent = curr.hideContent,
120
+ hideIcon = curr.hideIcon,
121
+ onClick = curr.onClick,
115
122
  props = _objectWithoutProperties(curr, _excluded2);
116
123
 
117
124
  var Action = Actions[name];
118
125
 
126
+ var actionProps = _objectSpread({}, props);
127
+
128
+ if (hideContent) {
129
+ actionProps.content = '';
130
+ }
131
+
132
+ if (hideIcon) {
133
+ actionProps.icon = undefined;
134
+ }
135
+
119
136
  if (Action) {
120
137
  return [].concat(_toConsumableArray(acc), [/*#__PURE__*/React.createElement(Action, _extends({
121
138
  size: size,
122
- key: idx
123
- }, props))]);
139
+ key: idx,
140
+ appearance: appearance,
141
+ onClick: onClick
142
+ }, actionProps))]);
124
143
  }
125
144
 
126
145
  return acc;
@@ -281,7 +281,7 @@ var AtlaskitIcon = function AtlaskitIcon(_ref3) {
281
281
  case IconType.Jira:
282
282
  // Logo component has a different prop set from other icon components
283
283
  return /*#__PURE__*/React.createElement(ImportedIcon, {
284
- "data-testId": testId // Confluence and Jira imports don't have native testId prop
284
+ "data-testid": testId // Confluence and Jira imports don't have native testId prop
285
285
  ,
286
286
  textColor: N700,
287
287
  iconColor: B200,
@@ -11,6 +11,7 @@ export var CreatedOn = createElement(ElementName.CreatedOn);
11
11
  export var LinkIcon = createElement(ElementName.LinkIcon);
12
12
  export var ModifiedBy = createElement(ElementName.ModifiedBy);
13
13
  export var ModifiedOn = createElement(ElementName.ModifiedOn);
14
+ export var Preview = createElement(ElementName.Preview);
14
15
  export var Priority = createElement(ElementName.Priority);
15
16
  export var ProgrammingLanguage = createElement(ElementName.ProgrammingLanguage);
16
17
  export var Snippet = createElement(ElementName.Snippet);
@@ -0,0 +1,34 @@
1
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
+
3
+ var _templateObject;
4
+
5
+ /** @jsx jsx */
6
+ import React from 'react';
7
+ import { css, jsx } from '@emotion/core';
8
+ import ImageIcon from '../../common/image-icon';
9
+
10
+ var styles = function styles(url) {
11
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n justify-content: center;\n width: 100%;\n > img {\n max-width: 100%;\n max-height: 100%;\n }\n"])));
12
+ };
13
+
14
+ var Media = function Media(_ref) {
15
+ var _ref$testId = _ref.testId,
16
+ testId = _ref$testId === void 0 ? 'smart-element-media' : _ref$testId,
17
+ type = _ref.type,
18
+ url = _ref.url;
19
+
20
+ if (!type || !url) {
21
+ return null;
22
+ }
23
+
24
+ return jsx("div", {
25
+ css: styles(url),
26
+ "data-smart-element-media": true,
27
+ "data-testid": testId
28
+ }, jsx(ImageIcon, {
29
+ testId: "".concat(testId, "-image"),
30
+ url: url
31
+ }));
32
+ };
33
+
34
+ export default Media;
@@ -11,6 +11,7 @@ import Lozenge from './lozenge';
11
11
  import { FlexibleUiContext } from '../../../../state/flexible-ui-context';
12
12
  import Badge from './badge';
13
13
  import AvatarGroup from './avatar-group';
14
+ import Media from './media';
14
15
  import Text from './text';
15
16
  import { messages } from '../../../../messages';
16
17
  import DateTime from './date-time';
@@ -31,6 +32,8 @@ var elementMappings = (_elementMappings = {}, _defineProperty(_elementMappings,
31
32
  component: Icon
32
33
  }), _defineProperty(_elementMappings, ElementName.ModifiedBy, {
33
34
  component: Text
35
+ }), _defineProperty(_elementMappings, ElementName.Preview, {
36
+ component: Media
34
37
  }), _defineProperty(_elementMappings, ElementName.Priority, {
35
38
  component: Badge
36
39
  }), _defineProperty(_elementMappings, ElementName.ProgrammingLanguage, {
@@ -88,6 +88,7 @@ export declare enum ElementName {
88
88
  LinkIcon = "LinkIcon",
89
89
  ModifiedBy = "ModifiedBy",
90
90
  ModifiedOn = "ModifiedOn",
91
+ Preview = "Preview",
91
92
  Priority = "Priority",
92
93
  ProgrammingLanguage = "ProgrammingLanguage",
93
94
  Snippet = "Snippet",
@@ -164,3 +165,9 @@ export declare enum IconType {
164
165
  ProgrammingLanguage = "Badge:ProgrammingLanguage",
165
166
  Subscriber = "Badge:Subscriber"
166
167
  }
168
+ /**
169
+ * Type for Flexible UI's Media element
170
+ */
171
+ export declare enum MediaType {
172
+ Image = "image"
173
+ }
@@ -0,0 +1,4 @@
1
+ import { JsonLd } from 'json-ld-types';
2
+ import { Media } from '../../state/flexible-ui-context/types';
3
+ declare const extractPreview: (data: JsonLd.Data.BaseData) => Media | undefined;
4
+ export default extractPreview;
@@ -17,5 +17,5 @@ export { useSmartLinkEvents } from './view/SmartLinkEvents/useSmartLinkEvents';
17
17
  export { contentFooterClassName, metadataListClassName, blockCardResolvingViewClassName, blockCardResolvedViewClassName, blockCardForbiddenViewClassName, blockCardIconImageClassName, blockCardResolvedViewByClassName, blockCardForbiddenViewLinkClassName, blockCardContentClassName, blockCardContentHeaderClassName, blockCardContentHeaderNameClassName, blockCardNotFoundViewClassName, blockCardErroredViewClassName, } from './classNames';
18
18
  export { loadingPlaceholderClassName } from './view/CardWithUrl/component-lazy/LazyFallback';
19
19
  export { ActionName, ElementName, SmartLinkDirection, SmartLinkPosition, SmartLinkSize, SmartLinkTheme, } from './constants';
20
- export { MetadataBlock, SnippetBlock, TitleBlock, } from './view/FlexibleCard/components/blocks';
20
+ export { MetadataBlock, PreviewBlock, SnippetBlock, TitleBlock, } from './view/FlexibleCard/components/blocks';
21
21
  export type { ActionItem, ElementItem, } from './view/FlexibleCard/components/blocks/types';
@@ -1,6 +1,6 @@
1
1
  import { LinkLozenge } from '../../extractors/common/lozenge/types';
2
2
  import { LinkPerson } from '../../extractors/common/person/types';
3
- import { IconType } from '../../constants';
3
+ import { IconType, MediaType } from '../../constants';
4
4
  export declare type FlexibleUiDataContext = {
5
5
  authorGroup?: LinkPerson[];
6
6
  collaboratorGroup?: LinkPerson[];
@@ -10,6 +10,7 @@ export declare type FlexibleUiDataContext = {
10
10
  linkIcon?: Icon;
11
11
  modifiedBy?: string;
12
12
  modifiedOn?: string;
13
+ preview?: Media;
13
14
  priority?: Icon;
14
15
  programmingLanguage?: string;
15
16
  snippet?: string;
@@ -24,3 +25,7 @@ export declare type Icon = {
24
25
  label?: string;
25
26
  url?: string;
26
27
  };
28
+ export declare type Media = {
29
+ type: MediaType;
30
+ url: string;
31
+ };
@@ -1,8 +1,10 @@
1
1
  import { SmartLinkSize, SmartLinkDirection } from '../../../../../constants';
2
2
  import { ActionItem } from '../types';
3
+ import { Appearance } from '@atlaskit/button';
3
4
  export declare type ActionGroupProps = {
4
5
  items: ActionItem[];
5
6
  size?: SmartLinkSize;
6
7
  direction?: SmartLinkDirection;
7
8
  testId?: string;
9
+ appearance?: Appearance;
8
10
  };
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { FooterBlockProps } from './types';
3
+ declare const FooterBlock: React.FC<FooterBlockProps>;
4
+ export default FooterBlock;
@@ -0,0 +1,4 @@
1
+ import { ActionItem, BlockProps } from '../types';
2
+ export declare type FooterBlockProps = BlockProps & {
3
+ actions?: ActionItem[];
4
+ };
@@ -1,3 +1,5 @@
1
+ export { default as FooterBlock } from './footer-block';
1
2
  export { default as MetadataBlock } from './metadata-block';
3
+ export { default as PreviewBlock } from './preview-block';
2
4
  export { default as SnippetBlock } from './snippet-block';
3
5
  export { default as TitleBlock } from './title-block';
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { PreviewBlockProps } from './types';
3
+ declare const PreviewBlock: React.FC<PreviewBlockProps>;
4
+ export default PreviewBlock;
@@ -0,0 +1,2 @@
1
+ import { BlockProps } from '../types';
2
+ export declare type PreviewBlockProps = BlockProps;
@@ -13,5 +13,7 @@ export declare type ElementItem = {
13
13
  export declare type ActionItem = {
14
14
  name: ActionName;
15
15
  testId?: string;
16
+ hideContent?: boolean;
17
+ hideIcon?: boolean;
16
18
  onClick: () => any;
17
19
  };
@@ -8,4 +8,4 @@ export declare const getGapSize: (size: SmartLinkSize) => number;
8
8
  export declare const getBaseStyles: (direction: SmartLinkDirection, size: SmartLinkSize) => SerializedStyles;
9
9
  export declare const renderChildren: (children: React.ReactNode, size: SmartLinkSize) => React.ReactNode;
10
10
  export declare const renderElementItems: (items?: ElementItem[], display?: ElementDisplaySchemaType) => React.ReactNode | undefined;
11
- export declare const renderActionItems: (items?: ActionItem[], size?: SmartLinkSize) => React.ReactNode | undefined;
11
+ export declare const renderActionItems: (items?: ActionItem[], size?: SmartLinkSize, appearance?: "link" | "default" | "danger" | "primary" | "subtle" | "subtle-link" | "warning" | undefined) => React.ReactNode | undefined;
@@ -6,6 +6,7 @@ import { LozengeProps } from './lozenge/types';
6
6
  import { AvatarGroupProps } from './avatar-group/types';
7
7
  import { TextProps } from './text/types';
8
8
  import { DateTimeProps } from './date-time/types';
9
+ import { MediaProps } from './media/types';
9
10
  export declare const AuthorGroup: import("react").FC<AvatarGroupProps>;
10
11
  export declare const CollaboratorGroup: import("react").FC<AvatarGroupProps>;
11
12
  export declare const CommentCount: import("react").FC<BadgeProps>;
@@ -14,6 +15,7 @@ export declare const CreatedOn: import("react").FC<DateTimeProps>;
14
15
  export declare const LinkIcon: import("react").FC<IconProps>;
15
16
  export declare const ModifiedBy: import("react").FC<TextProps>;
16
17
  export declare const ModifiedOn: import("react").FC<DateTimeProps>;
18
+ export declare const Preview: import("react").FC<MediaProps>;
17
19
  export declare const Priority: import("react").FC<BadgeProps>;
18
20
  export declare const ProgrammingLanguage: import("react").FC<BadgeProps>;
19
21
  export declare const Snippet: import("react").FC<TextProps>;
@@ -0,0 +1,5 @@
1
+ /** @jsx jsx */
2
+ import React from 'react';
3
+ import { MediaProps } from './types';
4
+ declare const Media: React.FC<MediaProps>;
5
+ export default Media;
@@ -0,0 +1,6 @@
1
+ import { ElementProps } from '../types';
2
+ import { MediaType } from '../../../../../constants';
3
+ export declare type MediaProps = ElementProps & {
4
+ type?: MediaType;
5
+ url?: string;
6
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "17.4.3",
3
+ "version": "17.5.2",
4
4
  "description": "Smart card component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"