StatusIcon.tsx 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { CircularProgress, makeStyles, Theme } from '@material-ui/core';
  2. import { FC, ReactElement } from 'react';
  3. import { ChildrenStatusType, StatusIconType } from './Types';
  4. const useStyles = makeStyles((theme: Theme) => ({
  5. wrapper: {
  6. display: 'flex',
  7. justifyContent: 'flex-left',
  8. alignItems: 'center',
  9. paddingLeft: theme.spacing(1),
  10. },
  11. svg: {
  12. color: theme.palette.primary.main,
  13. },
  14. }));
  15. const StatusIcon: FC<StatusIconType> = props => {
  16. const classes = useStyles();
  17. const { type, className = '', size = 20 } = props;
  18. const getElement = (type: ChildrenStatusType): ReactElement => {
  19. switch (type) {
  20. case 'creating':
  21. return (
  22. <CircularProgress
  23. size={size}
  24. thickness={8}
  25. classes={{ svg: classes.svg }}
  26. />
  27. );
  28. case 'finish':
  29. return <></>;
  30. default:
  31. return <></>;
  32. }
  33. };
  34. return (
  35. <div className={`${classes.wrapper} ${className}`}>{getElement(type)}</div>
  36. );
  37. };
  38. export default StatusIcon;