import React, { useState } from 'react' import PropTypes from 'prop-types' import IconButton from '@material-ui/core/IconButton' import Menu from '@material-ui/core/Menu' import MenuItem from '@material-ui/core/MenuItem' import { makeStyles, Typography } from '@material-ui/core' import MoreVertIcon from '@material-ui/icons/MoreVert' import Checkbox from '@material-ui/core/Checkbox' import { useDispatch, useSelector } from 'react-redux' import { useTranslate } from 'react-admin' import { setToggleableFields } from '../actions' const useStyles = makeStyles({ menuIcon: { position: 'relative', top: '-0.5em', }, menu: { width: '24ch', }, columns: { maxHeight: '21rem', overflow: 'auto', }, title: { margin: '1rem', }, }) export const ToggleFieldsMenu = ({ resource, topbarComponent: TopBarComponent, hideColumns, }) => { const [anchorEl, setAnchorEl] = useState(null) const dispatch = useDispatch() const translate = useTranslate() const toggleableColumns = useSelector( (state) => state.settings.toggleableFields[resource], ) const omittedColumns = useSelector((state) => state.settings.omittedFields[resource]) || [] const classes = useStyles() const open = Boolean(anchorEl) const handleOpen = (event) => { setAnchorEl(event.currentTarget) } const handleClose = () => { setAnchorEl(null) } const handleClick = (selectedColumn) => { dispatch( setToggleableFields({ [resource]: { ...toggleableColumns, [selectedColumn]: !toggleableColumns[selectedColumn], }, }), ) } return (