abstract away status button

This commit is contained in:
Barry Gitarts 2019-10-07 13:54:15 -04:00 committed by Barry G
parent ca670ce6b0
commit 17548006b8
2 changed files with 62 additions and 10 deletions

View File

@ -0,0 +1,55 @@
import React, { Fragment } from 'react'
import { makeStyles } from '@material-ui/styles'
import Button from '@material-ui/core/Button'
import Check from '@material-ui/icons/Check'
import CircularProgress from '@material-ui/core/CircularProgress'
const useStyles = makeStyles(theme => ({
check: {
color: theme.palette.primary[500]
},
formButton: {
gridColumnStart: '1',
gridColumnEnd: '13',
height: '50px',
marginTop: '1.5rem',
borderRadius: '8px',
backgroundColor: theme.palette.primary[500],
color: 'white',
'&:hover': {
backgroundColor: "#34489f",
}
},
disabledButton: {
backgroundColor: 'none'
},
buttonContent: {
display: 'flex',
justifyContent: 'space-evenly',
alignItems: 'center',
width: '50%'
},
progress: {
color: theme.palette.primary[500],
animationDuration: '350ms'
}
}))
function StatusButton(props) {
const { disabled, buttonText, confirmed, loading } = props
const classes = useStyles()
const { check, formButton, disabledButton, buttonContent, progress } = classes
return (
<Fragment>
<Button disabled={disabled} type="submit" variant="contained" className={formButton} classes={{ disabled: disabledButton }}>
<div className={buttonContent}>
{confirmed && <Check className={check} />}
{loading && <CircularProgress className={progress} size={24} disableShrink />}
{buttonText || ''}
</div>
</Button>
</Fragment>
)
}
export default StatusButton

View File

@ -4,13 +4,10 @@ import { makeStyles } from '@material-ui/core/styles'
import classnames from 'classnames' import classnames from 'classnames'
import { useQuery } from '@apollo/react-hooks' import { useQuery } from '@apollo/react-hooks'
import LiquidPledging from '../../embarkArtifacts/contracts/LiquidPledging' import LiquidPledging from '../../embarkArtifacts/contracts/LiquidPledging'
import Button from '@material-ui/core/Button'
import CircularProgress from '@material-ui/core/CircularProgress'
import Typography from '@material-ui/core/Typography' import Typography from '@material-ui/core/Typography'
import { FundingContext } from '../../context' import { FundingContext } from '../../context'
import TextDisplay from '../base/TextDisplay' import TextDisplay from '../base/TextDisplay'
import Icon from '../base/icons/IconByName' import Icon from '../base/icons/IconByName'
import Check from '@material-ui/icons/Check'
import * as Yup from 'yup' import * as Yup from 'yup'
import { convertTokenAmountUsd, formatPercent } from '../../utils/prices' import { convertTokenAmountUsd, formatPercent } from '../../utils/prices'
import { getAmountFromPledgesInfo } from '../../utils/pledges' import { getAmountFromPledgesInfo } from '../../utils/pledges'
@ -26,6 +23,7 @@ import styles from './styles/FundProject'
import Loading from '../base/Loading' import Loading from '../base/Loading'
import BreadCrumb from '../base/BreadCrumb' import BreadCrumb from '../base/BreadCrumb'
import FundStepper from './FundStepper' import FundStepper from './FundStepper'
import StatusButton from '../base/Button'
import { errorStrings } from '../../constants/errors' import { errorStrings } from '../../constants/errors'
const { REQUIRED, NOT_NUMBER } = errorStrings const { REQUIRED, NOT_NUMBER } = errorStrings
@ -246,13 +244,12 @@ const SubmissionSection = ({ classes, projectData, projectId, profileData, start
/> />
<div className={classes.amountText}>{getTokenLabel(manifest.goalToken)}</div> <div className={classes.amountText}>{getTokenLabel(manifest.goalToken)}</div>
</div>} </div>}
<Button disabled={disableButton} type="submit" variant="contained" className={classnames(classes.formButton)} classes={{ disabled: classes.disabledButton }}> <StatusButton
<div className={classes.buttonContent}> disabled={disableButton}
{activeStep === IS_CONFIRMED && <Check className={classes.check} />} buttonText={buttonText[activeStep]}
{showSpinner && <CircularProgress className={classes.progress} size={24} disableShrink />} confirmed={activeStep === IS_CONFIRMED}
{buttonText[activeStep]} loading={showSpinner}
</div> />
</Button>
<FundStepper steps={STEPS} activeStep={activeStep} /> <FundStepper steps={STEPS} activeStep={activeStep} />
</div>} </div>}
</form> </form>