@atlaskit/smart-card 17.7.2 → 17.7.5

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 (133) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/classNames.js +2 -2
  3. package/dist/cjs/version.json +1 -1
  4. package/dist/cjs/view/BlockCard/actions/PreviewAction.js +1 -1
  5. package/dist/cjs/view/BlockCard/components/ActionList.js +1 -1
  6. package/dist/cjs/view/BlockCard/components/CollaboratorList.js +1 -1
  7. package/dist/cjs/view/BlockCard/components/Content.js +1 -1
  8. package/dist/cjs/view/BlockCard/components/ContentFooter.js +1 -1
  9. package/dist/cjs/view/BlockCard/components/Emoji.js +1 -1
  10. package/dist/cjs/view/BlockCard/components/Frame.js +1 -1
  11. package/dist/cjs/view/BlockCard/components/Name.js +1 -1
  12. package/dist/cjs/view/BlockCard/components/Provider.js +1 -1
  13. package/dist/cjs/view/BlockCard/components/Thumbnail.js +1 -1
  14. package/dist/cjs/view/BlockCard/views/ErroredView.js +1 -1
  15. package/dist/cjs/view/BlockCard/views/ForbiddenView.js +1 -1
  16. package/dist/cjs/view/BlockCard/views/NotFoundView.js +1 -1
  17. package/dist/cjs/view/BlockCard/views/ResolvedView.js +4 -4
  18. package/dist/cjs/view/BlockCard/views/ResolvingView.js +1 -1
  19. package/dist/cjs/view/BlockCard/views/UnauthorizedView.js +1 -1
  20. package/dist/cjs/view/EmbedCard/components/styled.js +1 -1
  21. package/dist/cjs/view/EmbedCard/views/ErroredView.js +1 -1
  22. package/dist/cjs/view/EmbedCard/views/UnresolvedView.js +1 -1
  23. package/dist/cjs/view/FlexibleCard/components/blocks/action-group/index.js +15 -7
  24. package/dist/cjs/view/FlexibleCard/components/blocks/block/index.js +3 -2
  25. package/dist/cjs/view/FlexibleCard/components/blocks/title-block/resolved/index.js +40 -11
  26. package/dist/cjs/view/HoverCard/index.js +37 -0
  27. package/dist/cjs/view/HoverCard/styled.js +19 -0
  28. package/dist/cjs/view/HoverCard/types.js +5 -0
  29. package/dist/cjs/view/InlineCard/ResolvedView/index.js +15 -2
  30. package/dist/cjs/view/InlineCard/index.js +3 -1
  31. package/dist/cjs/view/{BlockCard/components → common}/Byline.js +1 -1
  32. package/dist/cjs/view/{BlockCard/components → common}/Icon.js +1 -1
  33. package/dist/cjs/view/{BlockCard/components → common}/Metadata.js +1 -1
  34. package/dist/cjs/view/{BlockCard/components → common}/MetadataList.js +1 -1
  35. package/dist/cjs/view/{BlockCard/components → common}/Modal.js +1 -1
  36. package/dist/cjs/view/{BlockCard/components → common}/ModalHeader.js +1 -1
  37. package/dist/cjs/view/{BlockCard/utils/index.js → common/utils.js} +0 -0
  38. package/dist/es2019/classNames.js +2 -2
  39. package/dist/es2019/version.json +1 -1
  40. package/dist/es2019/view/BlockCard/actions/PreviewAction.js +1 -1
  41. package/dist/es2019/view/BlockCard/components/ActionList.js +1 -1
  42. package/dist/es2019/view/BlockCard/components/CollaboratorList.js +1 -1
  43. package/dist/es2019/view/BlockCard/components/Content.js +1 -1
  44. package/dist/es2019/view/BlockCard/components/ContentFooter.js +1 -1
  45. package/dist/es2019/view/BlockCard/components/Emoji.js +1 -1
  46. package/dist/es2019/view/BlockCard/components/Frame.js +1 -1
  47. package/dist/es2019/view/BlockCard/components/Name.js +1 -1
  48. package/dist/es2019/view/BlockCard/components/Provider.js +1 -1
  49. package/dist/es2019/view/BlockCard/components/Thumbnail.js +1 -1
  50. package/dist/es2019/view/BlockCard/views/ErroredView.js +1 -1
  51. package/dist/es2019/view/BlockCard/views/ForbiddenView.js +1 -1
  52. package/dist/es2019/view/BlockCard/views/NotFoundView.js +1 -1
  53. package/dist/es2019/view/BlockCard/views/ResolvedView.js +4 -4
  54. package/dist/es2019/view/BlockCard/views/ResolvingView.js +1 -1
  55. package/dist/es2019/view/BlockCard/views/UnauthorizedView.js +1 -1
  56. package/dist/es2019/view/EmbedCard/components/styled.js +1 -1
  57. package/dist/es2019/view/EmbedCard/views/ErroredView.js +1 -1
  58. package/dist/es2019/view/EmbedCard/views/UnresolvedView.js +1 -1
  59. package/dist/es2019/view/FlexibleCard/components/blocks/action-group/index.js +10 -4
  60. package/dist/es2019/view/FlexibleCard/components/blocks/block/index.js +3 -2
  61. package/dist/es2019/view/FlexibleCard/components/blocks/title-block/resolved/index.js +30 -10
  62. package/dist/es2019/view/HoverCard/index.js +20 -0
  63. package/dist/es2019/view/HoverCard/styled.js +9 -0
  64. package/dist/es2019/view/HoverCard/types.js +1 -0
  65. package/dist/es2019/view/InlineCard/ResolvedView/index.js +12 -2
  66. package/dist/es2019/view/InlineCard/index.js +3 -1
  67. package/dist/es2019/view/{BlockCard/components → common}/Byline.js +1 -1
  68. package/dist/es2019/view/{BlockCard/components → common}/Icon.js +1 -1
  69. package/dist/es2019/view/{BlockCard/components → common}/Metadata.js +1 -1
  70. package/dist/es2019/view/{BlockCard/components → common}/MetadataList.js +1 -1
  71. package/dist/es2019/view/{BlockCard/components → common}/Modal.js +1 -1
  72. package/dist/es2019/view/{BlockCard/components → common}/ModalHeader.js +1 -1
  73. package/dist/es2019/view/{BlockCard/utils/index.js → common/utils.js} +0 -0
  74. package/dist/esm/classNames.js +2 -2
  75. package/dist/esm/version.json +1 -1
  76. package/dist/esm/view/BlockCard/actions/PreviewAction.js +1 -1
  77. package/dist/esm/view/BlockCard/components/ActionList.js +1 -1
  78. package/dist/esm/view/BlockCard/components/CollaboratorList.js +1 -1
  79. package/dist/esm/view/BlockCard/components/Content.js +1 -1
  80. package/dist/esm/view/BlockCard/components/ContentFooter.js +1 -1
  81. package/dist/esm/view/BlockCard/components/Emoji.js +1 -1
  82. package/dist/esm/view/BlockCard/components/Frame.js +1 -1
  83. package/dist/esm/view/BlockCard/components/Name.js +1 -1
  84. package/dist/esm/view/BlockCard/components/Provider.js +1 -1
  85. package/dist/esm/view/BlockCard/components/Thumbnail.js +1 -1
  86. package/dist/esm/view/BlockCard/views/ErroredView.js +1 -1
  87. package/dist/esm/view/BlockCard/views/ForbiddenView.js +1 -1
  88. package/dist/esm/view/BlockCard/views/NotFoundView.js +1 -1
  89. package/dist/esm/view/BlockCard/views/ResolvedView.js +4 -4
  90. package/dist/esm/view/BlockCard/views/ResolvingView.js +1 -1
  91. package/dist/esm/view/BlockCard/views/UnauthorizedView.js +1 -1
  92. package/dist/esm/view/EmbedCard/components/styled.js +1 -1
  93. package/dist/esm/view/EmbedCard/views/ErroredView.js +1 -1
  94. package/dist/esm/view/EmbedCard/views/UnresolvedView.js +1 -1
  95. package/dist/esm/view/FlexibleCard/components/blocks/action-group/index.js +15 -7
  96. package/dist/esm/view/FlexibleCard/components/blocks/block/index.js +3 -2
  97. package/dist/esm/view/FlexibleCard/components/blocks/title-block/resolved/index.js +31 -11
  98. package/dist/esm/view/HoverCard/index.js +19 -0
  99. package/dist/esm/view/HoverCard/styled.js +7 -0
  100. package/dist/esm/view/HoverCard/types.js +1 -0
  101. package/dist/esm/view/InlineCard/ResolvedView/index.js +13 -2
  102. package/dist/esm/view/InlineCard/index.js +3 -1
  103. package/dist/esm/view/{BlockCard/components → common}/Byline.js +1 -1
  104. package/dist/esm/view/{BlockCard/components → common}/Icon.js +1 -1
  105. package/dist/esm/view/{BlockCard/components → common}/Metadata.js +1 -1
  106. package/dist/esm/view/{BlockCard/components → common}/MetadataList.js +1 -1
  107. package/dist/esm/view/{BlockCard/components → common}/Modal.js +1 -1
  108. package/dist/esm/view/{BlockCard/components → common}/ModalHeader.js +1 -1
  109. package/dist/esm/view/{BlockCard/utils/index.js → common/utils.js} +0 -0
  110. package/dist/types/classNames.d.ts +2 -2
  111. package/dist/types/view/BlockCard/actions/PreviewAction.d.ts +3 -3
  112. package/dist/types/view/BlockCard/views/ForbiddenView.d.ts +1 -1
  113. package/dist/types/view/BlockCard/views/NotFoundView.d.ts +1 -1
  114. package/dist/types/view/BlockCard/views/ResolvedView.d.ts +2 -2
  115. package/dist/types/view/BlockCard/views/UnauthorizedView.d.ts +1 -1
  116. package/dist/types/view/Card/index.d.ts +1 -1
  117. package/dist/types/view/FlexibleCard/components/blocks/action-group/types.d.ts +2 -0
  118. package/dist/types/view/FlexibleCard/components/blocks/title-block/resolved/index.d.ts +1 -0
  119. package/dist/types/view/FlexibleCard/components/blocks/title-block/types.d.ts +1 -0
  120. package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +2 -0
  121. package/dist/types/view/HoverCard/index.d.ts +3 -0
  122. package/dist/types/view/HoverCard/styled.d.ts +2 -0
  123. package/dist/types/view/HoverCard/types.d.ts +3 -0
  124. package/dist/types/view/InlineCard/ResolvedView/index.d.ts +2 -0
  125. package/dist/types/view/InlineCard/types.d.ts +1 -0
  126. package/dist/types/view/{BlockCard/components → common}/Byline.d.ts +0 -0
  127. package/dist/types/view/{BlockCard/components → common}/Icon.d.ts +0 -0
  128. package/dist/types/view/{BlockCard/components → common}/Metadata.d.ts +0 -0
  129. package/dist/types/view/{BlockCard/components → common}/MetadataList.d.ts +0 -0
  130. package/dist/types/view/{BlockCard/components → common}/Modal.d.ts +0 -0
  131. package/dist/types/view/{BlockCard/components → common}/ModalHeader.d.ts +0 -0
  132. package/dist/types/view/{BlockCard/utils/index.d.ts → common/utils.d.ts} +0 -0
  133. package/package.json +1 -1
