@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
JavaScript
"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;