@atlaskit/smart-card 18.0.8 → 18.0.11

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # @atlaskit/smart-card
2
2
 
3
+ ## 18.0.11
4
+
5
+ ### Patch Changes
6
+
7
+ - [`ec98e2d8ebc`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ec98e2d8ebc) - feat: Expose `useSmartLinkReload` hook.
8
+
9
+ ### Example Usage
10
+
11
+ As a consumer if you want to be able to reload the data backing a Smart Link, you may do:
12
+
13
+ ```tsx
14
+ export const MyComponent = () => {
15
+ const reloader = useSmartLinkReload(url, analytics);
16
+
17
+ return (
18
+ <MyInterfaceItem>
19
+ <Card />
20
+ <Button text="Retry" onClick={reloader} />
21
+ </MyInterfaceItem>
22
+ );
23
+ };
24
+ ```
25
+
26
+ ## 18.0.10
27
+
28
+ ### Patch Changes
29
+
30
+ - [`b687926f768`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b687926f768) - Fix bug where individual action item was not hidden by default with showActionOnHover flag
31
+
32
+ ## 18.0.9
33
+
34
+ ### Patch Changes
35
+
36
+ - [`6adaa6b5c18`](https://bitbucket.org/atlassian/atlassian-frontend/commits/6adaa6b5c18) - Updated default renderer onClick to not fire on a Flexible UI link to prevent links from being openned twice
37
+
3
38
  ## 18.0.8
4
39
 
5
40
  ### Patch Changes
package/dist/cjs/hooks.js CHANGED
@@ -9,5 +9,13 @@ Object.defineProperty(exports, "useSmartLinkActions", {
9
9
  return _useSmartLinkActions.useSmartLinkActions;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "useSmartLinkReload", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _useSmartLinkReload.useSmartLinkReload;
16
+ }
17
+ });
18
+
19
+ var _useSmartLinkActions = require("./state/hooks-external/useSmartLinkActions");
12
20
 
13
- var _useSmartLinkActions = require("./state/hooks-external/useSmartLinkActions");
21
+ var _useSmartLinkReload = require("./state/hooks-external/useSmartLinkReload");
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useSmartLinkReload = useSmartLinkReload;
9
+
10
+ var _react = require("react");
11
+
12
+ var _uuid = _interopRequireDefault(require("uuid"));
13
+
14
+ var _actions = require("../actions");
15
+
16
+ var _analytics = require("../analytics");
17
+
18
+ /**
19
+ * Exposes a programmatic way to reload the data being used to render a Smart Link.
20
+ * @param
21
+ * @returns
22
+ */
23
+ function useSmartLinkReload(_ref) {
24
+ var url = _ref.url,
25
+ analyticsHandler = _ref.analyticsHandler;
26
+ var id = (0, _react.useMemo)(function () {
27
+ return (0, _uuid.default)();
28
+ }, []);
29
+ var linkAnalytics = (0, _analytics.useSmartLinkAnalytics)(analyticsHandler);
30
+ var linkActions = (0, _actions.useSmartCardActions)(id, url, linkAnalytics);
31
+ return linkActions.reload;
32
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "18.0.8",
3
+ "version": "18.0.11",
4
4
  "sideEffects": false
5
5
  }
@@ -80,7 +80,11 @@ function CardWithUrlContent(_ref) {
80
80
  analytics.ui.cardClickedEvent(isFlexibleUi ? 'flexible' : appearance, definitionId, extensionKey, isModifierKeyPressed);
81
81
  }
82
82
 
83
- onClick ? onClick(event) : handleClick(event);
83
+ if (onClick) {
84
+ onClick(event);
85
+ } else if (!isFlexibleUi) {
86
+ handleClick(event);
87
+ }
84
88
  }, [state.status, analytics.ui, appearance, definitionId, extensionKey, onClick, handleClick, isFlexibleUi]);
