/* eslint-disable filenames/match-regex */ import CloseIcon from '@mui/icons-material/Close'; import { Box, Fab, Fade, List, ListItem, Popover, Theme, useMediaQuery } from '@mui/material'; import * as React from 'react'; import { Button, useListContext } from 'react-admin'; const noSpaceOutside = { p: 0, m: 0 }; const moreSpaceInside = { p: 2, m: 0, borderRadius: 0, width: '100%' }; function BulkFloatingActionsToolbar(props: BulkFloatingActionsToolbarProps): JSX.Element { const { children } = props; const [anchorEl, setAnchorEl] = React.useState(null); function handleClick(event: React.MouseEvent) { setAnchorEl(event.currentTarget); } function handleClose() { setAnchorEl(null); } const isSmall = useMediaQuery((theme: Theme) => theme.breakpoints.down('md')); const { filterValues, resource, selectedIds = [], onUnselectItems } = useListContext(props); const open = Boolean(anchorEl) && selectedIds !== undefined && selectedIds.length > 0; const id = open ? 'simple-popover' : undefined; const handleUnselectAllClick = React.useCallback(() => { onUnselectItems(); setAnchorEl(null); }, [onUnselectItems, setAnchorEl]); return ( 0}> {selectedIds?.length} {React.Children.map(children, (child) => ( {React.isValidElement(child) ? React.cloneElement(child, { filterValues, resource, selectedIds, sx: moreSpaceInside, ...(child.props?.popover ? { closePopover: handleClose } : {}) }) : null} ))} ); } interface BulkFloatingActionsToolbarProps { children?: React.ReactNode | React.ReactNode[]; } export { BulkFloatingActionsToolbar }; export type { BulkFloatingActionsToolbarProps };