frontPanel/src/ui_kit/InfoPopover.tsx

59 lines
1.5 KiB
TypeScript

import { useState, MouseEvent, ReactNode } from "react";
import Info from "@icons/Info";
import { Paper, Popover, SxProps, Typography } from "@mui/material";
export const InfoPopover = ({
blink = false,
sx,
children = "подсказка"
}: {
blink?: boolean,
sx?: SxProps,
children?: ReactNode
}) => {
const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);
const handleClick = (event: MouseEvent<HTMLButtonElement>) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
const open = Boolean(anchorEl);
const id = open ? "simple-popover" : undefined;
return (
<>
<Info
className={blink ? "blink" : ""}
onClick={handleClick}
sx={{p:0, height: "20px", ...sx}}
/>
<Popover
id={id}
open={open}
anchorEl={anchorEl}
onClose={handleClose}
anchorOrigin={{
vertical: "bottom",
horizontal: "left",
}}
>
<Paper
sx={{
p: "20px",
display: "flex",
justifyContent: "center",
alignItems: "center",
flexDirection: "column",
}}
>
{children}
</Paper>
</Popover>
</>
);
};