import React from 'react';
import { makeStyles } from '@material-ui/core/styles';
import Modal from '@material-ui/core/Modal';
import PokemonList from './pokemon-list';
import WantGroup from './want-group';

function getModalStyle() {
  const top = 50;
  const left = 50;

  return {
    top: `${top}%`,
    left: `${left}%`,
    transform: `translate(-${top}%, -${left}%)`,
  };
}

const useStyles = makeStyles(theme => ({
  paper: {
    position: 'absolute',
    width: '80%',
    height: '90%',
    backgroundColor: theme.palette.background.paper,
    border: '2px solid #000',
    boxShadow: theme.shadows[5],
    padding: theme.spacing(2, 4, 3),
    overflow: 'scroll',
  },
}));

export default function ConnectModal(props) {
  const classes = useStyles();
  // getModalStyle is not a pure function, we roll the style only on the first render
  const [modalStyle] = React.useState(getModalStyle);

  const {
    pokemonWantList, onDeselectPokemon, open, handleLinkWantAndNeed, linked, selectedId,
  } = props;

  const body = (
    <div style={modalStyle} className={classes.paper}>
      {
        pokemonWantList.map(wantGroup => (
          <WantGroup
            handleLinkWantAndNeed={handleLinkWantAndNeed}
            pokemonList={wantGroup.pokemons}
            groupId={wantGroup.id}
            groupName={wantGroup.group_name}
            linked={linked}
            selectedId={selectedId}
            connect
          />
        ))
      }
    </div>
  );

  return (
    <div>
      <Modal
        open={open}
        onClose={onDeselectPokemon}
        aria-labelledby="simple-modal-title"
        aria-describedby="simple-modal-description"
      >
        {body}
      </Modal>
    </div>
  );
}
