@atlaskit/button 17.7.1 → 17.8.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 (42) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/button-group/package.json +1 -1
  3. package/custom-theme-button/package.json +1 -1
  4. package/dist/cjs/new-button/variants/default/button.js +3 -1
  5. package/dist/cjs/new-button/variants/default/use-default-button.js +10 -2
  6. package/dist/cjs/new-button/variants/icon/button.js +3 -1
  7. package/dist/cjs/new-button/variants/icon/use-icon-button.js +9 -2
  8. package/dist/cjs/new-button/variants/shared/loading-overlay.js +49 -0
  9. package/dist/cjs/old-button/shared/button-base.js +1 -1
  10. package/dist/es2019/new-button/variants/default/button.js +2 -0
  11. package/dist/es2019/new-button/variants/default/use-default-button.js +9 -2
  12. package/dist/es2019/new-button/variants/icon/button.js +2 -0
  13. package/dist/es2019/new-button/variants/icon/use-icon-button.js +9 -2
  14. package/dist/es2019/new-button/variants/shared/loading-overlay.js +44 -0
  15. package/dist/es2019/old-button/shared/button-base.js +1 -1
  16. package/dist/esm/new-button/variants/default/button.js +3 -1
  17. package/dist/esm/new-button/variants/default/use-default-button.js +10 -2
  18. package/dist/esm/new-button/variants/icon/button.js +3 -1
  19. package/dist/esm/new-button/variants/icon/use-icon-button.js +9 -2
  20. package/dist/esm/new-button/variants/shared/loading-overlay.js +42 -0
  21. package/dist/esm/old-button/shared/button-base.js +1 -1
  22. package/dist/types/new-button/variants/default/link.d.ts +3 -3
  23. package/dist/types/new-button/variants/default/types.d.ts +4 -0
  24. package/dist/types/new-button/variants/default/use-default-button.d.ts +1 -1
  25. package/dist/types/new-button/variants/icon/link.d.ts +3 -3
  26. package/dist/types/new-button/variants/icon/types.d.ts +4 -0
  27. package/dist/types/new-button/variants/icon/use-icon-button.d.ts +1 -1
  28. package/dist/types/new-button/variants/shared/loading-overlay.d.ts +8 -0
  29. package/dist/types/utils/variants.d.ts +2 -2
  30. package/dist/types-ts4.5/new-button/variants/default/link.d.ts +3 -3
  31. package/dist/types-ts4.5/new-button/variants/default/types.d.ts +4 -0
  32. package/dist/types-ts4.5/new-button/variants/default/use-default-button.d.ts +1 -1
  33. package/dist/types-ts4.5/new-button/variants/icon/link.d.ts +3 -3
  34. package/dist/types-ts4.5/new-button/variants/icon/types.d.ts +4 -0
  35. package/dist/types-ts4.5/new-button/variants/icon/use-icon-button.d.ts +1 -1
  36. package/dist/types-ts4.5/new-button/variants/shared/loading-overlay.d.ts +8 -0
  37. package/dist/types-ts4.5/utils/variants.d.ts +2 -2
  38. package/loading-button/package.json +1 -1
  39. package/new/package.json +1 -1
  40. package/package.json +6 -6
  41. package/standard-button/package.json +1 -1
  42. package/types/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/button
2
2
 
