Alina Lozowski
Migrating to the React project
e7abd9e
import React from "react";
import { Box, Tooltip, Portal, Backdrop } from "@mui/material";
import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined";
const InfoIconWithTooltip = ({ tooltip, iconProps = {}, sx = {} }) => {
const [open, setOpen] = React.useState(false);
return (
<>
<Tooltip
title={tooltip}
arrow
placement="top"
open={open}
onOpen={() => setOpen(true)}
onClose={() => setOpen(false)}
componentsProps={{
tooltip: {
sx: {
bgcolor: "rgba(33, 33, 33, 0.95)",
padding: "12px 16px",
maxWidth: "none !important",
width: "auto",
minWidth: "200px",
fontSize: "0.875rem",
lineHeight: 1.5,
position: "relative",
zIndex: 1501,
"& .MuiTooltip-arrow": {
color: "rgba(33, 33, 33, 0.95)",
},
},
},
popper: {
sx: {
zIndex: 1501,
maxWidth: "min(600px, 90vw) !important",
'&[data-popper-placement*="bottom"] .MuiTooltip-tooltip': {
marginTop: "10px",
},
'&[data-popper-placement*="top"] .MuiTooltip-tooltip': {
marginBottom: "10px",
},
},
},
}}
>
<Box
component="span"
sx={{
opacity: 0.5,
display: "flex",
alignItems: "center",
cursor: "help",
"&:hover": { opacity: 0.8 },
position: "relative",
zIndex: open ? 1502 : "auto",
...sx,
}}
>
<InfoOutlinedIcon
sx={{
fontSize: "1rem",
...iconProps.sx,
}}
{...iconProps}
/>
</Box>
</Tooltip>
{open && (
<Portal>
<Backdrop
open={true}
sx={{
zIndex: 1500,
backgroundColor: "rgba(0, 0, 0, 0.5)",
transition: "opacity 0.2s ease",
pointerEvents: "none",
}}
/>
</Portal>
)}
</>
);
};
export default InfoIconWithTooltip;