InnerBoxSelection.jsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import React from 'react';
  2. import { faCheckCircle, faCircle } from '@fortawesome/free-solid-svg-icons';
  3. import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
  4. import { bool, func } from "prop-types";
  5. import { makeStyles } from "@material-ui/styles";
  6. const useStyles = makeStyles((theme) => ({
  7. boxCloseX: props => ({
  8. position: 'absolute',
  9. left: '0',
  10. top: '0',
  11. transform: 'translate(25%, 25%)',
  12. borderRadius: '100%',
  13. border: '1px solid ' + theme.palette.primary.main,
  14. color: theme.palette.primary.main,
  15. padding: 0,
  16. background: 'transparent',
  17. opacity: props.selected ? '100%' : '50%',
  18. '&:hover': {
  19. color: theme.palette.primary.main,
  20. cursor: 'pointer',
  21. boxShadow: '0 0 0.5rem ' + theme.myColors.white,
  22. },
  23. }),
  24. closeXIcon: {
  25. fontSize: '1.5rem',
  26. lineHeight: '1.5rem',
  27. },
  28. greenBackground: {
  29. color: theme.palette.primary.main,
  30. },
  31. white: {
  32. color: theme.myColors.white,
  33. }
  34. }));
  35. /** Button that is a checkmark within a green circle that turns opaque on hovering, located within the top left corner of parent */
  36. function InnerBoxSelection(props) {
  37. const classes = useStyles(props);
  38. const { onClick } = props;
  39. return (
  40. <button type="button" className={classes.boxCloseX} onClick={onClick}>
  41. <span className={`${classes.closeXIcon} fa-layers`}>
  42. <FontAwesomeIcon icon={faCircle} className={classes.white} />
  43. <FontAwesomeIcon icon={faCheckCircle} className={classes.greenBackground} transform="shrink--2" />
  44. </span>
  45. </button>
  46. );
  47. }
  48. InnerBoxSelection.propTypes = {
  49. onClick: func.isRequired,
  50. selected: bool,
  51. };
  52. InnerBoxSelection.defaultProps = {
  53. selected: false,
  54. };
  55. export default InnerBoxSelection;