@atlaskit/button 16.3.4 → 16.3.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 (42) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/__perf__/customised.tsx +1 -1
  3. package/codemods/{15.0.0-lite-mode.ts → 15.0.0-lite-mode.tsx} +0 -0
  4. package/codemods/{15.1.1-data-testid.ts → 15.1.1-data-testid.tsx} +0 -0
  5. package/codemods/__tests__/15.0.0-lite-mode/{optimistic.ts → optimistic.tsx} +0 -2
  6. package/codemods/__tests__/15.0.0-lite-mode/{safe.ts → safe.tsx} +0 -0
  7. package/codemods/__tests__/15.0.0-lite-mode/{shared.ts → shared.tsx} +0 -0
  8. package/codemods/__tests__/15.1.1-data-testid/{rename-data-testid.ts → rename-data-testid.tsx} +0 -0
  9. package/codemods/__tests__/{_framework.ts → _framework.tsx} +2 -2
  10. package/codemods/helpers/{15.0.0-runner.ts → 15.0.0-runner.tsx} +0 -0
  11. package/codemods/helpers/{helpers-generic.ts → helpers-generic.tsx} +0 -0
  12. package/codemods/{optimistic-15.0.0-lite-mode.ts → optimistic-15.0.0-lite-mode.tsx} +0 -0
  13. package/dist/cjs/button-group.js +4 -1
  14. package/dist/cjs/button.js +13 -4
  15. package/dist/cjs/custom-theme-button/custom-theme-button.js +7 -0
  16. package/dist/cjs/custom-theme-button/theme.js +2 -1
  17. package/dist/cjs/loading-button.js +7 -0
  18. package/dist/cjs/shared/button-base.js +8 -7
  19. package/dist/cjs/version.json +1 -1
  20. package/dist/es2019/button-group.js +4 -1
  21. package/dist/es2019/button.js +11 -3
  22. package/dist/es2019/custom-theme-button/custom-theme-button.js +8 -0
  23. package/dist/es2019/custom-theme-button/theme.js +2 -1
  24. package/dist/es2019/loading-button.js +8 -0
  25. package/dist/es2019/shared/button-base.js +5 -6
  26. package/dist/es2019/version.json +1 -1
  27. package/dist/esm/button-group.js +4 -1
  28. package/dist/esm/button.js +11 -3
  29. package/dist/esm/custom-theme-button/custom-theme-button.js +8 -0
  30. package/dist/esm/custom-theme-button/theme.js +2 -1
  31. package/dist/esm/loading-button.js +8 -0
  32. package/dist/esm/shared/button-base.js +5 -6
  33. package/dist/esm/version.json +1 -1
  34. package/dist/types/button-group.d.ts +3 -1
  35. package/dist/types/button.d.ts +9 -0
  36. package/dist/types/custom-theme-button/custom-theme-button-types.d.ts +2 -1
  37. package/dist/types/custom-theme-button/custom-theme-button.d.ts +7 -0
  38. package/dist/types/loading-button.d.ts +7 -0
  39. package/dist/types/shared/loading-spinner.d.ts +2 -2
  40. package/dist/types/types.d.ts +57 -19
  41. package/package.json +12 -11
  42. package/report.api.md +48 -35
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/button
2
2
 
3
+ ## 16.3.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`e09f1576233`](https://bitbucket.org/atlassian/atlassian-frontend/commits/e09f1576233) - Internal code change turning on new linting rules.
8
+ - Updated dependencies
9
+
3
10
  ## 16.3.4
4
11
 
5
12
  ### Patch Changes
@@ -5,7 +5,7 @@ import AddIcon from '@atlaskit/icon/glyph/editor/add';
5
5
  import { CustomThemeButton } from '../src';
6
6
 
7
7
  export default () => (
8
- <CustomThemeButton iconBefore={<AddIcon label="add" />}>
8
+ <CustomThemeButton iconBefore={<AddIcon label="" />}>
9
9
  Button
10
10
  </CustomThemeButton>
11
11
  );
@@ -615,8 +615,6 @@ describe('Spreading props', () => {
615
615
  });
616
616
  });
617
617
 
