You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

44 lines
1.4 KiB

  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
  3. import React from 'react';
  4. import PropTypes from 'prop-types';
  5. import classNames from 'classnames';
  6. import { mapToCssModules, tagPropType } from './utils';
  7. var propTypes = {
  8. tag: tagPropType,
  9. type: PropTypes.string,
  10. size: PropTypes.string,
  11. color: PropTypes.string,
  12. className: PropTypes.string,
  13. cssModule: PropTypes.object,
  14. children: PropTypes.string
  15. };
  16. var defaultProps = {
  17. tag: 'div',
  18. type: 'border',
  19. children: 'Loading...'
  20. };
  21. var Spinner = function Spinner(props) {
  22. var className = props.className,
  23. cssModule = props.cssModule,
  24. type = props.type,
  25. size = props.size,
  26. color = props.color,
  27. children = props.children,
  28. Tag = props.tag,
  29. attributes = _objectWithoutPropertiesLoose(props, ["className", "cssModule", "type", "size", "color", "children", "tag"]);
  30. var classes = mapToCssModules(classNames(className, size ? "spinner-" + type + "-" + size : false, "spinner-" + type, color ? "text-" + color : false), cssModule);
  31. return React.createElement(Tag, _extends({
  32. role: "status"
  33. }, attributes, {
  34. className: classes
  35. }), children && React.createElement("span", {
  36. className: mapToCssModules('sr-only', cssModule)
  37. }, children));
  38. };
  39. Spinner.propTypes = propTypes;
  40. Spinner.defaultProps = defaultProps;
  41. export default Spinner;