85
89
  var handleAuthorize = (0, _react.useCallback)(function () {
86
90
  return actions.authorize(appearance);
@@ -48,7 +48,8 @@ var ActionGroup = function ActionGroup(_ref) {
48
48
  var firstActions = isMoreThenTwoItems ? items.slice(0, visibleButtonsNum - 1) : items;
49
49
  var restActions = isMoreThenTwoItems ? items.slice(visibleButtonsNum - 1) : [];
50
50
  return (0, _core.jsx)("div", {
51
- css: styles
51
+ css: styles,
52
+ className: "actions-button-group"
52
53
  }, (0, _core.jsx)(_buttonGroup.default, null, (0, _utils.renderActionItems)(firstActions, size, appearance), restActions.length > 0 ? (0, _core.jsx)(_dropdownMenu.default, {
53
54
  onOpenChange: function onOpenChange(_ref2) {
54
55
  var isOpen = _ref2.isOpen;
@@ -59,7 +60,6 @@ var ActionGroup = function ActionGroup(_ref) {
59
60
  props = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
60
61
  return (0, _core.jsx)(_standardButton.default, (0, _extends2.default)({}, props, {
61
62
  spacing: _action.sizeToSpacing[size],
62
- className: "action-group-more-button",
63
63
  testId: "action-group-more-button",
64
64
  iconBefore: (0, _core.jsx)(_more.default, {
65
65
  label: "more"
@@ -41,7 +41,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
41
41
 
42
42
  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; }
43
43
 
44
- var actionOnHoverOnlyStyle = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n .action-group-more-button {\n visibility: hidden;\n }\n\n &:hover {\n .action-group-more-button {\n visibility: visible;\n }\n }\n"])));
44
+ var actionOnHoverOnlyStyle = (0, _core.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n .actions-button-group {\n visibility: hidden;\n }\n\n &:hover {\n .actions-button-group {\n visibility: visible;\n }\n }\n"])));
45
45
  exports.actionOnHoverOnlyStyle = actionOnHoverOnlyStyle;
46
46
 
47
47
  var BaseTitleBlockComponent = function BaseTitleBlockComponent(_ref) {
@@ -1 +1,2 @@
1
- export { useSmartLinkActions } from './state/hooks-external/useSmartLinkActions';
1
+ export { useSmartLinkActions } from './state/hooks-external/useSmartLinkActions';
2
+ export { useSmartLinkReload } from './state/hooks-external/useSmartLinkReload';
@@ -0,0 +1,19 @@
1
+ import { useMemo } from 'react';
2
+ import uuid from 'uuid';
3
+ import { useSmartCardActions as useLinkActions } from '../actions';
4
+ import { useSmartLinkAnalytics as useLinkAnalytics } from '../analytics';
5
+
6
+ /**
7
+ * Exposes a programmatic way to reload the data being used to render a Smart Link.
8
+ * @param
9
+ * @returns
10
+ */
11
+ export function useSmartLinkReload({
12
+ url,
13
+ analyticsHandler
14
+ }) {
15
+ const id = useMemo(() => uuid(), []);
16
+ const linkAnalytics = useLinkAnalytics(analyticsHandler);
17
+ const linkActions = useLinkActions(id, url, linkAnalytics);
18
+ return linkActions.reload;
19
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "18.0.8",
3
+ "version": "18.0.11",
4
4
  "sideEffects": false
5
5
  }
@@ -52,7 +52,11 @@ export function CardWithUrlContent({
52
52
  analytics.ui.cardClickedEvent(isFlexibleUi ? 'flexible' : appearance, definitionId, extensionKey, isModifierKeyPressed);
53
53
  }
54
54
 
55
- onClick ? onClick(event) : handleClick(event);
55
+ if (onClick) {
56
+ onClick(event);
57
+ } else if (!isFlexibleUi) {
58
+ handleClick(event);
59
+ }
56
60
  }, [state.status, analytics.ui, appearance, definitionId, extensionKey, onClick, handleClick, isFlexibleUi]);
57
61
  const handleAuthorize = useCallback(() => actions.authorize(appearance), [actions, appearance]);
58
62
  const handleRetry = useCallback(() => {
@@ -25,7 +25,8 @@ const ActionGroup = ({
25
25
  const firstActions = isMoreThenTwoItems ? items.slice(0, visibleButtonsNum - 1) : items;
26
26
  const restActions = isMoreThenTwoItems ? items.slice(visibleButtonsNum - 1) : [];
27
27
  return jsx("div", {
28
- css: styles
28
+ css: styles,
29
+ className: "actions-button-group"
29
30
  }, jsx(ButtonGroup, null, renderActionItems(firstActions, size, appearance), restActions.length > 0 ? jsx(DropdownMenu, {
30
31
  onOpenChange: ({
31
32
  isOpen
@@ -35,7 +36,6 @@ const ActionGroup = ({
35
36
  ...props
36
37
  }) => jsx(Button, _extends({}, props, {
37
38
  spacing: sizeToSpacing[size],
38
- className: "action-group-more-button",
39
39
  testId: "action-group-more-button",
40
40
  iconBefore: jsx(MoreIcon, {
41
41
  label: "more"
@@ -11,12 +11,12 @@ import { SmartLinkAlignment, SmartLinkWidth, SmartLinkDirection } from '../../..
11
11
  import ElementGroup from '../element-group';
12
12
  import { renderElementItems } from '../utils';
13
13
  export const actionOnHoverOnlyStyle = css`
14
- .action-group-more-button {
14
+ .actions-button-group {
15
15
  visibility: hidden;
16
16
  }
17
17
 
18
18
  &:hover {
19
- .action-group-more-button {
19
+ .actions-button-group {
20
20
  visibility: visible;
21
21
  }
22
22
  }
package/dist/esm/hooks.js CHANGED
@@ -1 +1,2 @@
1
- export { useSmartLinkActions } from './state/hooks-external/useSmartLinkActions';
1
+ export { useSmartLinkActions } from './state/hooks-external/useSmartLinkActions';
2
+ export { useSmartLinkReload } from './state/hooks-external/useSmartLinkReload';
@@ -0,0 +1,20 @@
1
+ import { useMemo } from 'react';
2
+ import uuid from 'uuid';
3
+ import { useSmartCardActions as useLinkActions } from '../actions';
4
+ import { useSmartLinkAnalytics as useLinkAnalytics } from '../analytics';
5
+
6
+ /**
7
+ * Exposes a programmatic way to reload the data being used to render a Smart Link.
8
+ * @param
9
+ * @returns
10
+ */
11
+ export function useSmartLinkReload(_ref) {
12
+ var url = _ref.url,
13
+ analyticsHandler = _ref.analyticsHandler;
14
+ var id = useMemo(function () {
15
+ return uuid();
16
+ }, []);
17
+ var linkAnalytics = useLinkAnalytics(analyticsHandler);
18
+ var linkActions = useLinkActions(id, url, linkAnalytics);
19
+ return linkActions.reload;
20
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "18.0.8",
3
+ "version": "18.0.11",
4
4
  "sideEffects": false
5
5
  }
@@ -54,7 +54,11 @@ export function CardWithUrlContent(_ref) {
54
54
  analytics.ui.cardClickedEvent(isFlexibleUi ? 'flexible' : appearance, definitionId, extensionKey, isModifierKeyPressed);
55
55
  }
56
56
 
57
- onClick ? onClick(event) : handleClick(event);
57
+ if (onClick) {
58
+ onClick(event);
59
+ } else if (!isFlexibleUi) {
60
+ handleClick(event);
61
+ }
58
62
  }, [state.status, analytics.ui, appearance, definitionId, extensionKey, onClick, handleClick, isFlexibleUi]);
59
63
  var handleAuthorize = useCallback(function () {
60
64
  return actions.authorize(appearance);
@@ -29,7 +29,8 @@ var ActionGroup = function ActionGroup(_ref) {
29
29
  var firstActions = isMoreThenTwoItems ? items.slice(0, visibleButtonsNum - 1) : items;
30
30
  var restActions = isMoreThenTwoItems ? items.slice(visibleButtonsNum - 1) : [];
31
31
  return jsx("div", {
32
- css: styles
32
+ css: styles,
33
+ className: "actions-button-group"
33
34
  }, jsx(ButtonGroup, null, renderActionItems(firstActions, size, appearance), restActions.length > 0 ? jsx(DropdownMenu, {
34
35
  onOpenChange: function onOpenChange(_ref2) {
35
36
  var isOpen = _ref2.isOpen;
@@ -41,7 +42,6 @@ var ActionGroup = function ActionGroup(_ref) {
41
42
 
42
43
  return jsx(Button, _extends({}, props, {
43
44
  spacing: sizeToSpacing[size],
44
- className: "action-group-more-button",
45
45
  testId: "action-group-more-button",
46
46
  iconBefore: jsx(MoreIcon, {
47
47
  label: "more"
@@ -16,7 +16,7 @@ import ActionGroup from '../action-group';
16
16
  import { SmartLinkAlignment, SmartLinkWidth, SmartLinkDirection } from '../../../../../constants';
17
17
  import ElementGroup from '../element-group';
18
18
  import { renderElementItems } from '../utils';
19
- export var actionOnHoverOnlyStyle = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .action-group-more-button {\n visibility: hidden;\n }\n\n &:hover {\n .action-group-more-button {\n visibility: visible;\n }\n }\n"])));
19
+ export var actionOnHoverOnlyStyle = css(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .actions-button-group {\n visibility: hidden;\n }\n\n &:hover {\n .actions-button-group {\n visibility: visible;\n }\n }\n"])));
20
20
  export var BaseTitleBlockComponent = function BaseTitleBlockComponent(_ref) {
21
21
  var children = _ref.children,
22
22
  blockTestIdPostfix = _ref.blockTestIdPostfix,
@@ -1 +1,2 @@
1
1
  export { useSmartLinkActions } from './state/hooks-external/useSmartLinkActions';
2
+ export { useSmartLinkReload } from './state/hooks-external/useSmartLinkReload';
@@ -0,0 +1,19 @@
1
+ import type { AnalyticsHandler } from '../../utils/types';
2
+ export interface UseSmartLinkReloadOpts {
3
+ /**
4
+ * Smart Link URL for which the reload will be invoked.
5
+ * @example https://start.atlassian.com
6
+ */
7
+ url: string;
8
+ /**
9
+ * Callback for sending analytics events.
10
+ * @description Accepts an analytics payload and fires it to a system.
11
+ */
12
+ analyticsHandler: AnalyticsHandler;
13
+ }
14
+ /**
15
+ * Exposes a programmatic way to reload the data being used to render a Smart Link.
16
+ * @param
17
+ * @returns
18
+ */
19
+ export declare function useSmartLinkReload({ url, analyticsHandler, }: UseSmartLinkReloadOpts): () => void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/smart-card",
3
- "version": "18.0.8",
3
+ "version": "18.0.11",
4
4
  "description": "Smart card component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"