3
+ ## 17.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#85228](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/85228) [`9564de632638`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/9564de632638) - Introduces isLoading prop to the new Button and IconButton components. When set to true a traditional loading spinner will be shown.
8
+
9
+ ## 17.7.2
10
+
11
+ ### Patch Changes
12
+
13
+ - [#83116](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/83116) [`8d4e99057fe0`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/8d4e99057fe0) - Upgrade Typescript from `4.9.5` to `5.4.2`
14
+
3
15
  ## 17.7.1
4
16
 
5
17
  ### Patch Changes
@@ -6,7 +6,7 @@
6
6
  "sideEffects": false,
7
7
  "types": "../dist/types/entry-points/button-group.d.ts",
8
8
  "typesVersions": {
9
- ">=4.5 <4.9": {
9
+ ">=4.5 <5.4": {
10
10
  "*": [
11
11
  "../dist/types-ts4.5/entry-points/button-group.d.ts"
12
12
  ]
@@ -6,7 +6,7 @@
6
6
  "sideEffects": false,
7
7
  "types": "../dist/types/entry-points/custom-theme-button.d.ts",
8
8
  "typesVersions": {
9
- ">=4.5 <4.9": {
9
+ ">=4.5 <5.4": {
10
10
  "*": [
11
11
  "../dist/types-ts4.5/entry-points/custom-theme-button.d.ts"
12
12
  ]
@@ -10,7 +10,7 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
  var _pressable = _interopRequireDefault(require("@atlaskit/primitives/pressable"));
12
12
  var _useDefaultButton = _interopRequireDefault(require("./use-default-button"));
13
- var _excluded = ["analyticsContext", "interactionName", "autoFocus", "appearance", "spacing", "isDisabled", "isSelected", "iconBefore", "UNSAFE_iconAfter_size", "iconAfter", "UNSAFE_iconBefore_size", "children", "shouldFitContainer", "overlay", "onClick", "onMouseDownCapture", "onMouseUpCapture", "onKeyDownCapture", "onKeyUpCapture", "onTouchStartCapture", "onTouchEndCapture", "onPointerDownCapture", "onPointerUpCapture", "onClickCapture", "type", "testId"];
13
+ var _excluded = ["analyticsContext", "interactionName", "autoFocus", "appearance", "spacing", "isDisabled", "isSelected", "iconBefore", "isLoading", "UNSAFE_iconAfter_size", "iconAfter", "UNSAFE_iconBefore_size", "children", "shouldFitContainer", "overlay", "onClick", "onMouseDownCapture", "onMouseUpCapture", "onKeyDownCapture", "onKeyUpCapture", "onTouchStartCapture", "onTouchEndCapture", "onPointerDownCapture", "onPointerUpCapture", "onClickCapture", "type", "testId"];
14
14
  /**
15
15
  * __Button__
16
16
  *
@@ -29,6 +29,7 @@ var Button = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwa
29
29
  isDisabled = _ref.isDisabled,
30
30
  isSelected = _ref.isSelected,
31
31
  iconBefore = _ref.iconBefore,
32
+ isLoading = _ref.isLoading,
32
33
  UNSAFE_iconAfter_size = _ref.UNSAFE_iconAfter_size,
33
34
  iconAfter = _ref.iconAfter,
34
35
  UNSAFE_iconBefore_size = _ref.UNSAFE_iconBefore_size,
@@ -62,6 +63,7 @@ var Button = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwa
62
63
  interactionName: interactionName,
63
64
  isDisabled: isDisabled,
64
65
  isSelected: isSelected,
66
+ isLoading: isLoading,
65
67
  onClick: onClick,
66
68
  onMouseDownCapture: onMouseDownCapture,
67
69
  onMouseUpCapture: onMouseUpCapture,
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _content = _interopRequireDefault(require("../shared/content"));
11
+ var _loadingOverlay = _interopRequireDefault(require("../shared/loading-overlay"));
11
12
  var _useButtonBase = _interopRequireDefault(require("../shared/use-button-base"));
12
13
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
13
14
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -32,6 +33,8 @@ var useDefaultButton = function useDefaultButton(_ref) {
32
33
  interactionName = _ref.interactionName,
33
34
  isDisabled = _ref.isDisabled,
34
35
  isSelected = _ref.isSelected,
36
+ _ref$isLoading = _ref.isLoading,
37
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
35
38
  children = _ref.children,
36
39
  onClick = _ref.onClick,
37
40
  onMouseDownCapture = _ref.onMouseDownCapture,
@@ -47,7 +50,7 @@ var useDefaultButton = function useDefaultButton(_ref) {
47
50
  ref = _ref.ref,
48
51
  shouldFitContainer = _ref.shouldFitContainer,
49
52
  spacing = _ref.spacing;
50
- var hasOverlay = Boolean(overlay);
53
+ var hasOverlay = Boolean(overlay || isLoading);
51
54
  var baseProps = (0, _useButtonBase.default)({
52
55
  analyticsContext: analyticsContext,
53
56
  appearance: appearance,
@@ -81,7 +84,12 @@ var useDefaultButton = function useDefaultButton(_ref) {
81
84
  onPointerDownCapture: onPointerDownCapture,
82
85
  onPointerUpCapture: onPointerUpCapture,
83
86
  onClickCapture: onClickCapture,
84
- overlay: overlay,
87
+ overlay: isLoading ? (0, _loadingOverlay.default)({
88
+ spacing: spacing,
89
+ appearance: appearance,
90
+ isDisabled: isDisabled,
91
+ isSelected: isSelected
92
+ }) : overlay,
85
93
  ref: ref,
86
94
  shouldFitContainer: shouldFitContainer,
87
95
  spacing: spacing,
@@ -10,7 +10,7 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
  var _pressable = _interopRequireDefault(require("@atlaskit/primitives/pressable"));
12
12
  var _useIconButton = _interopRequireDefault(require("./use-icon-button"));
13
- var _excluded = ["analyticsContext", "interactionName", "autoFocus", "appearance", "spacing", "isDisabled", "isSelected", "icon", "label", "overlay", "onClick", "onMouseDownCapture", "onMouseUpCapture", "onKeyDownCapture", "onKeyUpCapture", "onTouchStartCapture", "onTouchEndCapture", "onPointerDownCapture", "onPointerUpCapture", "onClickCapture", "shape", "type", "testId", "UNSAFE_size", "aria-label"];
13
+ var _excluded = ["analyticsContext", "interactionName", "autoFocus", "appearance", "spacing", "isDisabled", "isSelected", "isLoading", "icon", "label", "overlay", "onClick", "onMouseDownCapture", "onMouseUpCapture", "onKeyDownCapture", "onKeyUpCapture", "onTouchStartCapture", "onTouchEndCapture", "onPointerDownCapture", "onPointerUpCapture", "onClickCapture", "shape", "type", "testId", "UNSAFE_size", "aria-label"];
14
14
  /**
15
15
  * __Icon Button__
16
16
  *
@@ -28,6 +28,7 @@ var IconButton = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.f
28
28
  spacing = _ref.spacing,
29
29
  isDisabled = _ref.isDisabled,
30
30
  isSelected = _ref.isSelected,
31
+ isLoading = _ref.isLoading,
31
32
  icon = _ref.icon,
32
33
  label = _ref.label,
33
34
  overlay = _ref.overlay,
@@ -61,6 +62,7 @@ var IconButton = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.f
61
62
  interactionName: interactionName,
62
63
  isDisabled: isDisabled,
63
64
  isSelected: isSelected,
65
+ isLoading: isLoading,
64
66
  label: label,
65
67
  onClick: onClick,
66
68
  onMouseDownCapture: onMouseDownCapture,
@@ -8,6 +8,7 @@ exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
10
10
  var _content = _interopRequireDefault(require("../shared/content"));
11
+ var _loadingOverlay = _interopRequireDefault(require("../shared/loading-overlay"));
11
12
  var _useButtonBase = _interopRequireDefault(require("../shared/use-button-base"));
12
13
  /**
13
14
  * __Use icon button__
@@ -27,6 +28,7 @@ var useIconButton = function useIconButton(_ref) {
27
28
  interactionName = _ref.interactionName,
28
29
  isDisabled = _ref.isDisabled,
29
30
  isSelected = _ref.isSelected,
31
+ isLoading = _ref.isLoading,
30
32
  label = _ref.label,
31
33
  onClick = _ref.onClick,
32
34
  onMouseDownCapture = _ref.onMouseDownCapture,
@@ -44,7 +46,7 @@ var useIconButton = function useIconButton(_ref) {
44
46
  shouldFitContainer = _ref.shouldFitContainer,
45
47
  spacing = _ref.spacing,
46
48
  UNSAFE_size = _ref.UNSAFE_size;
47
- var hasOverlay = Boolean(overlay);
49
+ var hasOverlay = Boolean(overlay || isLoading);
48
50
  var isCircle = shape === 'circle';
49
51
  var baseProps = (0, _useButtonBase.default)({
50
52
  analyticsContext: analyticsContext,
@@ -73,7 +75,12 @@ var useIconButton = function useIconButton(_ref) {
73
75
  onPointerDownCapture: onPointerDownCapture,
74
76
  onPointerUpCapture: onPointerUpCapture,
75
77
  onClickCapture: onClickCapture,
76
- overlay: overlay,
78
+ overlay: isLoading ? (0, _loadingOverlay.default)({
79
+ spacing: spacing,
80
+ appearance: appearance,
81
+ isDisabled: isDisabled,
82
+ isSelected: isSelected
83
+ }) : overlay,
77
84
  ref: ref,
78
85
  shouldFitContainer: shouldFitContainer,
79
86
  spacing: spacing
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = renderLoadingOverlay;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
10
+ function getIconSpacing(spacing) {
11
+ switch (spacing) {
12
+ case 'compact':
13
+ return 'small';
14
+ case 'none':
15
+ return 'xsmall';
16
+ default:
17
+ return 'medium';
18
+ }
19
+ }
20
+ function getSpinnerAppearance(_ref) {
21
+ var appearance = _ref.appearance,
22
+ isDisabled = _ref.isDisabled,
23
+ isSelected = _ref.isSelected;
24
+ if (isDisabled) {
25
+ return 'inherit';
26
+ }
27
+ if (isSelected) {
28
+ return 'invert';
29
+ }
30
+ if (appearance === 'primary' || appearance === 'danger') {
31
+ return 'invert';
32
+ }
33
+ return 'inherit';
34
+ }
35
+ function renderLoadingOverlay(_ref2) {
36
+ var appearance = _ref2.appearance,
37
+ spacing = _ref2.spacing,
38
+ isDisabled = _ref2.isDisabled,
39
+ isSelected = _ref2.isSelected;
40
+ return /*#__PURE__*/_react.default.createElement(_spinner.default, {
41
+ label: ", Loading",
42
+ size: getIconSpacing(spacing),
43
+ appearance: getSpinnerAppearance({
44
+ appearance: appearance,
45
+ isDisabled: isDisabled,
46
+ isSelected: isSelected
47
+ })
48
+ });
49
+ }
@@ -117,7 +117,7 @@ var _default = exports.default = /*#__PURE__*/_react.default.forwardRef(function
117
117
  action: 'clicked',
118
118
  componentName: 'button',
119
119
  packageName: "@atlaskit/button",
120
- packageVersion: "17.7.1",
120
+ packageVersion: "17.8.0",
121
121
  analyticsData: analyticsContext
122
122
  });
123
123
 
@@ -20,6 +20,7 @@ const Button = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function B
20
20
  isDisabled,
21
21
  isSelected,
22
22
  iconBefore,
23
+ isLoading,
23
24
  UNSAFE_iconAfter_size,
24
25
  iconAfter,
25
26
  UNSAFE_iconBefore_size,
@@ -53,6 +54,7 @@ const Button = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function B
53
54
  interactionName,
54
55
  isDisabled,
55
56
  isSelected,
57
+ isLoading,
56
58
  onClick,
57
59
  onMouseDownCapture,
58
60
  onMouseUpCapture,
@@ -1,5 +1,6 @@
1
1
  import React, { Fragment } from 'react';
2
2
  import Content from '../shared/content';
3
+ import renderLoadingOverlay from '../shared/loading-overlay';
3
4
  import useButtonBase from '../shared/use-button-base';
4
5
  /**
5
6
  * __Use default button base__
@@ -22,6 +23,7 @@ const useDefaultButton = ({
22
23
  interactionName,
23
24
  isDisabled,
24
25
  isSelected,
26
+ isLoading = false,
25
27
  children,
26
28
  onClick,
27
29
  onMouseDownCapture,
@@ -38,7 +40,7 @@ const useDefaultButton = ({
38
40
  shouldFitContainer,
39
41
  spacing
40
42
  }) => {
41
- const hasOverlay = Boolean(overlay);
43
+ const hasOverlay = Boolean(overlay || isLoading);
42
44
  const baseProps = useButtonBase({
43
45
  analyticsContext,
44
46
  appearance,
@@ -72,7 +74,12 @@ const useDefaultButton = ({
72
74
  onPointerDownCapture,
73
75
  onPointerUpCapture,
74
76
  onClickCapture,
75
- overlay,
77
+ overlay: isLoading ? renderLoadingOverlay({
78
+ spacing,
79
+ appearance,
80
+ isDisabled,
81
+ isSelected
82
+ }) : overlay,
76
83
  ref,
77
84
  shouldFitContainer,
78
85
  spacing,
@@ -19,6 +19,7 @@ const IconButton = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functi
19
19
  spacing,
20
20
  isDisabled,
21
21
  isSelected,
22
+ isLoading,
22
23
  icon,
23
24
  label,
24
25
  overlay,
@@ -53,6 +54,7 @@ const IconButton = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(functi
53
54
  interactionName,
54
55
  isDisabled,
55
56
  isSelected,
57
+ isLoading,
56
58
  label,
57
59
  onClick,
58
60
  onMouseDownCapture,
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import VisuallyHidden from '@atlaskit/visually-hidden';
3
3
  import Content from '../shared/content';
4
+ import renderLoadingOverlay from '../shared/loading-overlay';
4
5
  import useButtonBase from '../shared/use-button-base';
5
6
  /**
6
7
  * __Use icon button__
@@ -20,6 +21,7 @@ const useIconButton = ({
20
21
  interactionName,
21
22
  isDisabled,
22
23
  isSelected,
24
+ isLoading,
23
25
  label,
24
26
  onClick,
25
27
  onMouseDownCapture,
@@ -38,7 +40,7 @@ const useIconButton = ({
38
40
  spacing,
39
41
  UNSAFE_size
40
42
  }) => {
41
- const hasOverlay = Boolean(overlay);
43
+ const hasOverlay = Boolean(overlay || isLoading);
42
44
  const isCircle = shape === 'circle';
43
45
  const baseProps = useButtonBase({
44
46
  analyticsContext,
@@ -67,7 +69,12 @@ const useIconButton = ({
67
69
  onPointerDownCapture,
68
70
  onPointerUpCapture,
69
71
  onClickCapture,
70
- overlay,
72
+ overlay: isLoading ? renderLoadingOverlay({
73
+ spacing,
74
+ appearance,
75
+ isDisabled,
76
+ isSelected
77
+ }) : overlay,
71
78
  ref,
72
79
  shouldFitContainer,
73
80
  spacing
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import Spinner from '@atlaskit/spinner';
3
+ function getIconSpacing(spacing) {
4
+ switch (spacing) {
5
+ case 'compact':
6
+ return 'small';
7
+ case 'none':
8
+ return 'xsmall';
9
+ default:
10
+ return 'medium';
11
+ }
12
+ }
13
+ function getSpinnerAppearance({
14
+ appearance,
15
+ isDisabled,
16
+ isSelected
17
+ }) {
18
+ if (isDisabled) {
19
+ return 'inherit';
20
+ }
21
+ if (isSelected) {
22
+ return 'invert';
23
+ }
24
+ if (appearance === 'primary' || appearance === 'danger') {
25
+ return 'invert';
26
+ }
27
+ return 'inherit';
28
+ }
29
+ export default function renderLoadingOverlay({
30
+ appearance,
31
+ spacing,
32
+ isDisabled,
33
+ isSelected
34
+ }) {
35
+ return /*#__PURE__*/React.createElement(Spinner, {
36
+ label: ", Loading",
37
+ size: getIconSpacing(spacing),
38
+ appearance: getSpinnerAppearance({
39
+ appearance,
40
+ isDisabled,
41
+ isSelected
42
+ })
43
+ });
44
+ }
@@ -102,7 +102,7 @@ export default /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {
102
102
  action: 'clicked',
103
103
  componentName: 'button',
104
104
  packageName: "@atlaskit/button",
105
- packageVersion: "17.7.1",
105
+ packageVersion: "17.8.0",
106
106
  analyticsData: analyticsContext
107
107
  });
108
108
 
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["analyticsContext", "interactionName", "autoFocus", "appearance", "spacing", "isDisabled", "isSelected", "iconBefore", "UNSAFE_iconAfter_size", "iconAfter", "UNSAFE_iconBefore_size", "children", "shouldFitContainer", "overlay", "onClick", "onMouseDownCapture", "onMouseUpCapture", "onKeyDownCapture", "onKeyUpCapture", "onTouchStartCapture", "onTouchEndCapture", "onPointerDownCapture", "onPointerUpCapture", "onClickCapture", "type", "testId"];
3
+ var _excluded = ["analyticsContext", "interactionName", "autoFocus", "appearance", "spacing", "isDisabled", "isSelected", "iconBefore", "isLoading", "UNSAFE_iconAfter_size", "iconAfter", "UNSAFE_iconBefore_size", "children", "shouldFitContainer", "overlay", "onClick", "onMouseDownCapture", "onMouseUpCapture", "onKeyDownCapture", "onKeyUpCapture", "onTouchStartCapture", "onTouchEndCapture", "onPointerDownCapture", "onPointerUpCapture", "onClickCapture", "type", "testId"];
4
4
  import React from 'react';
5
5
  import UNSAFE_PRESSABLE from '@atlaskit/primitives/pressable';
6
6
  import useDefaultButton from './use-default-button';
@@ -22,6 +22,7 @@ var Button = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function But
22
22
  isDisabled = _ref.isDisabled,
23
23
  isSelected = _ref.isSelected,
24
24
  iconBefore = _ref.iconBefore,
25
+ isLoading = _ref.isLoading,
25
26
  UNSAFE_iconAfter_size = _ref.UNSAFE_iconAfter_size,
26
27
  iconAfter = _ref.iconAfter,
27
28
  UNSAFE_iconBefore_size = _ref.UNSAFE_iconBefore_size,
@@ -55,6 +56,7 @@ var Button = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function But
55
56
  interactionName: interactionName,
56
57
  isDisabled: isDisabled,
57
58
  isSelected: isSelected,
59
+ isLoading: isLoading,
58
60
  onClick: onClick,
59
61
  onMouseDownCapture: onMouseDownCapture,
60
62
  onMouseUpCapture: onMouseUpCapture,
@@ -1,5 +1,6 @@
1
1
  import React, { Fragment } from 'react';
2
2
  import Content from '../shared/content';
3
+ import renderLoadingOverlay from '../shared/loading-overlay';
3
4
  import useButtonBase from '../shared/use-button-base';
4
5
  /**
5
6
  * __Use default button base__
@@ -22,6 +23,8 @@ var useDefaultButton = function useDefaultButton(_ref) {
22
23
  interactionName = _ref.interactionName,
23
24
  isDisabled = _ref.isDisabled,
24
25
  isSelected = _ref.isSelected,
26
+ _ref$isLoading = _ref.isLoading,
27
+ isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
25
28
  children = _ref.children,
26
29
  onClick = _ref.onClick,
27
30
  onMouseDownCapture = _ref.onMouseDownCapture,
@@ -37,7 +40,7 @@ var useDefaultButton = function useDefaultButton(_ref) {
37
40
  ref = _ref.ref,
38
41
  shouldFitContainer = _ref.shouldFitContainer,
39
42
  spacing = _ref.spacing;
40
- var hasOverlay = Boolean(overlay);
43
+ var hasOverlay = Boolean(overlay || isLoading);
41
44
  var baseProps = useButtonBase({
42
45
  analyticsContext: analyticsContext,
43
46
  appearance: appearance,
@@ -71,7 +74,12 @@ var useDefaultButton = function useDefaultButton(_ref) {
71
74
  onPointerDownCapture: onPointerDownCapture,
72
75
  onPointerUpCapture: onPointerUpCapture,
73
76
  onClickCapture: onClickCapture,
74
- overlay: overlay,
77
+ overlay: isLoading ? renderLoadingOverlay({
78
+ spacing: spacing,
79
+ appearance: appearance,
80
+ isDisabled: isDisabled,
81
+ isSelected: isSelected
82
+ }) : overlay,
75
83
  ref: ref,
76
84
  shouldFitContainer: shouldFitContainer,
77
85
  spacing: spacing,
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["analyticsContext", "interactionName", "autoFocus", "appearance", "spacing", "isDisabled", "isSelected", "icon", "label", "overlay", "onClick", "onMouseDownCapture", "onMouseUpCapture", "onKeyDownCapture", "onKeyUpCapture", "onTouchStartCapture", "onTouchEndCapture", "onPointerDownCapture", "onPointerUpCapture", "onClickCapture", "shape", "type", "testId", "UNSAFE_size", "aria-label"];
3
+ var _excluded = ["analyticsContext", "interactionName", "autoFocus", "appearance", "spacing", "isDisabled", "isSelected", "isLoading", "icon", "label", "overlay", "onClick", "onMouseDownCapture", "onMouseUpCapture", "onKeyDownCapture", "onKeyUpCapture", "onTouchStartCapture", "onTouchEndCapture", "onPointerDownCapture", "onPointerUpCapture", "onClickCapture", "shape", "type", "testId", "UNSAFE_size", "aria-label"];
4
4
  import React from 'react';
5
5
  import UNSAFE_PRESSABLE from '@atlaskit/primitives/pressable';
6
6
  import useIconButton from './use-icon-button';
@@ -21,6 +21,7 @@ var IconButton = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function
21
21
  spacing = _ref.spacing,
22
22
  isDisabled = _ref.isDisabled,
23
23
  isSelected = _ref.isSelected,
24
+ isLoading = _ref.isLoading,
24
25
  icon = _ref.icon,
25
26
  label = _ref.label,
26
27
  overlay = _ref.overlay,
@@ -54,6 +55,7 @@ var IconButton = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function
54
55
  interactionName: interactionName,
55
56
  isDisabled: isDisabled,
56
57
  isSelected: isSelected,
58
+ isLoading: isLoading,
57
59
  label: label,
58
60
  onClick: onClick,
59
61
  onMouseDownCapture: onMouseDownCapture,
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import VisuallyHidden from '@atlaskit/visually-hidden';
3
3
  import Content from '../shared/content';
4
+ import renderLoadingOverlay from '../shared/loading-overlay';
4
5
  import useButtonBase from '../shared/use-button-base';
5
6
  /**
6
7
  * __Use icon button__
@@ -20,6 +21,7 @@ var useIconButton = function useIconButton(_ref) {
20
21
  interactionName = _ref.interactionName,
21
22
  isDisabled = _ref.isDisabled,
22
23
  isSelected = _ref.isSelected,
24
+ isLoading = _ref.isLoading,
23
25
  label = _ref.label,
24
26
  onClick = _ref.onClick,
25
27
  onMouseDownCapture = _ref.onMouseDownCapture,
@@ -37,7 +39,7 @@ var useIconButton = function useIconButton(_ref) {
37
39
  shouldFitContainer = _ref.shouldFitContainer,
38
40
  spacing = _ref.spacing,
39
41
  UNSAFE_size = _ref.UNSAFE_size;
40
- var hasOverlay = Boolean(overlay);
42
+ var hasOverlay = Boolean(overlay || isLoading);
41
43
  var isCircle = shape === 'circle';
42
44
  var baseProps = useButtonBase({
43
45
  analyticsContext: analyticsContext,
@@ -66,7 +68,12 @@ var useIconButton = function useIconButton(_ref) {
66
68
  onPointerDownCapture: onPointerDownCapture,
67
69
  onPointerUpCapture: onPointerUpCapture,
68
70
  onClickCapture: onClickCapture,
69
- overlay: overlay,
71
+ overlay: isLoading ? renderLoadingOverlay({
72
+ spacing: spacing,
73
+ appearance: appearance,
74
+ isDisabled: isDisabled,
75
+ isSelected: isSelected
76
+ }) : overlay,
70
77
  ref: ref,
71
78
  shouldFitContainer: shouldFitContainer,
72
79
  spacing: spacing
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import Spinner from '@atlaskit/spinner';
3
+ function getIconSpacing(spacing) {
4
+ switch (spacing) {
5
+ case 'compact':
6
+ return 'small';
7
+ case 'none':
8
+ return 'xsmall';
9
+ default:
10
+ return 'medium';
11
+ }
12
+ }
13
+ function getSpinnerAppearance(_ref) {
14
+ var appearance = _ref.appearance,
15
+ isDisabled = _ref.isDisabled,
16
+ isSelected = _ref.isSelected;
17
+ if (isDisabled) {
18
+ return 'inherit';
19
+ }
20
+ if (isSelected) {
21
+ return 'invert';
22
+ }
23
+ if (appearance === 'primary' || appearance === 'danger') {
24
+ return 'invert';
25
+ }
26
+ return 'inherit';
27
+ }
28
+ export default function renderLoadingOverlay(_ref2) {
29
+ var appearance = _ref2.appearance,
30
+ spacing = _ref2.spacing,
31
+ isDisabled = _ref2.isDisabled,
32
+ isSelected = _ref2.isSelected;
33
+ return /*#__PURE__*/React.createElement(Spinner, {
34
+ label: ", Loading",
35
+ size: getIconSpacing(spacing),
36
+ appearance: getSpinnerAppearance({
37
+ appearance: appearance,
38
+ isDisabled: isDisabled,
39
+ isSelected: isSelected
40
+ })
41
+ });
42
+ }
@@ -108,7 +108,7 @@ export default /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {
108
108
  action: 'clicked',
109
109
  componentName: 'button',
110
110
  packageName: "@atlaskit/button",
111
- packageVersion: "17.7.1",
111
+ packageVersion: "17.8.0",
112
112
  analyticsData: analyticsContext
113
113
  });
114
114
 
@@ -1,4 +1,4 @@
1
- import React, { type Ref } from 'react';
1
+ import { type Ref } from 'react';
2
2
  import { type AdditionalDefaultLinkVariantProps, type CommonLinkVariantProps } from '../types';
3
3
  import { type CommonDefaultButtonProps } from './types';
4
4
  export type LinkButtonProps<RouterLinkConfig extends Record<string, any> = never> = CommonDefaultButtonProps & CommonLinkVariantProps<RouterLinkConfig> & AdditionalDefaultLinkVariantProps;
@@ -12,7 +12,7 @@ declare const LinkButtonBase: <RouterLinkConfig extends Record<string, any> = ne
12
12
  * - [Code](https://atlassian.design/components/button/code)
13
13
  * - [Usage](https://atlassian.design/components/button/usage)
14
14
  */
15
- declare const LinkButton: <RouterLinkConfig extends Record<string, any> = never>(props: CommonDefaultButtonProps & import("../types").AdditionalCommonLinkVariantProps<RouterLinkConfig> & Omit<import("../types").AdditionalHTMLElementPropsExtender<Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "children">>, keyof import("../types").CommonButtonProps<TagName>> & import("../types").CommonButtonProps<HTMLAnchorElement> & AdditionalDefaultLinkVariantProps & {
16
- ref?: React.Ref<HTMLAnchorElement> | undefined;
15
+ declare const LinkButton: <RouterLinkConfig extends Record<string, any> = never>(props: LinkButtonProps<RouterLinkConfig> & {
16
+ ref?: Ref<HTMLAnchorElement>;
17
17
  }) => ReturnType<typeof LinkButtonBase>;
18
18
  export default LinkButton;
@@ -1,6 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  import { type ButtonSpacing, type IconProp, type IconSize } from '../types';
3
3
  export type CommonDefaultButtonProps = {
4
+ /**
5
+ * Conditionally show a spinner over the top of a button
6
+ */
7
+ isLoading?: boolean;
4
8
  /**
5
9
  * Text content to be rendered in the button. Required so that screen readers always have an accessible label provided for the button.
6
10
  */
@@ -11,5 +11,5 @@ type UseButtonReturn<TagName extends HTMLElement> = UseButtonBaseReturn<TagName>
11
11
  *
12
12
  * @private
13
13
  */
14
- declare const useDefaultButton: <TagName extends HTMLElement>({ analyticsContext, appearance, autoFocus, buttonType, iconBefore: IconBefore, UNSAFE_iconBefore_size, iconAfter: IconAfter, UNSAFE_iconAfter_size, interactionName, isDisabled, isSelected, children, onClick, onMouseDownCapture, onMouseUpCapture, onKeyDownCapture, onKeyUpCapture, onTouchStartCapture, onTouchEndCapture, onPointerDownCapture, onPointerUpCapture, onClickCapture, overlay, ref, shouldFitContainer, spacing, }: UseDefaultButtonArgs<TagName>) => UseButtonReturn<TagName>;
14
+ declare const useDefaultButton: <TagName extends HTMLElement>({ analyticsContext, appearance, autoFocus, buttonType, iconBefore: IconBefore, UNSAFE_iconBefore_size, iconAfter: IconAfter, UNSAFE_iconAfter_size, interactionName, isDisabled, isSelected, isLoading, children, onClick, onMouseDownCapture, onMouseUpCapture, onKeyDownCapture, onKeyUpCapture, onTouchStartCapture, onTouchEndCapture, onPointerDownCapture, onPointerUpCapture, onClickCapture, overlay, ref, shouldFitContainer, spacing, }: UseDefaultButtonArgs<TagName>) => UseButtonReturn<TagName>;
15
15
  export default useDefaultButton;
@@ -1,4 +1,4 @@
1
- import React, { type Ref } from 'react';
1
+ import { type Ref } from 'react';
2
2
  import { type CommonLinkVariantProps } from '../types';
3
3
  import { type CommonIconButtonProps } from './types';
4
4
  export type LinkIconButtonProps<RouterLinkConfig extends Record<string, any> = never> = CommonIconButtonProps & CommonLinkVariantProps<RouterLinkConfig>;
@@ -12,7 +12,7 @@ declare const LinkIconButtonBase: <RouterLinkConfig extends Record<string, any>
12
12
  * - [Code](https://atlassian.design/components/button/code)
13
13
  * - [Usage](https://atlassian.design/components/button/usage)
14
14
  */
15
- declare const LinkIconButton: <RouterLinkConfig extends Record<string, any> = never>(props: CommonIconButtonProps & import("../types").AdditionalCommonLinkVariantProps<RouterLinkConfig> & Omit<import("../types").AdditionalHTMLElementPropsExtender<Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "children">>, keyof import("../types").CommonButtonProps<TagName>> & import("../types").CommonButtonProps<HTMLAnchorElement> & {
16
- ref?: React.Ref<HTMLAnchorElement> | undefined;
15
+ declare const LinkIconButton: <RouterLinkConfig extends Record<string, any> = never>(props: LinkIconButtonProps<RouterLinkConfig> & {
16
+ ref?: Ref<HTMLAnchorElement>;
17
17
  }) => ReturnType<typeof LinkIconButtonBase>;
18
18
  export default LinkIconButton;
@@ -1,5 +1,9 @@
1
1
  import { type IconButtonAppearance, type IconButtonSpacing, type IconProp, type IconSize } from '../types';
2
2
  export type CommonIconButtonProps = {
3
+ /**
4
+ * Conditionally show a spinner over the top of a button
5
+ */
6
+ isLoading?: boolean;
3
7
  /**
4
8
  * The button style variation.
5
9
  */
@@ -11,5 +11,5 @@ type UseIconButtonReturn<TagName extends HTMLElement> = UseButtonBaseReturn<TagN
11
11
  *
12
12
  * @private
13
13
  */
14
- declare const useIconButton: <TagName extends HTMLElement>({ analyticsContext, appearance, autoFocus, buttonType, icon: Icon, interactionName, isDisabled, isSelected, label, onClick, onMouseDownCapture, onMouseUpCapture, onKeyDownCapture, onKeyUpCapture, onTouchStartCapture, onTouchEndCapture, onPointerDownCapture, onPointerUpCapture, onClickCapture, overlay, ref, shape, shouldFitContainer, spacing, UNSAFE_size, }: UseIconButtonArgs<TagName>) => UseIconButtonReturn<TagName>;
14
+ declare const useIconButton: <TagName extends HTMLElement>({ analyticsContext, appearance, autoFocus, buttonType, icon: Icon, interactionName, isDisabled, isSelected, isLoading, label, onClick, onMouseDownCapture, onMouseUpCapture, onKeyDownCapture, onKeyUpCapture, onTouchStartCapture, onTouchEndCapture, onPointerDownCapture, onPointerUpCapture, onClickCapture, overlay, ref, shape, shouldFitContainer, spacing, UNSAFE_size, }: UseIconButtonArgs<TagName>) => UseIconButtonReturn<TagName>;
15
15
  export default useIconButton;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { Appearance, type ButtonSpacing } from '../types';
3
+ export default function renderLoadingOverlay({ appearance, spacing, isDisabled, isSelected, }: {
4
+ spacing?: ButtonSpacing;
5
+ appearance?: Appearance;
6
+ isDisabled?: boolean;
7
+ isSelected?: boolean;
8
+ }): JSX.Element;
@@ -37,14 +37,14 @@ type DefaultButtonVariants = DefaultButtonVariant | LinkButtonVariant;
37
37
  type LinkButtonVariants = LinkButtonVariant | LinkIconButtonVariant;
38
38
  type IconButtonVariants = IconButtonVariant | LinkIconButtonVariant;
39
39
  export type Variant = DefaultButtonVariant | LinkButtonVariant | IconButtonVariant | LinkIconButtonVariant;
40
- declare const LinkButtonRender: React.ForwardRefExoticComponent<Omit<LinkButtonProps<never>, "href"> & {
40
+ declare const LinkButtonRender: React.ForwardRefExoticComponent<Omit<LinkButtonProps, "href"> & {
41
41
  href?: string | undefined;
42
42
  } & React.RefAttributes<HTMLAnchorElement>>;
43
43
  declare const IconButtonRender: React.ForwardRefExoticComponent<Omit<IconButtonProps, "label" | "icon"> & {
44
44
  icon?: import("../new-button/variants/types").IconProp | undefined;
45
45
  label?: string | undefined;
46
46
  } & React.RefAttributes<HTMLButtonElement>>;
47
- declare const LinkIconButtonRender: React.ForwardRefExoticComponent<Omit<LinkIconButtonProps<never>, "label" | "href" | "icon"> & {
47
+ declare const LinkIconButtonRender: React.ForwardRefExoticComponent<Omit<LinkIconButtonProps, "label" | "href" | "icon"> & {
48
48
  href?: string | undefined;
49
49
  icon?: import("../new-button/variants/types").IconProp | undefined;
50
50
  label?: string | undefined;
@@ -1,4 +1,4 @@
1
- import React, { type Ref } from 'react';
1
+ import { type Ref } from 'react';
2
2
  import { type AdditionalDefaultLinkVariantProps, type CommonLinkVariantProps } from '../types';
3
3
  import { type CommonDefaultButtonProps } from './types';
4
4
  export type LinkButtonProps<RouterLinkConfig extends Record<string, any> = never> = CommonDefaultButtonProps & CommonLinkVariantProps<RouterLinkConfig> & AdditionalDefaultLinkVariantProps;
@@ -12,7 +12,7 @@ declare const LinkButtonBase: <RouterLinkConfig extends Record<string, any> = ne
12
12
  * - [Code](https://atlassian.design/components/button/code)
13
13
  * - [Usage](https://atlassian.design/components/button/usage)
14
14
  */
15
- declare const LinkButton: <RouterLinkConfig extends Record<string, any> = never>(props: CommonDefaultButtonProps & import("../types").AdditionalCommonLinkVariantProps<RouterLinkConfig> & Omit<import("../types").AdditionalHTMLElementPropsExtender<Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "children">>, keyof import("../types").CommonButtonProps<TagName>> & import("../types").CommonButtonProps<HTMLAnchorElement> & AdditionalDefaultLinkVariantProps & {
16
- ref?: React.Ref<HTMLAnchorElement> | undefined;
15
+ declare const LinkButton: <RouterLinkConfig extends Record<string, any> = never>(props: LinkButtonProps<RouterLinkConfig> & {
16
+ ref?: Ref<HTMLAnchorElement>;
17
17
  }) => ReturnType<typeof LinkButtonBase>;
18
18
  export default LinkButton;
@@ -1,6 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  import { type ButtonSpacing, type IconProp, type IconSize } from '../types';
3
3
  export type CommonDefaultButtonProps = {
4
+ /**
5
+ * Conditionally show a spinner over the top of a button
6
+ */
7
+ isLoading?: boolean;
4
8
  /**
5
9
  * Text content to be rendered in the button. Required so that screen readers always have an accessible label provided for the button.
6
10
  */
@@ -11,5 +11,5 @@ type UseButtonReturn<TagName extends HTMLElement> = UseButtonBaseReturn<TagName>
11
11
  *
12
12
  * @private
13
13
  */
14
- declare const useDefaultButton: <TagName extends HTMLElement>({ analyticsContext, appearance, autoFocus, buttonType, iconBefore: IconBefore, UNSAFE_iconBefore_size, iconAfter: IconAfter, UNSAFE_iconAfter_size, interactionName, isDisabled, isSelected, children, onClick, onMouseDownCapture, onMouseUpCapture, onKeyDownCapture, onKeyUpCapture, onTouchStartCapture, onTouchEndCapture, onPointerDownCapture, onPointerUpCapture, onClickCapture, overlay, ref, shouldFitContainer, spacing, }: UseDefaultButtonArgs<TagName>) => UseButtonReturn<TagName>;
14
+ declare const useDefaultButton: <TagName extends HTMLElement>({ analyticsContext, appearance, autoFocus, buttonType, iconBefore: IconBefore, UNSAFE_iconBefore_size, iconAfter: IconAfter, UNSAFE_iconAfter_size, interactionName, isDisabled, isSelected, isLoading, children, onClick, onMouseDownCapture, onMouseUpCapture, onKeyDownCapture, onKeyUpCapture, onTouchStartCapture, onTouchEndCapture, onPointerDownCapture, onPointerUpCapture, onClickCapture, overlay, ref, shouldFitContainer, spacing, }: UseDefaultButtonArgs<TagName>) => UseButtonReturn<TagName>;
15
15
  export default useDefaultButton;
@@ -1,4 +1,4 @@
1
- import React, { type Ref } from 'react';
1
+ import { type Ref } from 'react';
2
2
  import { type CommonLinkVariantProps } from '../types';
3
3
  import { type CommonIconButtonProps } from './types';
4
4
  export type LinkIconButtonProps<RouterLinkConfig extends Record<string, any> = never> = CommonIconButtonProps & CommonLinkVariantProps<RouterLinkConfig>;
@@ -12,7 +12,7 @@ declare const LinkIconButtonBase: <RouterLinkConfig extends Record<string, any>
12
12
  * - [Code](https://atlassian.design/components/button/code)
13
13
  * - [Usage](https://atlassian.design/components/button/usage)
14
14
  */
15
- declare const LinkIconButton: <RouterLinkConfig extends Record<string, any> = never>(props: CommonIconButtonProps & import("../types").AdditionalCommonLinkVariantProps<RouterLinkConfig> & Omit<import("../types").AdditionalHTMLElementPropsExtender<Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "children">>, keyof import("../types").CommonButtonProps<TagName>> & import("../types").CommonButtonProps<HTMLAnchorElement> & {
16
- ref?: React.Ref<HTMLAnchorElement> | undefined;
15
+ declare const LinkIconButton: <RouterLinkConfig extends Record<string, any> = never>(props: LinkIconButtonProps<RouterLinkConfig> & {
16
+ ref?: Ref<HTMLAnchorElement>;
17
17
  }) => ReturnType<typeof LinkIconButtonBase>;
18
18
  export default LinkIconButton;
@@ -1,5 +1,9 @@
1
1
  import { type IconButtonAppearance, type IconButtonSpacing, type IconProp, type IconSize } from '../types';
2
2
  export type CommonIconButtonProps = {
3
+ /**
4
+ * Conditionally show a spinner over the top of a button
5
+ */
6
+ isLoading?: boolean;
3
7
  /**
4
8
  * The button style variation.
5
9
  */
@@ -11,5 +11,5 @@ type UseIconButtonReturn<TagName extends HTMLElement> = UseButtonBaseReturn<TagN
11
11
  *
12
12
  * @private
13
13
  */
14
- declare const useIconButton: <TagName extends HTMLElement>({ analyticsContext, appearance, autoFocus, buttonType, icon: Icon, interactionName, isDisabled, isSelected, label, onClick, onMouseDownCapture, onMouseUpCapture, onKeyDownCapture, onKeyUpCapture, onTouchStartCapture, onTouchEndCapture, onPointerDownCapture, onPointerUpCapture, onClickCapture, overlay, ref, shape, shouldFitContainer, spacing, UNSAFE_size, }: UseIconButtonArgs<TagName>) => UseIconButtonReturn<TagName>;
14
+ declare const useIconButton: <TagName extends HTMLElement>({ analyticsContext, appearance, autoFocus, buttonType, icon: Icon, interactionName, isDisabled, isSelected, isLoading, label, onClick, onMouseDownCapture, onMouseUpCapture, onKeyDownCapture, onKeyUpCapture, onTouchStartCapture, onTouchEndCapture, onPointerDownCapture, onPointerUpCapture, onClickCapture, overlay, ref, shape, shouldFitContainer, spacing, UNSAFE_size, }: UseIconButtonArgs<TagName>) => UseIconButtonReturn<TagName>;
15
15
  export default useIconButton;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { Appearance, type ButtonSpacing } from '../types';
3
+ export default function renderLoadingOverlay({ appearance, spacing, isDisabled, isSelected, }: {
4
+ spacing?: ButtonSpacing;
5
+ appearance?: Appearance;
6
+ isDisabled?: boolean;
7
+ isSelected?: boolean;
8
+ }): JSX.Element;
@@ -37,14 +37,14 @@ type DefaultButtonVariants = DefaultButtonVariant | LinkButtonVariant;
37
37
  type LinkButtonVariants = LinkButtonVariant | LinkIconButtonVariant;
38
38
  type IconButtonVariants = IconButtonVariant | LinkIconButtonVariant;
39
39
  export type Variant = DefaultButtonVariant | LinkButtonVariant | IconButtonVariant | LinkIconButtonVariant;
40
- declare const LinkButtonRender: React.ForwardRefExoticComponent<Omit<LinkButtonProps<never>, "href"> & {
40
+ declare const LinkButtonRender: React.ForwardRefExoticComponent<Omit<LinkButtonProps, "href"> & {
41
41
  href?: string | undefined;
42
42
  } & React.RefAttributes<HTMLAnchorElement>>;
43
43
  declare const IconButtonRender: React.ForwardRefExoticComponent<Omit<IconButtonProps, "label" | "icon"> & {
44
44
  icon?: import("../new-button/variants/types").IconProp | undefined;
45
45
  label?: string | undefined;
46
46
  } & React.RefAttributes<HTMLButtonElement>>;
47
- declare const LinkIconButtonRender: React.ForwardRefExoticComponent<Omit<LinkIconButtonProps<never>, "label" | "href" | "icon"> & {
47
+ declare const LinkIconButtonRender: React.ForwardRefExoticComponent<Omit<LinkIconButtonProps, "label" | "href" | "icon"> & {
48
48
  href?: string | undefined;
49
49
  icon?: import("../new-button/variants/types").IconProp | undefined;
50
50
  label?: string | undefined;
@@ -6,7 +6,7 @@
6
6
  "sideEffects": false,
7
7
  "types": "../dist/types/entry-points/loading-button.d.ts",
8
8
  "typesVersions": {
9
- ">=4.5 <4.9": {
9
+ ">=4.5 <5.4": {
10
10
  "*": [
11
11
  "../dist/types-ts4.5/entry-points/loading-button.d.ts"
12
12
  ]
package/new/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "sideEffects": false,
7
7
  "types": "../dist/types/entry-points/new.d.ts",
8
8
  "typesVersions": {
9
- ">=4.5 <4.9": {
9
+ ">=4.5 <5.4": {
10
10
  "*": [
11
11
  "../dist/types-ts4.5/entry-points/new.d.ts"
12
12
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/button",
3
- "version": "17.7.1",
3
+ "version": "17.8.0",
4
4
  "description": "A button triggers an event or action. They let users know what will happen next.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -87,10 +87,10 @@
87
87
  "@atlaskit/focus-ring": "^1.3.0",
88
88
  "@atlaskit/icon": "^22.1.0",
89
89
  "@atlaskit/interaction-context": "^2.1.0",
90
- "@atlaskit/primitives": "^5.0.0",
90
+ "@atlaskit/primitives": "^5.1.0",
91
91
  "@atlaskit/spinner": "^16.0.0",
92
- "@atlaskit/theme": "^12.6.0",
93
- "@atlaskit/tokens": "^1.41.0",
92
+ "@atlaskit/theme": "^12.7.0",
93
+ "@atlaskit/tokens": "^1.42.0",
94
94
  "@atlaskit/visually-hidden": "^1.2.4",
95
95
  "@babel/runtime": "^7.0.0",
96
96
  "@emotion/react": "^11.7.1"
@@ -119,7 +119,7 @@
119
119
  "react-router-dom": "^4.2.2",
120
120
  "react-test-renderer": "^16.8.0",
121
121
  "storybook-addon-performance": "^0.16.0",
122
- "typescript": "~4.9.5",
122
+ "typescript": "~5.4.2",
123
123
  "wait-for-expect": "^1.2.0"
124
124
  },
125
125
  "techstack": {
@@ -144,4 +144,4 @@
144
144
  },
145
145
  "homepage": "https://atlassian.design/components/button/",
146
146
  "prettier": "@atlassian/atlassian-frontend-prettier-config-1.0.1"
147
- }
147
+ }
@@ -6,7 +6,7 @@
6
6
  "sideEffects": false,
7
7
  "types": "../dist/types/entry-points/standard-button.d.ts",
8
8
  "typesVersions": {
9
- ">=4.5 <4.9": {
9
+ ">=4.5 <5.4": {
10
10
  "*": [
11
11
  "../dist/types-ts4.5/entry-points/standard-button.d.ts"
12
12
  ]
@@ -6,7 +6,7 @@
6
6
  "sideEffects": false,
7
7
  "types": "../dist/types/entry-points/types.d.ts",
8
8
  "typesVersions": {
9
- ">=4.5 <4.9": {
9
+ ">=4.5 <5.4": {
10
10
  "*": [
11
11
  "../dist/types-ts4.5/entry-points/types.d.ts"
12
12
  ]