Skip to content
This repository was archived by the owner on May 19, 2023. It is now read-only.

Commit 0431e6d

Browse files
committed
feat: adds spinner component extracted from HOC
1 parent 19a6f80 commit 0431e6d

File tree

3 files changed

+47
-24
lines changed

3 files changed

+47
-24
lines changed

src/components/atoms/Spinner.tsx

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { makeStyles } from '@material-ui/core/styles'
2+
import React, { FC } from 'react'
3+
import { logoBlueIcon } from '../../assets/images'
4+
5+
export type SpinnerProps = {
6+
className?: string
7+
}
8+
9+
const useStyles = makeStyles(() => ({
10+
'@keyframes spin': {
11+
'0%': { transform: 'rotate(0deg)' },
12+
'100%': { transform: 'rotate(360deg)' },
13+
},
14+
overlay: {
15+
zIndex: 2,
16+
height: '100%',
17+
width: '100%',
18+
display: 'flex',
19+
justifyContent: 'center',
20+
alignItems: 'center',
21+
background: '#FFFFFF55',
22+
},
23+
spinner: {
24+
display: 'inline-block',
25+
zIndex: 3,
26+
width: '50px',
27+
height: '50px',
28+
border: 'none',
29+
animation: '$spin 2s ease-in-out infinite',
30+
},
31+
}))
32+
33+
const Spinner: FC<SpinnerProps> = ({ className = '' }) => {
34+
const classes = useStyles()
35+
return (
36+
<div className={`${classes.overlay} ${className}`}>
37+
<img className={classes.spinner} src={logoBlueIcon} alt="logo" />
38+
</div>
39+
)
40+
}
41+
42+
export default Spinner

src/components/atoms/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import Logo from './Logo'
55
import LogoNavbar from './LogoNavbar'
66
import StyledNavTab from './StyledNavTab'
77
import NetworkIndicator from './NetworkIndicator'
8+
import Spinner from './Spinner'
89

910
export * from './modal'
1011

@@ -16,4 +17,5 @@ export {
1617
LogoNavbar,
1718
StyledNavTab,
1819
NetworkIndicator,
20+
Spinner,
1921
}

src/components/hoc/WithSpinner.tsx

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,13 @@
11
import React from 'react'
22
import { makeStyles } from '@material-ui/core/styles'
3-
import { logoBlueIcon } from '../../assets/images'
3+
import RIFSpinner from '../atoms/Spinner'
44

55
const useStyles = makeStyles(() => ({
6-
'@keyframes spin': {
7-
'0%': { transform: 'rotate(0deg)' },
8-
'100%': { transform: 'rotate(360deg)' },
9-
},
106
root: {
117
position: 'relative',
128
},
13-
overlay: {
9+
spinnerWrapper: {
1410
position: 'absolute',
15-
zIndex: 2,
16-
height: '100%',
17-
width: '100%',
18-
display: 'flex',
19-
justifyContent: 'center',
20-
alignItems: 'center',
21-
background: '#FFFFFF55',
22-
},
23-
spinner: {
24-
display: 'inline-block',
25-
zIndex: 3,
26-
width: '50px',
27-
height: '50px',
28-
border: 'none',
29-
animation: '$spin 2s ease-in-out infinite',
3011
},
3112
}))
3213

@@ -39,9 +20,7 @@ const WithSpinner = (WrappedComponent: React.ElementType) => {
3920
{
4021
isLoading
4122
&& (
42-
<div className={classes.overlay}>
43-
<img className={classes.spinner} src={logoBlueIcon} alt="logo" />
44-
</div>
23+
<RIFSpinner className={classes.spinnerWrapper} />
4524
)
4625
}
4726
<WrappedComponent {...props} />

0 commit comments

Comments
 (0)