basis-stack/basis

View on GitHub
src/client/modules/shell/components/settingsPanel.jsx

Summary

Maintainability
A
0 mins
Test Coverage
import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import MuiButton from '@material-ui/core/Button';
import MuiTypography from '@material-ui/core/Typography';
import MuiDivider from '@material-ui/core/Divider';

const styles = ({ spacing }) => {

  const padding = spacing(2);

  return {
    root: {
      width: 300,
      display: 'flex',
      flexDirection: 'column'
    },
    title: { padding },
    content: {
      padding,
      flexGrow: 2
    },
    buttons: {
      padding,
      display: 'flex',
      flexDirection: 'row',
      justifyContent: 'flex-end',
      '& button': {
        marginLeft: spacing()
      }
    }
  };
};

const SettingsPanel = ({ classes, onCancel, onSave }) => (

  <div className={classes.root}>
    <MuiTypography variant="h6" component="h2" className={classes.title}>
      Settings
    </MuiTypography>
    <MuiDivider />
    <MuiTypography variant="body2" className={classes.content}>
      This is a sample slideout panel (Drawer) that shows how it can be controlled via Redux
    </MuiTypography>
    <div className={classes.buttons}>
      <MuiButton color="primary" onClick={onCancel}>
        CANCEL
      </MuiButton>
      <MuiButton variant="contained" color="primary" autoFocus onClick={() => onSave({ settingsData: {} })}>
        OK
      </MuiButton>
    </div>
  </div>
);

SettingsPanel.propTypes = {
  onCancel: PropTypes.func.isRequired,
  onSave: PropTypes.func.isRequired
};

export default withStyles(styles)(SettingsPanel);