MatchResultBasicItem.jsx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // styling
  2. import styled from 'styled-components/macro';
  3. import theme from 'styled-theming';
  4. // components
  5. import MatchScoreItem from '@components/MatchScoreItem';
  6. import Accordion from '@mui/material/Accordion';
  7. import AccordionSummary from '@mui/material/AccordionSummary';
  8. import AccordionDetails from '@mui/material/AccordionDetails';
  9. import Spring from '@components/Spring';
  10. // hooks
  11. import {useState} from 'react';
  12. // assets
  13. import preview from '@assets/preview.webp';
  14. const StyledAccordion = styled(Accordion)`
  15. background: ${theme('theme', {
  16. light: 'var(--widget) !important',
  17. dark: 'var(--border) !important'
  18. })};
  19. box-shadow: 0 1px 8px rgba(110, 110, 110, 0.1) !important;
  20. border-radius: 4px !important;
  21. margin: 0 !important;
  22. `;
  23. const StyledAccordionSummary = styled(AccordionSummary)`
  24. padding: 0 !important;
  25. .MuiAccordionSummary-content {
  26. margin: 0 !important;
  27. }
  28. `;
  29. const StyledAccordionDetails = styled(AccordionDetails)`
  30. padding: 0 !important;
  31. aspect-ratio: 334 / 210;
  32. overflow: hidden;
  33. border-radius: 4px;
  34. `;
  35. const MatchResultBasicItem = ({data, index}) => {
  36. const [expanded, setExpanded] = useState(undefined);
  37. // manually handle accordion expansion
  38. const handleChange = (panel) => (event, isExpanded) => {
  39. setExpanded(isExpanded ? panel : false);
  40. }
  41. return (
  42. <Spring type="slideUp" index={index}>
  43. <StyledAccordion expanded={expanded === index} onChange={handleChange(index)}>
  44. <StyledAccordionSummary>
  45. <div className="d-flex align-items-center flex-1 g-20 card-padded">
  46. <div className="h3">
  47. {data.currentMinute}'
  48. </div>
  49. <div className="flex-1">
  50. <MatchScoreItem match={data}/>
  51. </div>
  52. </div>
  53. </StyledAccordionSummary>
  54. <StyledAccordionDetails>
  55. <img src={preview} alt="preview"/>
  56. </StyledAccordionDetails>
  57. </StyledAccordion>
  58. </Spring>
  59. )
  60. }
  61. export default MatchResultBasicItem