UNPKG

materialuiupgraded

Version:

Material-UI's workspace package

121 lines (111 loc) 3.57 kB
import React from 'react'; import PropTypes from 'prop-types'; import { withStyles } from '@material-ui/core/styles'; import MobileStepper from '@material-ui/core/MobileStepper'; import Paper from '@material-ui/core/Paper'; import Typography from '@material-ui/core/Typography'; import Button from '@material-ui/core/Button'; import KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft'; import KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight'; const tutorialSteps = [ { label: 'San Francisco – Oakland Bay Bridge, United States', imgPath: 'https://images.unsplash.com/photo-1537944434965-cf4679d1a598?auto=format&fit=crop&w=400&h=250&q=60', }, { label: 'Bird', imgPath: 'https://images.unsplash.com/photo-1538032746644-0212e812a9e7?auto=format&fit=crop&w=400&h=250&q=60', }, { label: 'Bali, Indonesia', imgPath: 'https://images.unsplash.com/photo-1537996194471-e657df975ab4?auto=format&fit=crop&w=400&h=250&q=80', }, { label: 'NeONBRAND Digital Marketing, Las Vegas, United States', imgPath: 'https://images.unsplash.com/photo-1518732714860-b62714ce0c59?auto=format&fit=crop&w=400&h=250&q=60', }, { label: 'Goč, Serbia', imgPath: 'https://images.unsplash.com/photo-1512341689857-198e7e2f3ca8?auto=format&fit=crop&w=400&h=250&q=60', }, ]; const styles = theme => ({ root: { maxWidth: 400, flexGrow: 1, }, header: { display: 'flex', alignItems: 'center', height: 50, paddingLeft: theme.spacing.unit * 4, backgroundColor: theme.palette.background.default, }, img: { height: 255, maxWidth: 400, overflow: 'hidden', display: 'block', width: '100%', }, }); class TextMobileStepper extends React.Component { state = { activeStep: 0, }; handleNext = () => { this.setState(prevState => ({ activeStep: prevState.activeStep + 1, })); }; handleBack = () => { this.setState(prevState => ({ activeStep: prevState.activeStep - 1, })); }; render() { const { classes, theme } = this.props; const { activeStep } = this.state; const maxSteps = tutorialSteps.length; return ( <div className={classes.root}> <Paper square elevation={0} className={classes.header}> <Typography>{tutorialSteps[activeStep].label}</Typography> </Paper> <img className={classes.img} src={tutorialSteps[activeStep].imgPath} alt={tutorialSteps[activeStep].label} /> <MobileStepper steps={maxSteps} position="static" activeStep={activeStep} className={classes.mobileStepper} nextButton={ <Button size="small" onClick={this.handleNext} disabled={activeStep === maxSteps - 1}> Next {theme.direction === 'rtl' ? <KeyboardArrowLeft /> : <KeyboardArrowRight />} </Button> } backButton={ <Button size="small" onClick={this.handleBack} disabled={activeStep === 0}> {theme.direction === 'rtl' ? <KeyboardArrowRight /> : <KeyboardArrowLeft />} Back </Button> } /> </div> ); } } TextMobileStepper.propTypes = { classes: PropTypes.object.isRequired, theme: PropTypes.object.isRequired, }; export default withStyles(styles, { withTheme: true })(TextMobileStepper);