All files / src/Breadcrumbs Breadcrumbs.js

42.86% Statements 3/7
0% Branches 0/3
0% Functions 0/3
50% Lines 3/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67                    12x                               12x                                                       12x                        
import React from 'react';
import PropTypes from 'prop-types';
import * as R from 'ramda';
import { makeStyles } from '@material-ui/core/styles';
import Breadcrumbs from '@material-ui/core/Breadcrumbs';
import Typography from '@material-ui/core/Typography';
import NavigateNextIcon from '@material-ui/icons/NavigateNext';
import NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';
import cx from 'classnames';
 
const useStyles = makeStyles(theme => ({
  action: {
    cursor: 'pointer',
    '&:hover': {
      color: theme.palette.primary.main,
    },
  },
  disabled: {
    cursor: 'not-allowed',
    color: theme.palette.text.disabled,
    '&:hover': {
      color: theme.palette.text.disabled,
    },
  },
}));
 
const CustomBreadcrumbs = ({ items = [], isRtl }) => {
  const classes = useStyles();
 
  return (
    <Breadcrumbs
      separator={
        isRtl ? <NavigateBeforeIcon fontSize="small" /> : <NavigateNextIcon fontSize="small" />
      }
      aria-label="breadcrumb"
    >
      {R.addIndex(R.map)(({ text, action, isDisabled }, index) => (
        <Typography
          key={`${text}-${index}`}
          color="textPrimary"
          onClick={action}
          variant="subtitle1"
          className={cx({
            [classes.action]: R.is(Function)(action),
            [classes.disabled]: isDisabled,
          })}
        >
          {text}
        </Typography>
      ))(items)}
    </Breadcrumbs>
  );
};
 
CustomBreadcrumbs.propTypes = {
  items: PropTypes.arrayOf(
    PropTypes.shape({
      text: PropTypes.string.isRequired,
      action: PropTypes.func,
      isDisabled: PropTypes.bool,
    }),
  ),
  isRtl: PropTypes.bool,
};
 
export default CustomBreadcrumbs;