TableSwitch.tsx 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { Theme } from '@mui/material';
  2. import { FC, useState } from 'react';
  3. import Icons from '../icons/Icons';
  4. import { TableSwitchType } from './Types';
  5. import { makeStyles } from '@mui/styles';
  6. const useStyles = makeStyles((theme: Theme) => ({
  7. root: {
  8. display: 'flex',
  9. },
  10. line: {
  11. display: 'inline-block',
  12. margin: theme.spacing(0, 1),
  13. border: '1px solid rgba(0, 0, 0, 0.15)',
  14. },
  15. btn: {
  16. cursor: 'pointer',
  17. color: 'rgba(0, 0, 0, 0.15)',
  18. },
  19. active: {
  20. color: 'rgba(0, 0, 0, 0.6) ',
  21. },
  22. }));
  23. const TableSwitch: FC<TableSwitchType> = props => {
  24. const { defaultActive = 'list', onListClick, onAppClick } = props;
  25. const [active, setActive] = useState(defaultActive);
  26. const classes = useStyles();
  27. const IconList = Icons.list;
  28. const IconApp = Icons.app;
  29. const handleListClick = () => {
  30. setActive('list');
  31. onListClick();
  32. };
  33. const handleAppClick = () => {
  34. setActive('app');
  35. onAppClick();
  36. };
  37. return (
  38. <div className={classes.root}>
  39. <IconList
  40. className={`${classes.btn} ${active === 'list' ? classes.active : ''}`}
  41. role="button"
  42. onClick={handleListClick}
  43. />
  44. <span className={classes.line}></span>
  45. <IconApp
  46. className={`${classes.btn} ${active === 'app' ? classes.active : ''}`}
  47. onClick={handleAppClick}
  48. />
  49. </div>
  50. );
  51. };
  52. export default TableSwitch;