@helpscout/hsds-react
Version:
React component library for Help Scout's Design System
127 lines (97 loc) • 3.92 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = exports.Spinner = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _getValidProps = _interopRequireDefault(require("@helpscout/react-utils/dist/getValidProps"));
var _VisuallyHidden = _interopRequireDefault(require("../VisuallyHidden"));
var _classnames = _interopRequireDefault(require("classnames"));
var _lodash = _interopRequireDefault(require("lodash.isstring"));
var _Spinner = require("./Spinner.utils");
var _Spinner2 = require("./Spinner.css");
var _jsxRuntime = require("react/jsx-runtime");
var Spinner = /*#__PURE__*/function (_React$PureComponent) {
(0, _inheritsLoose2.default)(Spinner, _React$PureComponent);
function Spinner() {
return _React$PureComponent.apply(this, arguments) || this;
}
var _proto = Spinner.prototype;
_proto.getClassName = function getClassName() {
var className = this.props.className;
return (0, _classnames.default)(Spinner.className, className);
};
_proto.getSize = function getSize() {
var size = this.props.size;
var defaultSize = 16;
if ((0, _lodash.default)(size)) {
return _Spinner.legacySizes[size] || defaultSize;
}
return size;
};
_proto.render = function render() {
var _this$props = this.props,
color = _this$props.color,
shade = _this$props.shade,
isRounded = _this$props.isRounded,
speed = _this$props.speed,
rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["color", "shade", "isRounded", "speed"]);
var spinnerSize = this.getSize();
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Spinner2.SpinnerUI, (0, _extends2.default)({}, (0, _getValidProps.default)(rest), {
"aria-busy": true,
className: this.getClassName(),
spinnerSize: spinnerSize,
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner2.SpinnerSVGUI, {
className: "c-SpinnerSVG",
speed: speed,
spinnerSize: spinnerSize,
viewBox: "22 22 44 44",
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner2.SpinnerCircleUI, {
className: 'c-SpinnerCircle',
color: color,
cx: 44,
cy: 44,
r: 20.2,
shade: shade,
isRounded: isRounded,
speed: speed,
spinnerSize: spinnerSize
})
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_VisuallyHidden.default, {
children: "Loading"
})]
}));
};
return Spinner;
}(_react.default.PureComponent);
exports.Spinner = Spinner;
Spinner.className = 'c-Spinner';
Spinner.defaultProps = {
color: 'currentColor',
'data-cy': 'Spinner',
isRounded: true,
shade: 'default',
size: 16,
speed: 1400
};
Spinner.propTypes = {
/** Custom class names to be added to the component. */
className: _propTypes.default.string,
/** Color of the spinner. */
color: _propTypes.default.string,
/** Rounds the stroke ends of the spinner SVG. */
isRounded: _propTypes.default.bool,
/** Determines the opacity of the spinner. */
shade: _propTypes.default.string,
/** Determines the size of the spinner. */
size: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
/** Speed of the spinning animation (in `ms`). */
speed: _propTypes.default.number,
/** Data attr for Cypress tests. */
'data-cy': _propTypes.default.string
};
var _default = Spinner;
exports.default = _default;