UNPKG

@atlaskit/button

Version:

A button triggers an event or action. They let users know what will happen next.

54 lines (52 loc) 2.48 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _button = _interopRequireDefault(require("./button")); var _loadingSpinner = _interopRequireDefault(require("./shared/loading-spinner")); var _excluded = ["appearance", "isDisabled", "isSelected", "isLoading", "spacing"]; /** * __Loading button__ * * @deprecated Legacy loading buttons are deprecated and will be removed from `atlaskit/button` in an upcoming major release. Please use the new Button components from `@atlaskit/button/new` with the `isLoading` prop. * * Please refer to the [migration guide](https://atlassian.design/components/button/button-legacy/migration-guide) for further details. * * 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. * * - [Examples](https://atlassian.design/components/button/examples#loading-button) */ var LoadingButton = /*#__PURE__*/_react.default.forwardRef(function LoadingButton(_ref, ref) { var appearance = _ref.appearance, isDisabled = _ref.isDisabled, isSelected = _ref.isSelected, _ref$isLoading = _ref.isLoading, isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading, spacing = _ref.spacing, rest = (0, _objectWithoutProperties2.default)(_ref, _excluded); // Button already has React.memo, so just leaning on that return /*#__PURE__*/_react.default.createElement(_button.default, (0, _extends2.default)({}, rest, { ref: ref, appearance: appearance // No need to render aria-disabled when it is false , "aria-disabled": isLoading || undefined, isDisabled: isDisabled, isSelected: isSelected, overlay: isLoading ? /*#__PURE__*/_react.default.createElement(_loadingSpinner.default, { spacing: spacing, appearance: appearance, isDisabled: isDisabled, isSelected: isSelected }) : null, spacing: spacing })); }); // Tools including enzyme rely on components having a display name LoadingButton.displayName = 'LoadingButton'; var _default = exports.default = LoadingButton;