618
- describe('ButtonGroup', () => {});
619
-
620
618
  describe('`type ButtonProps`', () => {
621
619
  check({
622
620
  transformer,
@@ -1,5 +1,7 @@
1
1
  import { API, FileInfo, Options } from 'jscodeshift';
2
2
 
3
+ import noop from '@atlaskit/ds-lib/noop';
4
+
3
5
  const applyTransform = require('jscodeshift/dist/testUtils').applyTransform;
4
6
 
5
7
  type Transformer = (file: FileInfo, jscodeshift: API, options: Options) => void;
@@ -14,8 +16,6 @@ type TestArgs = {
14
16
  after?: () => void;
15
17
  };
16
18
 
17
- function noop() {}
18
-
19
19
  export function check({
20
20
  it: name,
21
21
  original,
@@ -43,7 +43,10 @@ function ButtonGroup(_ref) {
43
43
  return (0, _core.jsx)("div", {
44
44
  key: idx,
45
45
  css: groupItemStyles
46
- }, appearance ? /*#__PURE__*/_react.default.cloneElement(child, {
46
+ }, appearance ?
47
+ /*#__PURE__*/
48
+ // eslint-disable-next-line @repo/internal/react/no-clone-element
49
+ _react.default.cloneElement(child, {
47
50
  appearance: appearance
48
51
  }) : child);
49
52
  }));
@@ -17,6 +17,8 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
+ var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
21
+
20
22
  var _components = require("@atlaskit/theme/components");
21
23
 
22
24
  var _buttonBase = _interopRequireDefault(require("./shared/button-base"));
@@ -31,15 +33,22 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
31
33
 
32
34
  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; }
33
35
 
34
- function noop() {}
35
-
36
36
  var isFirefox = typeof navigator !== 'undefined' && navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
37
37
 
38
+ /**
39
+ * __Button__
40
+ *
41
+ * A button triggers an event or action. They let users know what will happen next.
42
+ *
43
+ * - [Examples](https://atlassian.design/components/button/examples)
44
+ * - [Code](https://atlassian.design/components/button/code)
45
+ * - [Usage](https://atlassian.design/components/button/usage)
46
+ */
38
47
  var Button = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwardRef(function Button(_ref, ref) {
39
48
  var _ref$onMouseDown = _ref.onMouseDown,
40
- providedOnMouseDown = _ref$onMouseDown === void 0 ? noop : _ref$onMouseDown,
49
+ providedOnMouseDown = _ref$onMouseDown === void 0 ? _noop.default : _ref$onMouseDown,
41
50
  _ref$onMouseUp = _ref.onMouseUp,
42
- providedOnMouseUp = _ref$onMouseUp === void 0 ? noop : _ref$onMouseUp,
51
+ providedOnMouseUp = _ref$onMouseUp === void 0 ? _noop.default : _ref$onMouseUp,
43
52
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
44
53
 
45
54
  var _useGlobalTheme = (0, _components.useGlobalTheme)(),
@@ -86,6 +86,13 @@ var initial = {
86
86
  isActive: false,
87
87
  isFocus: false
88
88
  };
89
+ /**
90
+ * __Custom theme button__
91
+ *
92
+ * A custom theme button. Avoid using this component. It exists for those already using custom theming, which is hard to use and has performance issues.
93
+ *
94
+ * - [Examples](https://atlassian.design/components/button/examples#custom-theme-button)
95
+ */
89
96
 
90
97
  var CustomThemeButton = /*#__PURE__*/_react.default.memo( /*#__PURE__*/_react.default.forwardRef(function CustomThemeButton(_ref2, ref) {
91
98
  var _ref2$appearance = _ref2.appearance,
@@ -103,6 +103,7 @@ var Theme = (0, _components.createTheme)(function (themeProps) {
103
103
  // that we are changing theme soon there is no point
104
104
  spinnerStyles: {}
105
105
  };
106
- });
106
+ }); // eslint-disable-next-line @repo/internal/react/require-jsdoc
107
+
107
108
  var _default = Theme;
108
109
  exports.default = _default;
@@ -19,6 +19,13 @@ var _loadingSpinner = _interopRequireDefault(require("./shared/loading-spinner")
19
19
 
20
20
  var _excluded = ["isLoading"];
21
21
 
22
+ /**
23
+ * __Loading button__
24
+ *
25
+ * A small wrapper around Button that allows you to show an @atlaskit/spinner as an overlay on the button when you set an isLoading prop to true.
26
+ *
27
+ * - [Examples](https://atlassian.design/components/button/examples#loading-button)
28
+ */
22
29
  var LoadingButton = /*#__PURE__*/_react.default.forwardRef(function LoadingButton(_ref, ref) {
23
30
  var _ref$isLoading = _ref.isLoading,
24
31
  isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
@@ -19,6 +19,8 @@ var _core = require("@emotion/core");
19
19
 
20
20
  var _analyticsNext = require("@atlaskit/analytics-next");
21
21
 
22
+ var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
23
+
22
24
  var _useAutoFocus = _interopRequireDefault(require("@atlaskit/ds-lib/use-auto-focus"));
23
25
 
24
26
  var _colors = require("@atlaskit/theme/colors");
@@ -33,12 +35,10 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
33
35
 
34
36
  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; }
35
37
 
36
- function noop() {} // Disabled buttons will still publish events for nested elements in webkit.
38
+ // Disabled buttons will still publish events for nested elements in webkit.
37
39
  // We are disabling pointer events on child elements so that
38
40
  // the button will always be the target of events
39
41
  // Note: firefox does not have this behaviour for child elements
40
-
41
-
42
42
  var noPointerEventsOnChildrenCss = {
43
43
  '> *': {
44
44
  pointerEvents: 'none'
@@ -70,9 +70,9 @@ var _default = /*#__PURE__*/_react.default.forwardRef(function ButtonBase(props,
70
70
  _props$type = props.type,
71
71
  type = _props$type === void 0 ? !href ? 'button' : undefined : _props$type,
72
72
  _props$onMouseDown = props.onMouseDown,
73
- providedOnMouseDown = _props$onMouseDown === void 0 ? noop : _props$onMouseDown,
73
+ providedOnMouseDown = _props$onMouseDown === void 0 ? _noop.default : _props$onMouseDown,
74
74
  _props$onClick = props.onClick,
75
- providedOnClick = _props$onClick === void 0 ? noop : _props$onClick,
75
+ providedOnClick = _props$onClick === void 0 ? _noop.default : _props$onClick,
76
76
  _props$component = props.component,
77
77
  Component = _props$component === void 0 ? href ? 'a' : 'button' : _props$component,
78
78
  testId = props.testId,
@@ -101,7 +101,7 @@ var _default = /*#__PURE__*/_react.default.forwardRef(function ButtonBase(props,
101
101
  action: 'clicked',
102
102
  componentName: 'button',
103
103
  packageName: "@atlaskit/button",
104
- packageVersion: "16.3.4",
104
+ packageVersion: "16.3.5",
105
105
  analyticsData: analyticsContext
106
106
  }); // Button currently calls preventDefault, which is not standard button behaviour
107
107
 
@@ -123,7 +123,8 @@ var _default = /*#__PURE__*/_react.default.forwardRef(function ButtonBase(props,
123
123
  hasOverlay: hasOverlay
124
124
  });
125
125
  var isInteractive = !isDisabled && !hasOverlay;
126
- /** HACK: Spinner needs to have different colours in the "new" tokens design compared to the old design.
126
+ /**
127
+ * HACK: Spinner needs to have different colours in the "new" tokens design compared to the old design.
127
128
  * For now, while we support both, these styles reach into Spinner when a theme is set, applies the right color.
128
129
  * Ticket to remove: https://product-fabric.atlassian.net/browse/DSP-2067
129
130
  */
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/button",
3
- "version": "16.3.4",
3
+ "version": "16.3.5",
4
4
  "sideEffects": false
5
5
  }
@@ -29,7 +29,10 @@ export default function ButtonGroup({
29
29
  return jsx("div", {
30
30
  key: idx,
31
31
  css: groupItemStyles
32
- }, appearance ? /*#__PURE__*/React.cloneElement(child, {
32
+ }, appearance ?
33
+ /*#__PURE__*/
34
+ // eslint-disable-next-line @repo/internal/react/no-clone-element
35
+ React.cloneElement(child, {
33
36
  appearance
34
37
  }) : child);
35
38
  }));
@@ -1,13 +1,21 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import React, { useCallback, useMemo, useState } from 'react';
3
+ import noop from '@atlaskit/ds-lib/noop';
3
4
  import { useGlobalTheme } from '@atlaskit/theme/components';
4
5
  import ButtonBase from './shared/button-base';
5
6
  import { getCss } from './shared/css';
6
7
  import getIsOnlySingleIcon from './shared/get-is-only-single-icon';
7
-
8
- function noop() {}
9
-
10
8
  const isFirefox = typeof navigator !== 'undefined' && navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
9
+
10
+ /**
11
+ * __Button__
12
+ *
13
+ * A button triggers an event or action. They let users know what will happen next.
14
+ *
15
+ * - [Examples](https://atlassian.design/components/button/examples)
16
+ * - [Code](https://atlassian.design/components/button/code)
17
+ * - [Usage](https://atlassian.design/components/button/usage)
18
+ */
11
19
  const Button = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function Button({
12
20
  onMouseDown: providedOnMouseDown = noop,
13
21
  onMouseUp: providedOnMouseUp = noop,
@@ -47,6 +47,14 @@ const initial = {
47
47
  isActive: false,
48
48
  isFocus: false
49
49
  };
50
+ /**
51
+ * __Custom theme button__
52
+ *
53
+ * A custom theme button. Avoid using this component. It exists for those already using custom theming, which is hard to use and has performance issues.
54
+ *
55
+ * - [Examples](https://atlassian.design/components/button/examples#custom-theme-button)
56
+ */
57
+
50
58
  const CustomThemeButton = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function CustomThemeButton({
51
59
  // Calculate default props for use in custom themes
52
60
  appearance = 'default',
@@ -77,5 +77,6 @@ const Theme = createTheme(themeProps => ({
77
77
  // Keeping this for legacy compat. We could remove it, but given
78
78
  // that we are changing theme soon there is no point
79
79
  spinnerStyles: {}
80
- }));
80
+ })); // eslint-disable-next-line @repo/internal/react/require-jsdoc
81
+
81
82
  export default Theme;
@@ -2,6 +2,14 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import React from 'react';
3
3
  import Button from './button';
4
4
  import LoadingSpinner from './shared/loading-spinner';
5
+
6
+ /**
7
+ * __Loading button__
8
+ *
9
+ * A small wrapper around Button that allows you to show an @atlaskit/spinner as an overlay on the button when you set an isLoading prop to true.
10
+ *
11
+ * - [Examples](https://atlassian.design/components/button/examples#loading-button)
12
+ */
5
13
  const LoadingButton = /*#__PURE__*/React.forwardRef(function LoadingButton({
6
14
  isLoading = false,
7
15
  ...rest
@@ -4,17 +4,15 @@ import _extends from "@babel/runtime/helpers/extends";
4
4
  import React, { useCallback, useEffect, useRef } from 'react';
5
5
  import { jsx } from '@emotion/core';
6
6
  import { usePlatformLeafEventHandler } from '@atlaskit/analytics-next';
7
+ import noop from '@atlaskit/ds-lib/noop';
7
8
  import useAutoFocus from '@atlaskit/ds-lib/use-auto-focus';
8
9
  import { N500 } from '@atlaskit/theme/colors';
9
10
  import blockEvents from './block-events';
10
- import { getContentStyle, getFadingCss, getIconStyle, overlayCss } from './css';
11
-
12
- function noop() {} // Disabled buttons will still publish events for nested elements in webkit.
11
+ import { getContentStyle, getFadingCss, getIconStyle, overlayCss } from './css'; // Disabled buttons will still publish events for nested elements in webkit.
13
12
  // We are disabling pointer events on child elements so that
14
13
  // the button will always be the target of events
15
14
  // Note: firefox does not have this behaviour for child elements
16
15
 
17
-
18
16
  const noPointerEventsOnChildrenCss = {
19
17
  '> *': {
20
18
  pointerEvents: 'none'
@@ -70,7 +68,7 @@ export default /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {
70
68
  action: 'clicked',
71
69
  componentName: 'button',
72
70
  packageName: "@atlaskit/button",
73
- packageVersion: "16.3.4",
71
+ packageVersion: "16.3.5",
74
72
  analyticsData: analyticsContext
75
73
  }); // Button currently calls preventDefault, which is not standard button behaviour
76
74
 
@@ -92,7 +90,8 @@ export default /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {
92
90
  hasOverlay
93
91
  });
94
92
  const isInteractive = !isDisabled && !hasOverlay;
95
- /** HACK: Spinner needs to have different colours in the "new" tokens design compared to the old design.
93
+ /**
94
+ * HACK: Spinner needs to have different colours in the "new" tokens design compared to the old design.
96
95
  * For now, while we support both, these styles reach into Spinner when a theme is set, applies the right color.
97
96
  * Ticket to remove: https://product-fabric.atlassian.net/browse/DSP-2067
98
97
  */
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/button",
3
- "version": "16.3.4",
3
+ "version": "16.3.5",
4
4
  "sideEffects": false
5
5
  }
@@ -28,7 +28,10 @@ export default function ButtonGroup(_ref) {
28
28
  return jsx("div", {
29
29
  key: idx,
30
30
  css: groupItemStyles
31
- }, appearance ? /*#__PURE__*/React.cloneElement(child, {
31
+ }, appearance ?
32
+ /*#__PURE__*/
33
+ // eslint-disable-next-line @repo/internal/react/no-clone-element
34
+ React.cloneElement(child, {
32
35
  appearance: appearance
33
36
  }) : child);
34
37
  }));
@@ -3,14 +3,22 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
4
  var _excluded = ["onMouseDown", "onMouseUp"];
5
5
  import React, { useCallback, useMemo, useState } from 'react';
6
+ import noop from '@atlaskit/ds-lib/noop';
6
7
  import { useGlobalTheme } from '@atlaskit/theme/components';
7
8
  import ButtonBase from './shared/button-base';
8
9
  import { getCss } from './shared/css';
9
10
  import getIsOnlySingleIcon from './shared/get-is-only-single-icon';
10
-
11
- function noop() {}
12
-
13
11
  var isFirefox = typeof navigator !== 'undefined' && navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
12
+
13
+ /**
14
+ * __Button__
15
+ *
16
+ * A button triggers an event or action. They let users know what will happen next.
17
+ *
18
+ * - [Examples](https://atlassian.design/components/button/examples)
19
+ * - [Code](https://atlassian.design/components/button/code)
20
+ * - [Usage](https://atlassian.design/components/button/usage)
21
+ */
14
22
  var Button = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function Button(_ref, ref) {
15
23
  var _ref$onMouseDown = _ref.onMouseDown,
16
24
  providedOnMouseDown = _ref$onMouseDown === void 0 ? noop : _ref$onMouseDown,
@@ -62,6 +62,14 @@ var initial = {
62
62
  isActive: false,
63
63
  isFocus: false
64
64
  };
65
+ /**
66
+ * __Custom theme button__
67
+ *
68
+ * A custom theme button. Avoid using this component. It exists for those already using custom theming, which is hard to use and has performance issues.
69
+ *
70
+ * - [Examples](https://atlassian.design/components/button/examples#custom-theme-button)
71
+ */
72
+
65
73
  var CustomThemeButton = /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(function CustomThemeButton(_ref2, ref) {
66
74
  var _ref2$appearance = _ref2.appearance,
67
75
  appearance = _ref2$appearance === void 0 ? 'default' : _ref2$appearance,
@@ -86,5 +86,6 @@ var Theme = createTheme(function (themeProps) {
86
86
  // that we are changing theme soon there is no point
87
87
  spinnerStyles: {}
88
88
  };
89
- });
89
+ }); // eslint-disable-next-line @repo/internal/react/require-jsdoc
90
+
90
91
  export default Theme;
@@ -4,6 +4,14 @@ var _excluded = ["isLoading"];
4
4
  import React from 'react';
5
5
  import Button from './button';
6
6
  import LoadingSpinner from './shared/loading-spinner';
7
+
8
+ /**
9
+ * __Loading button__
10
+ *
11
+ * A small wrapper around Button that allows you to show an @atlaskit/spinner as an overlay on the button when you set an isLoading prop to true.
12
+ *
13
+ * - [Examples](https://atlassian.design/components/button/examples#loading-button)
14
+ */
7
15
  var LoadingButton = /*#__PURE__*/React.forwardRef(function LoadingButton(_ref, ref) {
8
16
  var _ref$isLoading = _ref.isLoading,
9
17
  isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
@@ -6,17 +6,15 @@ var _excluded = ["appearance", "buttonCss", "spacing", "autoFocus", "isDisabled"
6
6
  import React, { useCallback, useEffect, useRef } from 'react';
7
7
  import { jsx } from '@emotion/core';
8
8
  import { usePlatformLeafEventHandler } from '@atlaskit/analytics-next';
9
+ import noop from '@atlaskit/ds-lib/noop';
9
10
  import useAutoFocus from '@atlaskit/ds-lib/use-auto-focus';
10
11
  import { N500 } from '@atlaskit/theme/colors';
11
12
  import blockEvents from './block-events';
12
- import { getContentStyle, getFadingCss, getIconStyle, overlayCss } from './css';
13
-
14
- function noop() {} // Disabled buttons will still publish events for nested elements in webkit.
13
+ import { getContentStyle, getFadingCss, getIconStyle, overlayCss } from './css'; // Disabled buttons will still publish events for nested elements in webkit.
15
14
  // We are disabling pointer events on child elements so that
16
15
  // the button will always be the target of events
17
16
  // Note: firefox does not have this behaviour for child elements
18
17
 
19
-
20
18
  var noPointerEventsOnChildrenCss = {
21
19
  '> *': {
22
20
  pointerEvents: 'none'
@@ -79,7 +77,7 @@ export default /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {
79
77
  action: 'clicked',
80
78
  componentName: 'button',
81
79
  packageName: "@atlaskit/button",
82
- packageVersion: "16.3.4",
80
+ packageVersion: "16.3.5",
83
81
  analyticsData: analyticsContext
84
82
  }); // Button currently calls preventDefault, which is not standard button behaviour
85
83
 
@@ -101,7 +99,8 @@ export default /*#__PURE__*/React.forwardRef(function ButtonBase(props, ref) {
101
99
  hasOverlay: hasOverlay
102
100
  });
103
101
  var isInteractive = !isDisabled && !hasOverlay;
104
- /** HACK: Spinner needs to have different colours in the "new" tokens design compared to the old design.
102
+ /**
103
+ * HACK: Spinner needs to have different colours in the "new" tokens design compared to the old design.
105
104
  * For now, while we support both, these styles reach into Spinner when a theme is set, applies the right color.
106
105
  * Ticket to remove: https://product-fabric.atlassian.net/browse/DSP-2067
107
106
  */
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/button",
3
- "version": "16.3.4",
3
+ "version": "16.3.5",
4
4
  "sideEffects": false
5
5
  }
@@ -2,7 +2,9 @@
2
2
  import React from 'react';
3
3
  import { Appearance } from './types';
4
4
  export declare type ButtonGroupProps = {
5
- /** The appearance to apply to all buttons. */
5
+ /**
6
+ * The appearance to apply to all buttons.
7
+ */
6
8
  appearance?: Appearance;
7
9
  children?: React.ReactNode;
8
10
  };
@@ -2,5 +2,14 @@ import React from 'react';
2
2
  import { BaseProps } from './types';
3
3
  export interface ButtonProps extends BaseProps {
4
4
  }
5
+ /**
6
+ * __Button__
7
+ *
8
+ * A button triggers an event or action. They let users know what will happen next.
9
+ *
10
+ * - [Examples](https://atlassian.design/components/button/examples)
11
+ * - [Code](https://atlassian.design/components/button/code)
12
+ * - [Usage](https://atlassian.design/components/button/usage)
13
+ */
5
14
  declare const Button: React.MemoExoticComponent<React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLElement>>>;
6
15
  export default Button;
@@ -8,7 +8,8 @@ export declare type ThemeTokens = {
8
8
  export declare type InteractionState = 'disabled' | 'focusSelected' | 'selected' | 'active' | 'hover' | 'focus' | 'default';
9
9
  export declare type CustomThemeButtonOwnProps = {
10
10
  isLoading?: boolean;
11
- /** Slow + discouraged custom theme API
11
+ /**
12
+ * Slow + discouraged custom theme API
12
13
  * See custom theme guide for usage details
13
14
  */
14
15
  theme?: (current: (props: ThemeProps) => ThemeTokens, props: ThemeProps) => ThemeTokens;
@@ -1,3 +1,10 @@
1
1
  import React from 'react';
2
+ /**
3
+ * __Custom theme button__
4
+ *
5
+ * A custom theme button. Avoid using this component. It exists for those already using custom theming, which is hard to use and has performance issues.
6
+ *
7
+ * - [Examples](https://atlassian.design/components/button/examples#custom-theme-button)
8
+ */
2
9
  declare const CustomThemeButton: React.MemoExoticComponent<React.ForwardRefExoticComponent<Omit<import("..").BaseProps, "overlay"> & import("./custom-theme-button-types").CustomThemeButtonOwnProps & React.RefAttributes<HTMLElement>>>;
3
10
  export default CustomThemeButton;
@@ -4,5 +4,12 @@ export declare type LoadingButtonOwnProps = {
4
4
  isLoading?: boolean;
5
5
  };
6
6
  export declare type LoadingButtonProps = Omit<BaseProps, 'overlay'> & LoadingButtonOwnProps;
7
+ /**
8
+ * __Loading button__
9
+ *
10
+ * A small wrapper around Button that allows you to show an @atlaskit/spinner as an overlay on the button when you set an isLoading prop to true.
11
+ *
12
+ * - [Examples](https://atlassian.design/components/button/examples#loading-button)
13
+ */
7
14
  declare const LoadingButton: React.ForwardRefExoticComponent<Omit<BaseProps, "overlay"> & LoadingButtonOwnProps & React.RefAttributes<HTMLElement>>;
8
15
  export default LoadingButton;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
2
  import { BaseProps } from '../types';
3
- declare type Props = Pick<BaseProps, 'appearance' | 'isDisabled' | 'isSelected' | 'spacing'>;
4
- export default function LoadingSpinner({ spacing, ...rest }: Props): JSX.Element;
3
+ declare type LoadingSpinnerProps = Pick<BaseProps, 'appearance' | 'isDisabled' | 'isSelected' | 'spacing'>;
4
+ export default function LoadingSpinner({ spacing, ...rest }: LoadingSpinnerProps): JSX.Element;
5
5
  export {};
@@ -4,44 +4,82 @@ export declare type Appearance = 'default' | 'danger' | 'link' | 'primary' | 'su
4
4
  export declare type Spacing = 'compact' | 'default' | 'none';
5
5
  declare type Combine<First, Second> = Omit<First, keyof Second> & Second;
6
6
  export declare type BaseOwnProps = {
7
- /** The base styling to apply to the button */
7
+ /**
8
+ * The base styling to apply to the button
9
+ */
8
10
  appearance?: Appearance;
9
- /** Set the button to autofocus on mount */
11
+ /**
12
+ * Set the button to autofocus on mount
13
+ */
10
14
  autoFocus?: boolean;
11
- /** Add a classname to the button */
15
+ /**
16
+ * Add a classname to the button
17
+ */
12
18
  className?: string;
13
- /** Used to 'overlay' something over a button. This is commonly used to display a loading spinner */
19
+ /**
20
+ * Used to 'overlay' something over a button. This is commonly used to display a loading spinner
21
+ */
14
22
  overlay?: React.ReactNode;
15
- /** Provides a url for buttons being used as a link */
23
+ /**
24
+ * Provides a url for buttons being used as a link
25
+ */
16
26
  href?: string;
17
- /** Places an icon within the button, after the button's text */
27
+ /**
28
+ * Places an icon within the button, after the button's text
29
+ */
18
30
  iconAfter?: React.ReactChild;
19
- /** Places an icon within the button, before the button's text */
31
+ /**
32
+ * Places an icon within the button, before the button's text
33
+ */
20
34
  iconBefore?: React.ReactChild;
21
- /** Set if the button is disabled */
35
+ /**
36
+ * Set if the button is disabled
37
+ */
22
38
  isDisabled?: boolean;
23
- /** Change the style to indicate the button is selected */
39
+ /**
40
+ * Change the style to indicate the button is selected
41
+ */
24
42
  isSelected?: boolean;
25
- /** Handler to be called on blur */
43
+ /**
44
+ * Handler to be called on blur
45
+ */
26
46
  onBlur?: React.FocusEventHandler<HTMLElement>;
27
- /** Handler to be called on click. The second argument can be used to track analytics data. See the tutorial in the analytics-next package for details */
47
+ /**
48
+ * Handler to be called on click. The second argument can be used to track analytics data. See the tutorial in the analytics-next package for details
49
+ */
28
50
  onClick?: (e: React.MouseEvent<HTMLElement>, analyticsEvent: UIAnalyticsEvent) => void;
29
- /** Handler to be called on focus */
51
+ /**
52
+ * Handler to be called on focus
53
+ */
30
54
  onFocus?: React.FocusEventHandler<HTMLElement>;
31
- /** Set the amount of padding in the button */
55
+ /**
56
+ * Set the amount of padding in the button
57
+ */
32
58
  spacing?: Spacing;
33
- /** Pass target down to a link within the button component, if a href is provided */
59
+ /**
60
+ * Pass target down to a link within the button component, if a href is provided
61
+ */
34
62
  target?: React.AnchorHTMLAttributes<HTMLAnchorElement>['target'];
35
- /** Pass type down to a button */
63
+ /**
64
+ * Pass type down to a button
65
+ */
36
66
  type?: React.ButtonHTMLAttributes<HTMLButtonElement>['type'];
37
- /** Option to fit button width to its parent width */
67
+ /**
68
+ * Option to fit button width to its parent width
69
+ */
38
70
  shouldFitContainer?: boolean;
39
- /** Text content to be rendered in the button */
71
+ /**
72
+ * Text content to be rendered in the button
73
+ */
40
74
  children?: React.ReactNode;
41
- /** A `testId` prop is provided for specified elements, which is a unique string that appears as a data attribute `data-testid` in the rendered code, serving as a hook for automated tests */
75
+ /**
76
+ * A `testId` prop is provided for specified elements, which is a unique string that appears as a data attribute `data-testid` in the rendered code, serving as a hook for automated tests
77
+ */
42
78
  testId?: string;
43
79
  component?: React.ComponentType<React.AllHTMLAttributes<HTMLElement>> | React.ElementType;
44
- /** Additional information to be included in the `context` of analytics events that come from button */
80
+ /**
81
+ * Additional information to be included in the `context` of analytics events that come from button
82
+ */
45
83
  analyticsContext?: Record<string, any>;
46
84
  };
47
85
  export declare type BaseProps = Combine<Combine<Omit<React.AllHTMLAttributes<HTMLElement>, 'disabled'>, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/button",
3
- "version": "16.3.4",
3
+ "version": "16.3.5",
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/"
@@ -13,7 +13,7 @@
13
13
  "module:es2019": "dist/es2019/index.js",
14
14
  "types": "dist/types/index.d.ts",
15
15
  "sideEffects": false,
16
- "atlaskit:src": "src/index.ts",
16
+ "atlaskit:src": "src/index.tsx",
17
17
  "atlassian": {
18
18
  "team": "Design System Team",
19
19
  "releaseModel": "scheduled",
@@ -23,16 +23,16 @@
23
23
  }
24
24
  },
25
25
  "af:exports": {
26
- "./button-group": "./src/entry-points/button-group.ts",
27
- "./custom-theme-button": "./src/entry-points/custom-theme-button.ts",
28
- "./loading-button": "./src/entry-points/loading-button.ts",
29
- "./standard-button": "./src/entry-points/standard-button.ts",
30
- "./types": "./src/entry-points/types.ts",
31
- ".": "./src/index.ts"
26
+ "./button-group": "./src/entry-points/button-group.tsx",
27
+ "./custom-theme-button": "./src/entry-points/custom-theme-button.tsx",
28
+ "./loading-button": "./src/entry-points/loading-button.tsx",
29
+ "./standard-button": "./src/entry-points/standard-button.tsx",
30
+ "./types": "./src/entry-points/types.tsx",
31
+ ".": "./src/index.tsx"
32
32
  },
33
33
  "dependencies": {
34
34
  "@atlaskit/analytics-next": "^8.2.0",
35
- "@atlaskit/ds-lib": "^2.0.0",
35
+ "@atlaskit/ds-lib": "^2.1.0",
36
36
  "@atlaskit/spinner": "^15.1.0",
37
37
  "@atlaskit/theme": "^12.1.0",
38
38
  "@atlaskit/tokens": "^0.10.0",
@@ -46,9 +46,9 @@
46
46
  "@atlaskit/checkbox": "^12.3.0",
47
47
  "@atlaskit/docs": "*",
48
48
  "@atlaskit/icon": "^21.10.0",
49
- "@atlaskit/logo": "^13.7.0",
49
+ "@atlaskit/logo": "^13.8.0",
50
50
  "@atlaskit/section-message": "^6.1.0",
51
- "@atlaskit/select": "^15.3.0",
51
+ "@atlaskit/select": "^15.5.0",
52
52
  "@atlaskit/ssr": "*",
53
53
  "@atlaskit/visual-regression": "*",
54
54
  "@atlaskit/webdriver-runner": "*",
@@ -73,6 +73,7 @@
73
73
  },
74
74
  "@repo/internal": {
75
75
  "dom-events": "use-bind-event-listener",
76
+ "design-system": "v1",
76
77
  "ui-components": "lite-mode",
77
78
  "analytics": "analytics-next",
78
79
  "theming": "tokens",
package/report.api.md CHANGED
@@ -14,8 +14,7 @@ import { ThemeModes as ThemeModes_2 } from '@atlaskit/theme';
14
14
  import { ThemeProp } from '@atlaskit/theme/components';
15
15
  import { UIAnalyticsEvent } from '@atlaskit/analytics-next';
16
16
 
17
- // @public (undocumented)
18
- export type Appearance =
17
+ export declare type Appearance =
19
18
  | 'default'
20
19
  | 'danger'
21
20
  | 'link'
@@ -24,37 +23,54 @@ export type Appearance =
24
23
  | 'subtle-link'
25
24
  | 'warning';
26
25
 
27
- // @public (undocumented)
28
- export type BaseOwnProps = {
26
+ export declare type BaseOwnProps = {
27
+ /** The base styling to apply to the button */
29
28
  appearance?: Appearance;
29
+ /** Set the button to autofocus on mount */
30
30
  autoFocus?: boolean;
31
+ /** Add a classname to the button */
31
32
  className?: string;
33
+ /** Used to 'overlay' something over a button. This is commonly used to display a loading spinner */
32
34
  overlay?: React_2.ReactNode;
35
+ /** Provides a url for buttons being used as a link */
33
36
  href?: string;
37
+ /** Places an icon within the button, after the button's text */
34
38
  iconAfter?: React_2.ReactChild;
39
+ /** Places an icon within the button, before the button's text */
35
40
  iconBefore?: React_2.ReactChild;
41
+ /** Set if the button is disabled */
36
42
  isDisabled?: boolean;
43
+ /** Change the style to indicate the button is selected */
37
44
  isSelected?: boolean;
45
+ /** Handler to be called on blur */
38
46
  onBlur?: React_2.FocusEventHandler<HTMLElement>;
47
+ /** Handler to be called on click. The second argument can be used to track analytics data. See the tutorial in the analytics-next package for details */
39
48
  onClick?: (
40
49
  e: React_2.MouseEvent<HTMLElement>,
41
50
  analyticsEvent: UIAnalyticsEvent,
42
51
  ) => void;
52
+ /** Handler to be called on focus */
43
53
  onFocus?: React_2.FocusEventHandler<HTMLElement>;
54
+ /** Set the amount of padding in the button */
44
55
  spacing?: Spacing;
56
+ /** Pass target down to a link within the button component, if a href is provided */
45
57
  target?: React_2.AnchorHTMLAttributes<HTMLAnchorElement>['target'];
58
+ /** Pass type down to a button */
46
59
  type?: React_2.ButtonHTMLAttributes<HTMLButtonElement>['type'];
60
+ /** Option to fit button width to its parent width */
47
61
  shouldFitContainer?: boolean;
62
+ /** Text content to be rendered in the button */
48
63
  children?: React_2.ReactNode;
64
+ /** A `testId` prop is provided for specified elements, which is a unique string that appears as a data attribute `data-testid` in the rendered code, serving as a hook for automated tests */
49
65
  testId?: string;
50
66
  component?:
51
67
  | React_2.ComponentType<React_2.AllHTMLAttributes<HTMLElement>>
52
68
  | React_2.ElementType;
69
+ /** Additional information to be included in the `context` of analytics events that come from button */
53
70
  analyticsContext?: Record<string, any>;
54
71
  };
55
72
 
56
- // @public (undocumented)
57
- export type BaseProps = Combine<
73
+ export declare type BaseProps = Combine<
58
74
  Combine<
59
75
  Omit<React_2.AllHTMLAttributes<HTMLElement>, 'disabled'>,
60
76
  {
@@ -65,43 +81,47 @@ export type BaseProps = Combine<
65
81
  BaseOwnProps
66
82
  >;
67
83
 
68
- // @public (undocumented)
69
- const Button: React_2.MemoExoticComponent<React_2.ForwardRefExoticComponent<
84
+ declare const Button: React_2.MemoExoticComponent<React_2.ForwardRefExoticComponent<
70
85
  ButtonProps & React_2.RefAttributes<HTMLElement>
71
86
  >>;
72
87
  export default Button;
73
88
 
74
- // @public (undocumented)
75
- export function ButtonGroup({
89
+ export declare function ButtonGroup({
76
90
  appearance,
77
91
  children,
78
92
  }: ButtonGroupProps): JSX.Element;
79
93
 
80
- // @public (undocumented)
81
- export interface ButtonProps extends BaseProps {}
94
+ declare type ButtonGroupProps = {
95
+ /** The appearance to apply to all buttons. */
96
+ appearance?: Appearance;
97
+ children?: React_2.ReactNode;
98
+ };
99
+
100
+ export declare interface ButtonProps extends BaseProps {}
101
+
102
+ declare type Combine<First, Second> = Omit<First, keyof Second> & Second;
82
103
 
83
- // @public (undocumented)
84
- export const CustomThemeButton: React_2.MemoExoticComponent<React_2.ForwardRefExoticComponent<
104
+ export declare const CustomThemeButton: React_2.MemoExoticComponent<React_2.ForwardRefExoticComponent<
85
105
  Omit<BaseProps, 'overlay'> &
86
106
  CustomThemeButtonOwnProps &
87
107
  React_2.RefAttributes<HTMLElement>
88
108
  >>;
89
109
 
90
- // @public (undocumented)
91
- export type CustomThemeButtonOwnProps = {
110
+ export declare type CustomThemeButtonOwnProps = {
92
111
  isLoading?: boolean;
112
+ /** Slow + discouraged custom theme API
113
+ * See custom theme guide for usage details
114
+ */
93
115
  theme?: (
94
116
  current: (props: ThemeProps) => ThemeTokens,
95
117
  props: ThemeProps,
96
118
  ) => ThemeTokens;
97
119
  };
98
120
 
99
- // @public (undocumented)
100
- export type CustomThemeButtonProps = Omit<BaseProps, 'overlay'> &
121
+ export declare type CustomThemeButtonProps = Omit<BaseProps, 'overlay'> &
101
122
  CustomThemeButtonOwnProps;
102
123
 
103
- // @public (undocumented)
104
- export type InteractionState =
124
+ export declare type InteractionState =
105
125
  | 'disabled'
106
126
  | 'focusSelected'
107
127
  | 'selected'
@@ -110,27 +130,22 @@ export type InteractionState =
110
130
  | 'focus'
111
131
  | 'default';
112
132
 
113
- // @public (undocumented)
114
- export const LoadingButton: React_2.ForwardRefExoticComponent<
133
+ export declare const LoadingButton: React_2.ForwardRefExoticComponent<
115
134
  Omit<BaseProps, 'overlay'> &
116
135
  LoadingButtonOwnProps &
117
136
  React_2.RefAttributes<HTMLElement>
118
137
  >;
119
138
 
120
- // @public (undocumented)
121
- export type LoadingButtonOwnProps = {
139
+ export declare type LoadingButtonOwnProps = {
122
140
  isLoading?: boolean;
123
141
  };
124
142
 
125
- // @public (undocumented)
126
- export type LoadingButtonProps = Omit<BaseProps, 'overlay'> &
143
+ export declare type LoadingButtonProps = Omit<BaseProps, 'overlay'> &
127
144
  LoadingButtonOwnProps;
128
145
 
129
- // @public (undocumented)
130
- export type Spacing = 'compact' | 'default' | 'none';
146
+ export declare type Spacing = 'compact' | 'default' | 'none';
131
147
 
132
- // @public (undocumented)
133
- export const Theme: {
148
+ export declare const Theme: {
134
149
  Consumer: ComponentType<
135
150
  {
136
151
  children: (tokens: ThemeTokens) => ReactNode;
@@ -147,18 +162,16 @@ export const Theme: {
147
162
  useTheme: (props: ThemeProps) => ThemeTokens;
148
163
  };
149
164
 
150
- // @public (undocumented)
151
- export type ThemeProps = Partial<CustomThemeButtonProps> & {
165
+ export declare type ThemeProps = Partial<CustomThemeButtonProps> & {
152
166
  state: InteractionState;
153
167
  iconIsOnlyChild?: boolean;
154
168
  mode?: ThemeModes;
155
169
  };
156
170
 
157
- // @public (undocumented)
158
- export type ThemeTokens = {
171
+ export declare type ThemeTokens = {
159
172
  buttonStyles: CSSObject;
160
173
  spinnerStyles: CSSObject;
161
174
  };
162
175
 
163
- // (No @packageDocumentation comment for this package)
176
+ export {};
164
177
  ```