UNPKG

@helpscout/hsds-react

Version:

React component library for Help Scout's Design System

127 lines (97 loc) 3.92 kB
"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;