@@ -7,7 +7,7 @@ import Button from '@atlaskit/button/standard-button';
7
7
  import DropdownMenu, { DropdownItem, DropdownItemGroup } from '@atlaskit/dropdown-menu';
8
8
  import MoreIcon from '@atlaskit/icon/glyph/more';
9
9
  import { Action } from './Action';
10
- import { gs, mq } from '../utils';
10
+ import { gs, mq } from '../../common/utils';
11
11
  export const ActionList = ({
12
12
  items
13
13
  }) => {
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
3
  import AvatarGroup from '@atlaskit/avatar-group';
4
- import { mq } from '../utils';
4
+ import { mq } from '../../common/utils';
5
5
  export const CollaboratorList = ({
6
6
  items,
7
7
  handleAvatarClick = () => {},
@@ -1,6 +1,6 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
- import { gs, mq } from '../utils';
3
+ import { gs, mq } from '../../common/utils';
4
4
  export const blockCardContentClassName = 'block-card-content';
5
5
  export const Content = ({
6
6
  children,
@@ -1,6 +1,6 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
- import { gs, mq } from '../utils';
3
+ import { gs, mq } from '../../common/utils';
4
4
  export const contentFooterClassName = 'smart-link-content-footer';
5
5
  export const ContentFooter = ({
6
6
  children,
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
3
  import React from 'react';
4
- import { gs } from '../utils';
4
+ import { gs } from '../../common/utils';
5
5
  export const Emoji = ({
6
6
  emoji
7
7
  }) => {
@@ -2,7 +2,7 @@
2
2
  import { jsx } from '@emotion/core';
3
3
  import React from 'react';
4
4
  import { N20A, N30A, B200, N40A, N50A } from '@atlaskit/theme/colors';
5
- import { gs, br, mq } from '../utils';
5
+ import { gs, br, mq } from '../../common/utils';
6
6
  export const Frame = (props = {
7
7
  isSelected: false,
8
8
  isHoverable: false,
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
3
  import { fontSize } from '@atlaskit/theme/constants';
4
- import { gs } from '../utils';
4
+ import { gs } from '../../common/utils';
5
5
  export const blockCardContentHeaderNameClassName = 'block-card-content-header-name';
6
6
  export const Name = ({
7
7
  name,
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
3
  import { N300 } from '@atlaskit/theme/colors';
4
- import { gs } from '../utils';
4
+ import { gs } from '../../common/utils';
5
5
  export const Provider = ({
6
6
  name,
7
7
  icon
@@ -1,6 +1,6 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
- import { gs, mq } from '../utils';
3
+ import { gs, mq } from '../../common/utils';
4
4
  export const Thumbnail = props => {
5
5
  return props.color ? jsx(ThumbnailWithBackground, props) : jsx(ThumbnailDefault, props);
6
6
  };
@@ -5,7 +5,7 @@ import { useMemo } from 'react';
5
5
  import { R300 } from '@atlaskit/theme/colors';
6
6
  import WarningIcon from '@atlaskit/icon/glyph/warning';
7
7
  import { Frame } from '../components/Frame';
8
- import { Byline } from '../components/Byline';
8
+ import { Byline } from '../../common/Byline';
9
9
  import { ActionList } from '../components/ActionList';
10
10
  import { Content } from '../components/Content';
11
11
  import { messages } from '@atlaskit/media-ui/messages';
@@ -7,7 +7,7 @@ import { R300 } from '@atlaskit/theme/colors';
7
7
  import LockIcon from '@atlaskit/icon/glyph/lock-filled';
8
8
  import { Frame } from '../components/Frame';
9
9
  import { Provider } from '../components/Provider';
10
- import { Byline } from '../components/Byline';
10
+ import { Byline } from '../../common/Byline';
11
11
  import { ActionList } from '../components/ActionList';
12
12
  import { Content } from '../components/Content';
13
13
  import { messages } from '@atlaskit/media-ui/messages';
@@ -6,7 +6,7 @@ import { R300 } from '@atlaskit/theme/colors';
6
6
  import WarningIcon from '@atlaskit/icon/glyph/warning';
7
7
  import { Frame } from '../components/Frame';
8
8
  import { Provider } from '../components/Provider';
9
- import { Byline } from '../components/Byline';
9
+ import { Byline } from '../../common/Byline';
10
10
  import { Content } from '../components/Content';
11
11
  import { messages } from '@atlaskit/media-ui/messages';
12
12
  import { ContentFooter } from '../components/ContentFooter';
@@ -5,17 +5,17 @@ import { Frame } from '../components/Frame';
5
5
  import { Thumbnail } from '../components/Thumbnail';
6
6
  import { Provider } from '../components/Provider';
7
7
  import { Name } from '../components/Name';
8
- import { Byline } from '../components/Byline';
8
+ import { Byline } from '../../common/Byline';
9
9
  import { ActionList } from '../components/ActionList';
10
10
  import { CollaboratorList } from '../components/CollaboratorList';
11
11
  import { Emoji } from '../components/Emoji';
12
- import { Icon } from '../components/Icon';
12
+ import { Icon } from '../../common/Icon';
13
13
  import { Content } from '../components/Content';
14
- import { MetadataList } from '../components/MetadataList';
14
+ import { MetadataList } from '../../common/MetadataList';
15
15
  import { LozengeBlockWrapper } from '../../InlineCard/IconAndTitleLayout/styled';
16
16
  import { ContentHeader } from '../components/ContentHeader';
17
17
  import { ContentFooter } from '../components/ContentFooter';
18
- import { gs } from '../utils';
18
+ import { gs } from '../../common/utils';
19
19
  import { handleClickCommon } from '../utils/handlers';
20
20
  export const blockCardResolvedViewClassName = 'block-card-resolved-view';
21
21
  export const blockCardResolvedViewByClassName = 'block-card-resolved-view-by';
@@ -4,7 +4,7 @@ import DocumentFilledIcon from '@atlaskit/icon/glyph/document-filled';
4
4
  import { N50, N90 } from '@atlaskit/theme/colors';
5
5
  import { fontSize } from '@atlaskit/theme/constants';
6
6
  import { Frame } from '../components/Frame';
7
- import { gs } from '../utils';
7
+ import { gs } from '../../common/utils';
8
8
  import { FormattedMessage } from 'react-intl-next';
9
9
  import { messages } from '@atlaskit/media-ui/messages';
10
10
  export const blockCardResolvingViewClassName = 'block-card-resolving-view';
@@ -5,7 +5,7 @@ import { jsx } from '@emotion/core';
5
5
  import { FormattedMessage } from 'react-intl-next';
6
6
  import { Frame } from '../components/Frame';
7
7
  import { Provider } from '../components/Provider';
8
- import { Byline } from '../components/Byline';
8
+ import { Byline } from '../../common/Byline';
9
9
  import { ActionList } from '../components/ActionList';
10
10
  import { Content } from '../components/Content';
11
11
  import { messages } from '@atlaskit/media-ui/messages';
@@ -2,7 +2,7 @@ import styled from '@emotion/styled';
2
2
  import { size as csssize, borderRadius, size, ellipsis } from '@atlaskit/media-ui';
3
3
  import { fontFamily } from '@atlaskit/theme/constants';
4
4
  import * as colors from '@atlaskit/theme/colors';
5
- import { gs as gridSize } from '../../BlockCard/utils';
5
+ import { gs as gridSize } from '../../common/utils';
6
6
  export const className = 'media-card-frame';
7
7
  export const cardShadow = ``;
8
8
 
@@ -7,7 +7,7 @@ import { R300 } from '@atlaskit/theme/colors';
7
7
  import { Frame } from '../../BlockCard/components/Frame';
8
8
  import { FormattedMessage } from 'react-intl-next';
9
9
  import { messages } from '@atlaskit/media-ui/messages';
10
- import { gs } from '../../BlockCard/utils';
10
+ import { gs } from '../../common/utils';
11
11
  export const EmbedCardErroredView = ({
12
12
  onRetry,
13
13
  isSelected = false,
@@ -6,7 +6,7 @@ import Button from '@atlaskit/button/custom-theme-button';
6
6
  import { fontSize } from '@atlaskit/theme/constants';
7
7
  import { FormattedMessage } from 'react-intl-next';
8
8
  import { messages } from '@atlaskit/media-ui/messages';
9
- import { gs as gridSize } from '../../BlockCard/utils';
9
+ import { gs as gridSize } from '../../common/utils';
10
10
  export const EmbedCardUnresolvedView = ({
11
11
  image,
12
12
  title,
@@ -17,19 +17,25 @@ const styles = css`
17
17
  const ActionGroup = ({
18
18
  items = [],
19
19
  size = SmartLinkSize.Medium,
20
- appearance
20
+ appearance,
21
+ visibleButtonsNum = 2,
22
+ onDropdownOpenChange
21
23
  }) => {
22
- const isMoreThenTwoItems = items.length > 2;
23
- const firstActions = isMoreThenTwoItems ? items.slice(0, 1) : items;
24
- const restActions = isMoreThenTwoItems ? items.slice(1) : [];
24
+ const isMoreThenTwoItems = items.length > visibleButtonsNum;
25
+ const firstActions = isMoreThenTwoItems ? items.slice(0, visibleButtonsNum - 1) : items;
26
+ const restActions = isMoreThenTwoItems ? items.slice(visibleButtonsNum - 1) : [];
25
27
  return jsx("div", {
26
28
  css: styles
27
29
  }, jsx(ButtonGroup, null, renderActionItems(firstActions, size, appearance), restActions.length > 0 ? jsx(DropdownMenu, {
30
+ onOpenChange: ({
31
+ isOpen
32
+ }) => onDropdownOpenChange && onDropdownOpenChange(isOpen),
28
33
  trigger: ({
29
34
  triggerRef,
30
35
  ...props
31
36
  }) => jsx(Button, _extends({}, props, {
32
37
  spacing: sizeToSpacing[size],
38
+ className: "action-group-more-button",
33
39
  testId: "action-group-more-button",
34
40
  iconBefore: jsx(MoreIcon, {
35
41
  label: "more"
@@ -13,9 +13,10 @@ const Block = ({
13
13
  children,
14
14
  direction = SmartLinkDirection.Horizontal,
15
15
  size = SmartLinkSize.Medium,
16
- testId = 'smart-block'
16
+ testId = 'smart-block',
17
+ extraCss
17
18
  }) => jsx("div", {
18
- css: getBlockStyles(direction, size),
19
+ css: [getBlockStyles(direction, size), extraCss],
19
20
  "data-smart-block": true,
20
21
  "data-testid": testId
21
22
  }, renderChildren(children, size));
@@ -1,11 +1,25 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import React from 'react';
2
+
3
+ /** @jsx jsx */
4
+ import React, { useState } from 'react';
5
+ import { css, jsx } from '@emotion/core';
3
6
  import { LinkIcon, Title } from '../../../elements';
4
7
  import Block from '../../block';
5
8
  import ElementGroup from '../../element-group';
6
9
  import { SmartLinkAlignment, SmartLinkDirection, SmartLinkWidth } from '../../../../../../constants';
7
10
  import { renderElementItems } from '../../utils';
8
11
  import ActionGroup from '../../action-group';
12
+ const actionOnHoverOnlyStyle = css`
13
+ .action-group-more-button {
14
+ visibility: hidden;
15
+ }
16
+
17
+ &:hover {
18
+ .action-group-more-button {
19
+ visibility: visible;
20
+ }
21
+ }
22
+ `;
9
23
 
10
24
  const TitleBlockResolvedView = ({
11
25
  maxLines,
@@ -16,30 +30,36 @@ const TitleBlockResolvedView = ({
16
30
  testId,
17
31
  theme,
18
32
  text,
33
+ showActionOnHover,
19
34
  ...blockProps
20
35
  }) => {
36
+ const [actionDropdownOpen, setActionDropdownOpen] = useState(false);
21
37
  const metadataElements = renderElementItems(metadata);
22
38
  const subtitleElements = renderElementItems(subtitle);
23
39
  const overrideText = !!text ? {
24
40
  text
25
41
  } : {};
26
- return /*#__PURE__*/React.createElement(Block, _extends({}, blockProps, {
27
- testId: `${testId}-resolved-view`
28
- }), /*#__PURE__*/React.createElement(LinkIcon, {
42
+ const extraCss = showActionOnHover && !actionDropdownOpen ? actionOnHoverOnlyStyle : undefined;
43
+ return jsx(Block, _extends({}, blockProps, {
44
+ testId: `${testId}-resolved-view`,
45
+ extraCss: extraCss
46
+ }), jsx(LinkIcon, {
29
47
  position: position
30
- }), /*#__PURE__*/React.createElement(ElementGroup, {
48
+ }), jsx(ElementGroup, {
31
49
  direction: SmartLinkDirection.Vertical,
32
50
  width: SmartLinkWidth.Flexible
33
- }, /*#__PURE__*/React.createElement(Title, _extends({
51
+ }, jsx(Title, _extends({
34
52
  maxLines: maxLines,
35
53
  theme: theme
36
- }, overrideText)), subtitleElements && /*#__PURE__*/React.createElement(ElementGroup, {
54
+ }, overrideText)), subtitleElements && jsx(ElementGroup, {
37
55
  direction: SmartLinkDirection.Horizontal
38
- }, subtitleElements)), metadataElements && /*#__PURE__*/React.createElement(ElementGroup, {
56
+ }, subtitleElements)), metadataElements && jsx(ElementGroup, {
39
57
  direction: SmartLinkDirection.Horizontal,
40
58
  align: SmartLinkAlignment.Right
41
- }, metadataElements), actions.length > 0 && /*#__PURE__*/React.createElement(ActionGroup, {
42
- items: actions
59
+ }, metadataElements), actions.length > 0 && jsx(ActionGroup, {
60
+ items: actions,
61
+ visibleButtonsNum: showActionOnHover ? 1 : 2,
62
+ onDropdownOpenChange: isOpen => setActionDropdownOpen(isOpen)
43
63
  }));
44
64
  };
45
65
 
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import Tooltip from '@atlaskit/tooltip';
3
+ import { TitleBlock, SnippetBlock, FooterBlock } from '../FlexibleCard/components/blocks';
4
+ import { Card } from '../Card';
5
+ import { HoverCardContainer } from './styled';
6
+ export const HoverCard = ({
7
+ children,
8
+ url
9
+ }) => {
10
+ const cardComponent = /*#__PURE__*/React.createElement(Card, {
11
+ appearance: "block",
12
+ url: url
13
+ }, /*#__PURE__*/React.createElement(TitleBlock, null), /*#__PURE__*/React.createElement(SnippetBlock, null), /*#__PURE__*/React.createElement(FooterBlock, null));
14
+ return /*#__PURE__*/React.createElement(Tooltip, {
15
+ content: cardComponent,
16
+ component: HoverCardContainer,
17
+ testId: "hover-card",
18
+ tag: "span"
19
+ }, children);
20
+ };
@@ -0,0 +1,9 @@
1
+ import styled from '@emotion/styled';
2
+ import { TooltipPrimitive } from '@atlaskit/tooltip';
3
+ export const HoverCardContainer = styled(TooltipPrimitive)`
4
+ background: none;
5
+ border-width: 0;
6
+ box-sizing: content-box; /* do not set this to border-box or it will break the overflow handling */
7
+ max-width: 500px;
8
+ padding: 0;
9
+ `;
@@ -0,0 +1 @@
1
+ export {};
@@ -3,6 +3,7 @@ import { Frame } from '../Frame';
3
3
  import Lozenge from '@atlaskit/lozenge';
4
4
  import { IconAndTitleLayout } from '../IconAndTitleLayout';
5
5
  import { LozengeWrapper } from '../IconAndTitleLayout/styled';
6
+ import { HoverCard } from '../../../view/HoverCard/index';
6
7
  export class InlineCardResolvedView extends React.Component {
7
8
  renderLozenge() {
8
9
  const {
@@ -28,9 +29,10 @@ export class InlineCardResolvedView extends React.Component {
28
29
  link,
29
30
  testId = 'inline-card-resolved-view',
30
31
  titleTextColor,
31
- titlePrefix
32
+ titlePrefix,
33
+ showHoverPreview = false
32
34
  } = this.props;
33
- return /*#__PURE__*/React.createElement(Frame, {
35
+ const inlineCardResolvedView = /*#__PURE__*/React.createElement(Frame, {
34
36
  testId: testId,
35
37
  link: link,
36
38
  isSelected: isSelected,
@@ -41,6 +43,14 @@ export class InlineCardResolvedView extends React.Component {
41
43
  title: title,
42
44
  titleTextColor: titleTextColor
43
45
  }), this.renderLozenge());
46
+
47
+ if (showHoverPreview && link) {
48
+ return /*#__PURE__*/React.createElement(HoverCard, {
49
+ url: link
50
+ }, inlineCardResolvedView);
51
+ }
52
+
53
+ return inlineCardResolvedView;
44
54
  }
45
55
 
46
56
  }
@@ -19,7 +19,8 @@ export const InlineCard = ({
19
19
  renderers,
20
20
  onResolve,
21
21
  testId,
22
- inlinePreloaderStyle
22
+ inlinePreloaderStyle,
23
+ showHoverPreview
23
24
  }) => {
24
25
  var _details$meta;
25
26
 
@@ -52,6 +53,7 @@ export const InlineCard = ({
52
53
  }
53
54
 
54
55
  return /*#__PURE__*/React.createElement(InlineCardResolvedView, _extends({}, resolvedProps, {
56
+ showHoverPreview: showHoverPreview,
55
57
  link: url,
56
58
  isSelected: isSelected,
57
59
  onClick: handleFrameClick,
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
3
  import { N300 } from '@atlaskit/theme/colors';
4
- import { gs, mq } from '../utils';
4
+ import { gs, mq } from './utils';
5
5
  export const Byline = ({
6
6
  text,
7
7
  children,
@@ -3,7 +3,7 @@ import { jsx } from '@emotion/core';
3
3
  import React from 'react';
4
4
  import ImageLoader from 'react-render-image';
5
5
  import LinkIcon from '@atlaskit/icon/glyph/link';
6
- import { gs } from '../utils';
6
+ import { gs } from './utils';
7
7
  export const blockCardIconImageClassName = 'block-card-icon-image';
8
8
  export const Icon = ({
9
9
  url,
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
3
  import Tooltip from '@atlaskit/tooltip';
4
- import { gs } from '../utils';
4
+ import { gs } from './utils';
5
5
  import { N300 } from '@atlaskit/theme/colors';
6
6
  export const Metadata = ({
7
7
  text,
@@ -3,7 +3,7 @@ import _extends from "@babel/runtime/helpers/extends";
3
3
  /** @jsx jsx */
4
4
  import { jsx } from '@emotion/core';
5
5
  import { Metadata } from './Metadata';
6
- import { gs } from '../utils';
6
+ import { gs } from './utils';
7
7
  export const metadataListClassName = 'smart-link-metadata-list';
8
8
  export const MetadataList = ({
9
9
  items,
@@ -17,7 +17,7 @@ https://atlassian.design/components/modal-dialog/examples#customizing-modal-dial
17
17
  import React, { useState } from 'react';
18
18
  import ModalDialog, { ModalTransition, ModalBody } from '@atlaskit/modal-dialog';
19
19
  import { Header } from './ModalHeader';
20
- import { getIframeSandboxAttribute } from '../../../utils';
20
+ import { getIframeSandboxAttribute } from '../../utils';
21
21
  const iframeStyles = {
22
22
  width: `100%`,
23
23
  height: 'calc(100vh - 248px)'
@@ -7,7 +7,7 @@ import ShortcutIcon from '@atlaskit/icon/glyph/shortcut';
7
7
  import Button from '@atlaskit/button/custom-theme-button';
8
8
  import { N100, N30A } from '@atlaskit/theme/colors';
9
9
  import { FormattedMessage } from 'react-intl-next';
10
- import { gs } from '../utils';
10
+ import { gs } from './utils';
11
11
  import { Icon } from './Icon';
12
12
  import { MetadataList } from './MetadataList';
13
13
  import { Byline } from './Byline';
@@ -1,9 +1,9 @@
1
1
  export { contentFooterClassName } from './view/BlockCard/components/ContentFooter';
2
- export { metadataListClassName } from './view/BlockCard/components/MetadataList';
2
+ export { metadataListClassName } from './view/common/MetadataList';
3
3
  export { blockCardResolvingViewClassName } from './view/BlockCard/views/ResolvingView';
4
4
  export { blockCardResolvedViewClassName, blockCardResolvedViewByClassName } from './view/BlockCard/views/ResolvedView';
5
5
  export { blockCardForbiddenViewClassName, blockCardForbiddenViewLinkClassName } from './view/BlockCard/views/ForbiddenView';
6
- export { blockCardIconImageClassName } from './view/BlockCard/components/Icon';
6
+ export { blockCardIconImageClassName } from './view/common/Icon';
7
7
  export { blockCardContentClassName } from './view/BlockCard/components/Content';
8
8
  export { blockCardContentHeaderClassName } from './view/BlockCard/components/ContentHeader';
9
9
  export { blockCardContentHeaderNameClassName } from './view/BlockCard/components/Name';
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "17.7.2",
3
+ "version": "17.7.5",
4
4
  "sideEffects": false
5
5
  }
@@ -55,7 +55,7 @@ function _previewFunction() {
55
55
  }
56
56
 
57
57
  _context.next = 5;
58
- return import('../components/Modal');
58
+ return import('../../common/Modal');
59
59
 
60
60
  case 5:
61
61
  Modal = _context.sent;
@@ -9,7 +9,7 @@ import Button from '@atlaskit/button/standard-button';
9
9
  import DropdownMenu, { DropdownItem, DropdownItemGroup } from '@atlaskit/dropdown-menu';
10
10
  import MoreIcon from '@atlaskit/icon/glyph/more';
11
11
  import { Action } from './Action';
12
- import { gs, mq } from '../utils';
12
+ import { gs, mq } from '../../common/utils';
13
13
  export var ActionList = function ActionList(_ref) {
14
14
  var items = _ref.items;
15
15
  var actionsToShow = items.slice(0, 2);
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
3
  import AvatarGroup from '@atlaskit/avatar-group';
4
- import { mq } from '../utils';
4
+ import { mq } from '../../common/utils';
5
5
  export var CollaboratorList = function CollaboratorList(_ref) {
6
6
  var items = _ref.items,
7
7
  _ref$handleAvatarClic = _ref.handleAvatarClick,
@@ -1,6 +1,6 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
- import { gs, mq } from '../utils';
3
+ import { gs, mq } from '../../common/utils';
4
4
  export var blockCardContentClassName = 'block-card-content';
5
5
  export var Content = function Content(_ref) {
6
6
  var children = _ref.children,
@@ -1,6 +1,6 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
- import { gs, mq } from '../utils';
3
+ import { gs, mq } from '../../common/utils';
4
4
  export var contentFooterClassName = 'smart-link-content-footer';
5
5
  export var ContentFooter = function ContentFooter(_ref) {
6
6
  var children = _ref.children,
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
3
  import React from 'react';
4
- import { gs } from '../utils';
4
+ import { gs } from '../../common/utils';
5
5
  export var Emoji = function Emoji(_ref) {
6
6
  var emoji = _ref.emoji;
7
7
  return jsx("span", {
@@ -8,7 +8,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
8
8
  import { jsx } from '@emotion/core';
9
9
  import React from 'react';
10
10
  import { N20A, N30A, B200, N40A, N50A } from '@atlaskit/theme/colors';
11
- import { gs, br, mq } from '../utils';
11
+ import { gs, br, mq } from '../../common/utils';
12
12
  export var Frame = function Frame() {
13
13
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
14
14
  isSelected: false,
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
3
  import { fontSize } from '@atlaskit/theme/constants';
4
- import { gs } from '../utils';
4
+ import { gs } from '../../common/utils';
5
5
  export var blockCardContentHeaderNameClassName = 'block-card-content-header-name';
6
6
  export var Name = function Name(_ref) {
7
7
  var name = _ref.name,
@@ -1,7 +1,7 @@
1
1
  /** @jsx jsx */
2
2
  import { jsx } from '@emotion/core';
3
3
  import { N300 } from '@atlaskit/theme/colors';
4
- import { gs } from '../utils';
4
+ import { gs } from '../../common/utils';
5
5
  export var Provider = function Provider(_ref) {
6
6
  var name = _ref.name,
7
7
  icon = _ref.icon;
@@ -6,7 +6,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
6
6
 
7
7
  /** @jsx jsx */
8
8
  import { jsx } from '@emotion/core';
9
- import { gs, mq } from '../utils';
9
+ import { gs, mq } from '../../common/utils';
10
10
  export var Thumbnail = function Thumbnail(props) {
11
11
  return props.color ? jsx(ThumbnailWithBackground, props) : jsx(ThumbnailDefault, props);
12
12
  };
@@ -11,7 +11,7 @@ import { useMemo } from 'react';
11
11
  import { R300 } from '@atlaskit/theme/colors';
12
12
  import WarningIcon from '@atlaskit/icon/glyph/warning';
13
13
  import { Frame } from '../components/Frame';
14
- import { Byline } from '../components/Byline';
14
+ import { Byline } from '../../common/Byline';
15
15
  import { ActionList } from '../components/ActionList';
16
16
  import { Content } from '../components/Content';
17
17
  import { messages } from '@atlaskit/media-ui/messages';
@@ -8,7 +8,7 @@ import { R300 } from '@atlaskit/theme/colors';
8
8
  import LockIcon from '@atlaskit/icon/glyph/lock-filled';
9
9
  import { Frame } from '../components/Frame';
10
10
  import { Provider } from '../components/Provider';
11
- import { Byline } from '../components/Byline';
11
+ import { Byline } from '../../common/Byline';
12
12
  import { ActionList } from '../components/ActionList';
13
13
  import { Content } from '../components/Content';
14
14
  import { messages } from '@atlaskit/media-ui/messages';
@@ -12,7 +12,7 @@ import { R300 } from '@atlaskit/theme/colors';
12
12
  import WarningIcon from '@atlaskit/icon/glyph/warning';
13
13
  import { Frame } from '../components/Frame';
14
14
  import { Provider } from '../components/Provider';
15
- import { Byline } from '../components/Byline';
15
+ import { Byline } from '../../common/Byline';
16
16
  import { Content } from '../components/Content';
17
17
  import { messages } from '@atlaskit/media-ui/messages';
18
18
  import { ContentFooter } from '../components/ContentFooter';